ROS2 Control transmission_interface说明

部署运行你感兴趣的模型镜像

ROS2 Control transmission_interface说明

前言

transmission_interface 1 2提供了一个基类和一些插件的实现,这些插件可以被自定义硬件组件集成和加载。它们不会被任何硬件组件或 gazebo 插件自动加载,每个硬件组件负责加载适当的传动接口,将执行器读数映射为关节读数。

正文

目前已经实现的变换接口有下边3类:

  • SimpleTransmission: 一个简单的传动,具有恒定的减速比且没有额外的动力学
  • DifferentialTransmission: 一个具有两个执行器和两个关节的差动传动
  • FourBarLinkageTransmission: 一个具有两个执行器和两个关节的四连杆传动

SimpleTransmission 简单传动

简单传动主要有两种,皮带轮和齿轮,传动比与半径直接相关,但是皮带轮方向与执行器方向一致,齿轮与传动轮顺逆时针相反。

配置

完整配置文件 /ros2_control_demo_example_8/description/ros2_control/rrbot_transmissions_system_position_only.ros2_control.xacro

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">

  <xacro:macro name="rrbot_transmissions_system_position_only" params="name prefix slowdown:=2.0">

    <ros2_control name="${name}" type="system">

      <hardware>
        <plugin>ros2_control_demo_example_8/RRBotTransmissionsSystemPositionOnlyHardware</plugin>
        <param name="actuator_slowdown">${slowdown}</param>
      </hardware>

      <joint name="${prefix}joint1">
        <command_interface name="position">
          <param name="min">-1</param>
          <param name="max">1</param>
        </command_interface>
        <state_interface name="position"/>
      </joint>

      <joint name="${prefix}joint2">
        <command_interface name="position">
          <param name="min">-1</param>
          <param name="max">1</param>
        </command_interface>
        <state_interface name="position"/>
      </joint>

      <transmission name="transmission1">
        <plugin>transmission_interface/SimpleTransmission</plugin>
        <actuator name="actuator1" role="actuator1"/>
        <joint name="joint1" role="joint1">
          <mechanical_reduction>2.0</mechanical_reduction>
          <offset>0.0</offset>
        </joint>
      </transmission>

      <transmission name="transmission2">
        <plugin>transmission_interface/SimpleTransmission</plugin>
        <actuator name="actuator2" role="actuator2"/>
        <joint name="joint2" role="joint2">
          <mechanical_reduction>4.0</mechanical_reduction>
          <offset>0.0</offset>
        </joint>
      </transmission>
    </ros2_control>

  </xacro:macro>

</robot>

其中actuator1joint1的传动关系描述如下

  <transmission name="transmission1">
    <plugin>transmission_interface/SimpleTransmission</plugin>
    <actuator name="actuator1" role="actuator1"/>
    <joint name="joint1" role="joint1">
      <mechanical_reduction>2.0</mechanical_reduction>
      <offset>0.0</offset>
    </joint>
  </transmission>

图示

请添加图片描述

DifferentialTransmission 差速传动

配置

<?xml version="1.0"?>
<robot name="robot" xmlns="http://www.ros.org">
  <ros2_control name="FullSpec" type="system">
    <joint name="joint1">
      <command_interface name="velocity">
        <param name="min">-0.5</param>
        <param name="max">0.5</param>
      </command_interface>
      <state_interface name="velocity"/>
    </joint>
    <joint name="joint2">
      <command_interface name="position">
        <param name="min">-1</param>
        <param name="max">1</param>
      </command_interface>
      <state_interface name="position"/>
    </joint>
    <transmission name="transmission1">
      <plugin>transmission_interface/DifferentialTransmission</plugin>
      <actuator name="joint1_motor" role="actuator1">
        <mechanical_reduction>50</mechanical_reduction>
      </actuator>
      <actuator name="joint2_motor" role="actuator2">
        <mechanical_reduction>-50</mechanical_reduction>
      </actuator>
      <joint name="joint1" role="joint1">
        <offset>0.5</offset>
        <mechanical_reduction>2.0</mechanical_reduction>
      </joint>
      <joint name="joint2" role="joint2">
        <offset>-0.5</offset>
        <mechanical_reduction>-2.0</mechanical_reduction>
      </joint>
    </transmission>
  </ros2_control>
</robot>

其中actuator1joint1actuator2joint2的传动关系描述如下

    <transmission name="transmission1">
      <plugin>transmission_interface/DifferentialTransmission</plugin>
      <actuator name="joint1_motor" role="actuator1">
        <mechanical_reduction>50</mechanical_reduction>
      </actuator>
      <actuator name="joint2_motor" role="actuator2">
        <mechanical_reduction>-50</mechanical_reduction>
      </actuator>
      <joint name="joint1" role="joint1">
        <offset>0.5</offset>
        <mechanical_reduction>2.0</mechanical_reduction>
      </joint>
      <joint name="joint2" role="joint2">
        <offset>-0.5</offset>
        <mechanical_reduction>-2.0</mechanical_reduction>
      </joint>
    </transmission>

图示

请添加图片描述

FourBarLinkageTransmission 四连杆传动

配置

<?xml version="1.0"?>
<robot name="robot" xmlns="http://www.ros.org">
  <ros2_control name="FullSpec" type="system">
    <joint name="joint1">
      <command_interface name="velocity">
        <param name="min">-0.5</param>
        <param name="max">0.5</param>
      </command_interface>
      <state_interface name="velocity"/>
    </joint>
    <joint name="joint2">
      <command_interface name="position">
        <param name="min">-1</param>
        <param name="max">1</param>
      </command_interface>
      <state_interface name="position"/>
    </joint>
    <transmission name="transmission1">
      <plugin>transmission_interface/FourBarLinkageTransmission</plugin>
      <actuator name="joint1_motor" role="actuator1">
        <mechanical_reduction>50</mechanical_reduction>
      </actuator>
      <actuator name="joint2_motor" role="actuator2">
        <mechanical_reduction>-50</mechanical_reduction>
      </actuator>
      <joint name="joint1" role="joint1">
        <offset>0.5</offset>
        <mechanical_reduction>2.0</mechanical_reduction>
      </joint>
      <joint name="joint2" role="joint2">
        <offset>-0.5</offset>
        <mechanical_reduction>-2.0</mechanical_reduction>
      </joint>
    </transmission>
  </ros2_control>
</robot>

其中actuator1joint1actuator2joint2的传动关系描述如下

    <transmission name="transmission1">
      <plugin>transmission_interface/FourBarLinkageTransmission</plugin>
      <actuator name="joint1_motor" role="actuator1">
        <mechanical_reduction>50</mechanical_reduction>
      </actuator>
      <actuator name="joint2_motor" role="actuator2">
        <mechanical_reduction>-50</mechanical_reduction>
      </actuator>
      <joint name="joint1" role="joint1">
        <offset>0.5</offset>
        <mechanical_reduction>2.0</mechanical_reduction>
      </joint>
      <joint name="joint2" role="joint2">
        <offset>-0.5</offset>
        <mechanical_reduction>-2.0</mechanical_reduction>
      </joint>
    </transmission>

图示

请添加图片描述

总结

目前没有在中文论坛搜到完整对于这一部分的说明,所以对外网资料做了一下梳理,具体测试效果待后续完成后再写一篇文章。


  1. ros2_control/transmission_interface at humble · ros-controls/ros2_control · GitHub ↩︎

  2. Joint Kinematics for ros2_control — ROS2_Control: Humble Mar 2025 documentation ↩︎

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人梦想家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值