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

    关于ros2多机器人仿真的问题

    已定时 已固定 已锁定 已移动
    仿真
    ros2 关于ros2多机器人仿真的问题 gazebo
    4
    4
    742
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 14510241431
      東方
      最后由 编辑

      在学习完小鱼的“动手学ros2”建模仿真篇后,我学会了如何运用launch将单个机器人添加Gazebo中和利用rqt添加多个机器人到gazebo。
      那么,现在我想利用一个launch将多个机器人模型展示在gazebo中,又如何操作呢?我想主要是设置每个机器人初始坐标的问题,那这个怎么在launch实现呢?
      以下是课程文档中添加单个机器人的launch代码:
      import os
      from launch import LaunchDescription
      from launch.actions import ExecuteProcess
      from launch_ros.actions import Node
      from launch_ros.substitutions import FindPackageShare

      def generate_launch_description():
      robot_name_in_model1 = 'fishbot_0'
      robot_name_in_model2 = 'fishbot_1'
      package_name = 'fishbot_description'
      urdf_name = "fishbot_gazebo_1.urdf"

      ld = LaunchDescription()
      pkg_share = FindPackageShare(package=package_name).find(package_name)
      urdf_model_path = os.path.join(pkg_share,f'urdf/{urdf_name}')
      
      
      # Start Gazebo server
      start_gazebo_cmd = ExecuteProcess(
          cmd=['gazebo','--verbose','-s','libgazebo_ros_init.so','-s','libgazebo_ros_factory.so'],
          output='screen')
      
      # Launch the robot
      spawn_entity_cmd1 = Node(
          package='gazebo_ros',
          executable='spawn_entity.py',
          arguments=['-entity',robot_name_in_model1,'-file',urdf_model_path ], output='screen'
          )
      
      spawn_entity_cmd2 = Node(
          package='gazebo_ros',
          executable='spawn_entity.py',
          arguments=['-entity',robot_name_in_model2,'-file',urdf_model_path ], output='screen')
      # Start Robot State publisher
      start_robot_state_publisher_cmd = Node(
          package='robot_state_publisher',
          executable='robot_state_publisher',
          arguments=[urdf_model_path]
      )
      
      # Launch RViz
      start_rviz_cmd = Node(
          package='rviz2',
          executable='rviz2',
          name='rviz2',
          output='screen',
          # arguments=['-d',default_rviz_config_path]
      )
      
      """joint_state_pubilsher_node = Node(
          package='joint_state_publisher_gui',
          executable='joint_state_publisher_gui',
          name='joint_state_publisher_gui',
          arguments=[urdf_model_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_cmd)
      ld.add_action(start_rviz_cmd)
      #ld.add_action(joint_state_pubilsher_node)
      
      return ld
      

      如何设置机器人的初始位置,以及如何使用launch进行多机器人仿真?
      我在古月居查阅到的资料是ros1(https://www.guyuehome.com/4889)的,真的看不懂。

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        要在launch中设置机器人的初始位置,可以使用spawn_entity.py命令。spawn_entity.py命令可以指定机器人的位置、姿态、大小等参数,从而实现机器人的初始位置设置。

        要实现多机器人仿真,可以在launch中添加多个spawn_entity.py命令,分别指定每个机器人的初始位置参数,从而实现多机器人仿真。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 35684851433
          一二一三八
          最后由 编辑

          老哥请问你知道怎么添加多个机器人吗?求告知

          29180954962 1 条回复 最后回复 回复 引用 0
          • 29180954962
            天问 @3568485143
            最后由 编辑

            @3568485143 我也想问一下多机器人,各位老哥解决了吗,能分享一下吗,感谢1

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