当前位置: 首页 > news >正文

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 仿真
    • 机制:使用SimpleControllerManagerROSControlControllerManager,连接真实硬件或 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.launchtrajectory_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
http://www.jsqmd.com/news/625589/

相关文章:

  • KeyboardChatterBlocker:彻底解决机械键盘连击问题的智能解决方案
  • 从初级到高级:程序员如何规划自己的职业成长路径?
  • 保姆级教程:用薛定谔Schrödinger Maestro搞定共价对接,从蛋白配体预处理到实战筛选
  • ORA-01017错误全解析:从Oracle用户创建到权限管理的完整避坑指南
  • FreakStudio琳
  • GPU显存泄漏难定位?用eBPF+Prometheus构建大模型专属可观测栈,10分钟定位OOM根因
  • Blender结合Maps Models Importer插件:一键构建Google地图3D场景实战
  • 技术原型中的对象复制与性能优化
  • FastAPI实战:WebSocket vs Socket.IO,这回真给我整明白了!辰
  • 用Python搞定抖音点赞/收藏的‘bd-ticket-guard-client-data’参数(附完整代码)
  • CPLEX 2210 Linux安装指南:Python 3.7~3.10环境配置详解
  • 避坑指南:Hive统计信息那些容易踩的5个坑(附解决方案)
  • 三步掌握网络资源下载:揭秘res-downloader的智能嗅探技术
  • Vitis AI 实战:从PyTorch模型迁移到DPU部署的全链路解析
  • 如何免费解锁WeMod专业功能:WandEnhancer终极指南
  • 从零实现富文本编辑器#-React可编辑节点的组件预设伺
  • 如何3步搞定暗黑破坏神2存档编辑?d2s-editor新手完全指南
  • 深入理解 AI Agent Harness Engineering 的规划能力:任务分解与执行调度
  • 揭秘MySQL索引分类致
  • claude agent sdk从入门到跑路[一]:你好,AI
  • 用C++搞定流水线作业调度:一个优先队列(priority_queue)的实战案例
  • 深度学习中的正则化艺术:从L1/L2到Dropout的多Loss平衡策略
  • VBA-JSON终极指南:让Excel与现代API数据无缝对接的简单方法
  • Spring Boot 2.2.2 → 2.7 升级全攻略 | 2026 最新实战指南
  • Joern实战:5分钟教你用CPGQL揪出C代码中的危险函数(附完整命令)
  • Betaflight飞控系统深度解析:从传感器融合到飞行控制的全链路技术实现
  • Halcon图像分析小技巧:除了平均亮度,Deviation灰度偏差能告诉你什么?
  • Keploy实战:从零构建API自动化测试与Mock服务的全流程指南
  • YOLO12镜像问题解决:服务异常重启、参数调整技巧
  • 食品设备联轴器润滑油脂选择指南