鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ros2-humble加载多体机器人时遇到的gazebo_ros2_control,namespace加载问题

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2 humble ros2control plugin gazebo multi robots
    1
    1
    39
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 基
      基础拓扑学
      最后由 编辑

      ros2多机contorller namespace挂载错误问题

      背景:
      我在尝试使用fishbot based的机器人仿真框架进行多机navigation实例操作,当我单独加载任意机器人模型时,都能够正常启动,启动部分log如下:
      381f701a-0531-457a-814b-872983c88972-image.png
      从图中可以看出<robot_namespace>_diff_drive_controller和<robot_namespace>_joint_state_broadcaster都已经被正常发布,同时service和topic也都正常启动,机器人可以通过teleop_twist_keyboard命令正常运行。

      问题描述:

      当我在用一个gazebo仿真环境中加载成功第一个机器人后,我希望继续加载第二个机器人,这时,在启动机器人模型的过程中,load controller出现了问题,如下图红框所示:
      ae1c2b98-e96d-431a-b8d8-fedcece530e7-image.png
      我启动了namespace为scout_mini_1_的机器人节点,但是从图中可以看出,gazebo_ros2_control仍然试图从scout_mini_0_的namespace中进行控制器搜索,从而导致无法正确加载控制器配置文件,导致两个控制器服务器都发布失败。
      ###测试与尝试
      我也尝试过使用统一namespace下的controller manager,通过定义不同名称的diff_drive_control来实现控制,但是在launch文件中由于加载机器人节点时也需要明确其namespace,导致controller manager实际上也会与namespace挂钩,从而加载失败,我的机器人加载代码如下:

      scout_mini_node = Node(
             package='gazebo_ros', 
             executable='spawn_entity.py', 
             name=robot_ns,
             namespace=robot_ns,
             arguments=[
                 '-topic', ['/', robot_ns, '/robot_description'],
                 '-entity', [robot_ns, 'robot'],
                 '-robot_namespace', robot_ns, 
                 '-x', init_x, 
                 '-y', init_y,
                 '-Y', init_yaw
             ],
         )
      

      我的gazebo控制插件代码如下:

      <gazebo>
            <plugin filename="libgazebo_ros2_control.so" name="${robot_namespace}gazebo_ros2_control">
              <parameters>$(find scout_mini_description)/config/${robot_namespace}.yaml</parameters>
              <ros>
                <namespace>${robot_namespace}</namespace>
              </ros>
            </plugin>
          </gazebo>
      

      此外,也尝试过手动启动服务,也无法成功运行,但是无论是否正确启动,controller相关的service都能够正常启动。个人推测是gazebo ros2 control插件默认会启动在第一个namespace下,但是不知道如何规避这个问题

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS