注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
LitchiCheng的个人空间 https://home.eeworld.com.cn/space-uid-1003127.html [收藏] [复制] [分享] [RSS]
日志

ROS2导入机械臂URDF竟有这些坑?SO-ARM100 Rivz可视化避坑指南

已有 51 次阅读2025-3-11 22:40 |个人分类:ROS2

 

 

视频讲解


 

导入过程有两个坑,如下过程中进行解决

先下载urdf文件

javascript:;

git clone git@github.com:TheRobotStudio/SO-ARM100.git

如下,包括urdf及meshes文件

 

 

结合《想知道两轮差速方形底盘 URDF 咋做,ROS2 配 Rviz 咋显示吗?看这里!》中介绍的如何使用在Rviz中显示urdf的Package,我们新建一个Package,命名为display_so_arm100_rviz,需要将如上meshes和urdf文件夹复制到display_so_arm100_rviz下

 

 

这里有一个坑,需要注意,就是urdf文件中的package名字需要修改下,参考如下

修改 urdf/SO_7DOF_ARM100_08h_HL_01d_URDF_01.SLDASM.urdf 文件中所有关于package的名称改成 display_so_arm100_rviz

 

 

修改CMakeLists.txt文件,增加如下

install(DIRECTORY launch meshes urdf
  DESTINATION share/${PROJECT_NAME})

launch脚本修改如下

import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node
from launch import LaunchDescription
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare

def generate_launch_description():
    package_name = 'display_so_arm100_rviz'
    urdf_name = "SO_7DOF_ARM100_08h_HL_01d_URDF_01.SLDASM.urdf"
    pkg_share = FindPackageShare(package=package_name).find(package_name) 
    urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}')
    urdf_file_path = urdf_model_path
    with open(urdf_file_path, 'r') as file:
        robot_description = file.read()

    return LaunchDescription([
        Node(
            package='joint_state_publisher_gui',
            executable='joint_state_publisher_gui',
            name='joint_state_publisher_gui',
            parameters=[{'robot_description': robot_description}]
        ),
        Node(
            package='robot_state_publisher',
            executable='robot_state_publisher',
            name='robot_state_publisher',
            parameters=[{'robot_description': robot_description}]
        ),
        Node(
            package='rviz2',
            executable='rviz2',
            name='rviz2'
        )
    ])

编译,运行

colcon build --packages-select display_so_arm100_rviz
source install/setup.bash 
ros2 launch display_so_arm100_rviz display_urdf.py

 

 

坑2,将坐标系选成Base后,发现坐标系是倒置的,先不管发布的消息如何,将他倒过来,只需要发布一个静态TF关系,如下

ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 3.14159 Base rotated_frame

再将参考坐标系宣称rotated_frame,可以看到正过来了

 

 

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章