参考roswiki controller官方说明
本文作为古月大神的补充ROS探索总结(三十一)——ros_control
为了在gazebo中实现机器人关节的控制,需要求建立一个controller控制器,首先需要在urdf中加入transmission标签如下:
<transmission name="simple_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="foo_joint">
<hardwareInterface>EffortJointInterface</hardwareInterface>
</joint>
<actuator name="foo_motor">
<mechanicalReduction>50</mechanicalReduction>
<hardwareInterface>EffortJointInterface</hardwareInterface>
</actuator>
</transmission>
下面详细说一下位理解各个部分的含义:
-
<transmission>(必须)唯一指定了一个传动的标签,名字自己定义,方便起见可以使用与joint name相同的名字。
-
<type>(出现一次)定义了传动的类型,这个细节说明还没找到,用transmission_interface/SimpleTransmission就可以啦。
-
<joint >(可定义一个或多个)指定这个传动所依赖的关节,拥有如下标签hardwareInterface。
- <hardwareInterface>(在joint下,可定义一个或多个)指定支持的硬件接口空间。用于结合控制器使用硬件接口来向硬件接口发送和接受指令,请注意:
- 当在RobotHW中加载此transmission时,此标签的值应为hardware_interface / XXX。
- 在Gazebo中加载此transmission时,此标记的值应为XXX 。
- <hardwareInterface>(在joint下,可定义一个或多个)指定支持的硬件接口空间。用于结合控制器使用硬件接口来向硬件接口发送和接受指令,请注意:
-
<actuator>(定义一个或多个)传动连接的致动器,名字自己去定义,拥有如下标签mechanicalReduction及hardwareInterface。
- <mechanicalReduction >(可选)定义电机/关节减速比。
- <hardwareInterface >(可选,只有Indigo及以前版本的在这里指定,目前版本已经移到joint标签下)指定支持的硬件接口空间。
此处说一下hardwareInterface标签的可选项:ROS提供了一下的接口可供选择
- Joint Command Interfaces
- Effort Joint Interface
- Velocity Joint Interface
- Position Joint Interface
- Joint State Interfaces
- Actuator State Interfaces
- Actuator Command Interfaces
- Effort Actuator Interface
- Velocity Actuator Interface
- Position Actuator Interface
- Force-torque sensor Interface
- IMU sensor Interface
对应的控制器
- effort_controllers - 直接控制关节的力/扭矩。
- joint_effort_controller
- joint_position_controller
- joint_velocity_controller
- joint_state_controller - 读取所有关节位置。
- joint_state_controller
- position_controllers - 一次设置一个/多个关节位置。
- joint_position_controller
- joint_group_position_controller
- velocity_controllers - 一次设置一个/多个关节速度。
- joint_velocity_controller
- joint_group_velocity_controller
- joint_trajectory_controllers - 扩展功能用于规划整个轨迹。
- position_controller
- velocity_controller
- effort_controller
- position_velocity_controller
- position_velocity_acceleration_controller