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

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: 

相关文章:

  • Java 并发编程通关秘籍——08死锁
  • STL-Library-Containers
  • Acrobat Reader 无法在 Windows 11及10 中打开的5种修复方法
  • 岛津Sonialvision X-ray X射线高压发生器控制台
  • RuoYi前后端分离框架集成Jasypt实现配置信息加密
  • C语言创意编程:用趣味实例玩转基础语法(2)
  • Redis工作原理解析
  • 学者观察 | Web3.0的技术革新与挑战——北京理工大学教授沈蒙
  • BERT和GPT语言模型的核心差异
  • How API Gateways handle raw TCP packets
  • 【深度学习-Day 18】从SGD到Adam:深度学习优化器进阶指南与实战选择
  • CentOS 7.0重置root密码
  • 【Marp】自定义主题 - box01
  • 【第1章 基础知识】1.2 Canvas 的绘图环境
  • iPaaS集成平台如何赋能智能体搭建
  • 【递归、搜索与回溯算法】专题一 递归
  • 创意编程:用Python打造粒子爱心烟花秀
  • JavaScript面试题之箭头函数详解
  • 使用 CHB Renamer 高效批量重命名文件扩展名
  • 【NLP基础知识系列课程-Tokenizer的前世今生第二课】NLP 中的 Tokenizer 技术发展史
  • 付运费送东西的网站怎么做/uc搜索引擎入口
  • 相馆网站建设费用预算/刚刚发生 北京严重发生
  • 三合一网站/百度热词搜索指数
  • wordpress免费电影网站模板/创建站点的步骤
  • wordpress勋章功能/关键词优化的方法有哪些
  • 传奇网站怎么制作教程/宁波网站优化公司电话