小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
在rviz2中显示多个机器人
-
平台:Ubuntu22.04,ros2:humble
问题:在学习完小鱼的“动手学ros2”建模仿真篇后,我学会了如何运用launch将单个机器人添加Gazebo中和利用rqt添加多个机器人到gazebo。
现在我想利用一个launch将多个机器人模型展示在gazebo中,并且在rviz2中显示多个机器人。目前,在gazebo中可以显示多个机器人,但是rviz2中,只能显示一个机器人模型,且模型来回跳动,如图:
launch文件如下:
import os
from launch import LaunchDescription
from launch.actions import ExecuteProcess
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageSharedef generate_launch_description():
name1 = 'fishbot1'
name2 = 'fishbot2'
package_name = 'fishbot_description'
urdf_name = "fishbot_gazebo.urdf"ld = LaunchDescription() pkg_share = FindPackageShare(package=package_name).find(package_name) urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}') gazebo_world_path = os.path.join(pkg_share, 'world/fishbot.world') # Start Gazebo server start_gazebo_cmd = ExecuteProcess( cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so',gazebo_world_path], output='screen') # Launch the robot1 spawn_entity_cmd1 = Node( package='gazebo_ros', executable='spawn_entity.py', # namespace='robot1', arguments=[ '-entity', name1, '-file', urdf_model_path, '-robot_namespace', name1, ], output='screen' ) # Start Robot1 State publisher start_robot_state_publisher_cmd1 = Node( package='robot_state_publisher', executable='robot_state_publisher', namespace=name1, arguments=[urdf_model_path] ) # Launch the robot2 spawn_entity_cmd2 = Node( package='gazebo_ros', executable='spawn_entity.py', # namespace='robot2', arguments=[ '-entity', name2, '-file', urdf_model_path, '-robot_namespace', name2, '-x', '0.5' ], output='screen' ) # Start Robot2 State publisher start_robot_state_publisher_cmd2 = Node( package='robot_state_publisher', executable='robot_state_publisher', namespace=name2, arguments=[urdf_model_path] ) # Launch RViz start_rviz_cmd = Node( package='rviz2', executable='rviz2', name='rviz2', output='screen', # arguments=['-d', default_rviz_config_path] ) ld.add_action(start_gazebo_cmd) ld.add_action(spawn_entity_cmd1) ld.add_action(spawn_entity_cmd2) ld.add_action(start_robot_state_publisher_cmd1) ld.add_action(start_robot_state_publisher_cmd2) ld.add_action(start_rviz_cmd) return ld
-
@1654939697 两个机器人没有使用明明空间可能
-
@小鱼 怎么样去添加命名空间,我看他这个好像有用啊,是不是用的不对。
-
@2918095496 ros2 topic list 看一下 和 TF 也看一下
-
我解决了,我是加了命名空间,而且修改了urdf、xacro模型文件里关节和连杆的名称,比如link1改成robot1_link1。我猜你和我一样,都是从网上下载了不同模型的xacro或者urdf文件,这些文件里都是采用了link1、joint1之类的命名,所以运行rviz2时,系统分不清那个是link1,2,3.。。,存在命名冲突,所以会一闪一闪
-
@2660767689 那如果要运行很多台机器呢,怎么办,一个一个加吗
-
@2660767689 能看一下在哪里添加了命名空间么