rviz2 仿真控制器与真实机器人切换

在 MoveIt Config 包中,切换 RViz 纯仿真 与 真实机器人 / Gazebo 仿真 主要通过 控制器配置 YAML 文件 和 启动参数 共同控制。核心配置文件位于 config/ 目录下moveit.github.io。

一、核心控制器 YAML 文件

  • fake_controllers.yaml

    • 用途 :纯 RViz 仿真(无实体、无 Gazebo)

    • 机制 :使用 FakeControllerManager,轨迹仅在 RViz 中模拟执行moveit.github.io。

    • 典型内容 :

      yaml

      复制代码
      controller_list:
        - name: fake_arm_controller
          type: FollowJointTrajectory
          joints:
            - joint1
            - joint2
            - ...
  • controllers.yaml (或 ros_controllers.yaml)

    • 用途 :真实机器人 或 Gazebo 仿真

    • 机制 :使用 SimpleControllerManager 或 ROSControlControllerManager,连接真实硬件或 Gazebo 的 ros_control 接口moveit.github.io。

    • 典型内容 :

      yaml

      复制代码
      controller_list:
        - name: arm_controller
          action_ns: follow_joint_trajectory
          type: FollowJointTrajectory
          default: True
          joints:
            - joint1
            - joint2
            - ...

二、如何切换(通过 Launch 文件)

切换并非直接修改 YAML,而是在 启动命令 或 Launch 文件 中选择加载哪个 YAML,并指定 ControllerManager。

1. 启动 RViz 纯仿真(默认)

bash

运行

复制代码
roslaunch <robot>_moveit_config demo.launch
  • 内部默认:
    • moveit_controller_manager:=fake
    • 加载 fake_controllers.yaml
2. 启动真实机器人 / Gazebo

bash

运行

复制代码
roslaunch <robot>_moveit_config demo.launch moveit_controller_manager:=simple use_sim_time:=false
  • 关键参数:
    • moveit_controller_manager:=simple:加载真实控制器
    • use_sim_time:=false:使用系统真实时间
    • 内部自动加载 controllers.yaml

三、Launch 文件内部原理(关键片段)

在 move_group.launch 或 trajectory_execution.launch 中:

xml

复制代码
<!-- 选择控制器管理器 -->
<arg name="moveit_controller_manager" default="fake" />

<!-- 加载对应 YAML -->
<rosparam file="$(find myrobot_moveit_config)/config/fake_controllers.yaml" if="$(eval moveit_controller_manager=='fake')" />
<rosparam file="$(find myrobot_moveit_config)/config/controllers.yaml" unless="$(eval moveit_controller_manager=='fake')" />

四、总结

  • RViz 仿真 :使用 fake_controllers.yaml + moveit_controller_manager:=fake
  • 真实机器人 / Gazebo :使用 controllers.yaml + moveit_controller_manager:=simple
相关推荐
剑雨巍巍13 分钟前
AI Agent面试之基础概念
人工智能
微帧Visionular14 分钟前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康17 分钟前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区25 分钟前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng28 分钟前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人30 分钟前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
lovingsoft32 分钟前
AI 时代未来软件形态趋势:从固定功能应用,走向意图驱动、智能体原生的柔性系统-浅析
人工智能
GlobalInfo34 分钟前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人
海宇服务37 分钟前
零信任架构实战:基于海宇全能小微企业报告构建自动化园区商户免押租赁资信核验网关
大数据·人工智能·架构·自动化
云上先途37 分钟前
生成式答案关键点标注,怎么区分核心有效信息和冗余话术?
人工智能