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

ROS2 robot控制学习(一)

controller_position.yaml使用说明

  • ROS 2 的 controller_manager 用途
    • 典型工作流程示例
    • 关键服务与话题
    • 扩展功能
  • JointTrajectoryController 参数详解
    • 基本参数
    • 轨迹参数
    • 插值参数
    • 前馈控制
    • 代码示例
    • 动态参数
    • 调试参数
  • ForwardCommandController 概述
      • 参数解释
        • `joints`
        • `interface`
        • `allow_nonzero_velocity_at_startup`
        • `state_publish_rate`
        • `command_joint_topic`
        • `use_node_name_as_namespace`
      • 配置示例
      • 使用流程
      • 注意事项
  • joint_state_broadcaster
      • 启动节点
      • 订阅与发布的Topic
      • 参数配置
      • 与控制器管理器集成
      • 调试与验证
      • 注意事项
      • 示例数据流

ROS 2 的 controller_manager 用途

controller_manager 是 ROS 2 中用于管理和协调机器人控制器的核心组件,主要功能包括动态加载、启动、停止和卸载控制器,以及对控制器生命周期的统一管理。以下是其核心用途:

  1. 动态加载与卸载控制器
    允许在运行时根据需要加载或卸载控制器插件(如 PID 控制器、力控控制器等),无需重启整个系统。控制器以插件形式实现,通过 pluginlib 动态加载。

  2. 生命周期管理
    提供对控制器的启动(start)、停止(stop)、配置(configure)等状态切换功能。控制器需遵循 controller_interface::ControllerInterface 接口规范。

  3. 多控制器协调
    支持同时运行多个控制器,并通过资源管理避免冲突(如同一关节被多个控制器控制)。controller_manager 会检查控制器的硬件资源占用情况。

  4. 硬件接口代理
    作为控制器与硬件抽象层(hardware_interface)之间的桥梁,将控制器的输出传递给硬件,并将硬件状态反馈给控制器。


典型工作流程示例

  1. 加载控制器
    通过服务调用动态加载控制器插件:
ros2 service call /controller_manager/load_controller controller_manager_msgs/srv/LoadController "{name: 'joint_state_controller'}"
  1. 启动控制器
    启动已加载的控制器:
ros2 service call /controller_manager/switch_controller controller_manager_msgs/srv/SwitchController "{start_controllers: ['joint_state_controller'], strictness: 1}"
  1. 配置文件示例
    在 YAML 文件中定义控制器参数:
joint_state_controller:type: joint_state_controller/JointStateControllerpublish_rate: 50

关键服务与话题

  • 服务接口

    • /controller_manager/load_controller
    • /controller_manager/switch_controller
    • /controller_manager/unload_controller
  • 状态反馈
    通过 /controller_manager/list_controllers 服务可查询当前运行的控制器列表及其状态。


扩展功能

  1. 实时性支持
    rclcpp_lifecycle 结合,支持实时控制循环的优先级配置。

  2. ROS 2 Control 集成
    ros2_control 框架中,controller_manager 是核心节点,负责将控制器与 RobotHardware 连接。

  3. 参数动态重配置
    支持通过 rclcpp::Parameter 在运行时调整控制器参数。

JointTrajectoryController 参数详解

JointTrajectoryController 是 ROS2 中用于控制关节轨迹的核心控制器,常用于机械臂等多关节系统的运动控制。以下是其配置参数的详细说明:

基本参数

joints:- joint1- joint2
  • joints:必需参数,指定控制器管理的关节名称列表。每个名称必须与 URDF 中定义的关节一致。
interface_name: position
  • interface_name:指定控制接口类型,可选值包括:
    • position:位置控制(默认)
    • velocity:速度控制
    • effort:力/力矩控制

轨迹参数

state_publish_rate: 50.0
  • state_publish_rate:控制器状态发布频率(Hz),默认 50Hz。
action_monitor_rate: 
http://www.xdnf.cn/news/9257.html

相关文章:

  • 自然语言×数据集成新范式:SeaTunnel MCP深度解读 | 附视频讲解
  • 重新安装解决mac vscode点击不能跳转问题
  • 树莓派(Raspberry Pi)安装Docker教程
  • LabVIEW软件开发过程中如何保证软件的质量?
  • 大数据-272 Spark MLib - 基础介绍 机器学习算法 线性回归
  • openresty如何禁止海外ip访问
  • 【git】git rebase 和 git pull区别?
  • NSSCTF [NISACTF 2022]ezheap
  • 微信小程序的软件测试用例编写指南及示例--性能测试用例
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第三部分)
  • 查服务器信息 常用的一些命令 =^^ =
  • 共现矩阵的SVD降维与低维词向量计算详解
  • AI 智能体的那些事—架构设计关键点
  • 【Java实战】集合排序方法与长度获取方法辨析(易懂版)
  • 11.Java I/O 流:文件读写与数据持久化​
  • 夏季用电高峰如何防患于未“燃”?电力测温技术守护城市生命线
  • 使用 Redis 作为向量数据库
  • 5G 核心网 UE 状态深度剖析:机制、迁移与演进
  • 新版Chrome浏览器加载eDrawings 3D Viewer控件网页查看DWG、DXF
  • 利用Tushare+pyEcharts进行沪深证券数据采集与分析
  • 单向循环链表与双向链表
  • 洗鞋店干洗店线上预约管理系统;
  • 【OS安装与使用】part7-ubuntu22.04LTS 的 docker 安装与使用(实例:MTransServer服务部署)
  • AI辅助写作 从提笔难到高效创作的智能升级
  • WPF事件处理器+x名称空间
  • 基于多流特征融合与领域知识整合的CNN-xLSTM-xAtt网络用于光电容积脉搏波信号的无创血压估计【代码已复现】
  • C语言学习笔记三 --- V
  • 深信服防火墙拦截了DELETE、PUT请求,未达到nginx及后端服务
  • brep2seq 论文笔记
  • 《软件工程》第 16 章 - 软件项目管理与过程改进