搞毕设看的是赵虚左老师的视频,在视频中赵老师只介绍了两轮差速小车和阿克曼底盘的小车的控制器插件,麦克纳姆轮的小车并没有介绍到,在这里给大家分享一下麦轮小车的简单实现。
<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
<!-- 传动实现:用于连接控制器与关节 -->
<xacro:macro name="joint_trans" params="joint_name">
<!-- Transmission is important to link the joints and the controller -->
<transmission name="${joint_name}_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="${joint_name}">
<hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
</joint>
<actuator name="${joint_name}_motor">
<hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
</xacro:macro>
<!-- 每一个驱动轮都需要配置传动装置 -->
<xacro:joint_trans joint_name="LeftFrontwheelToBase" />
<xacro:joint_trans joint_name="LeftBackwheelToBase" />
<xacro:joint_trans joint_name="RightFrontwheelToBase" />
<xacro:joint_trans joint_name="RightBackwheelToBase" />
<!-- 麦轮控制器 -->
<gazebo>
<plugin name="mecanum_controller" filename="libgazebo_ros_planar_move.so">
<commandTopic>cmd_vel</commandTopic>
<odometryTopic>odom</odometryTopic>
<odometryFrame>odom</odometryFrame>
<leftFrontJoint>LeftFrontwheelToBase</leftFrontJoint>
<rightFrontJoint>RightFrontwheelToBase</rightFrontJoint>
<leftRearJoint>LeftBackwheelToBase</leftRearJoint>
<rightRearJoint>RightBackwheelToBase</rightRearJoint>
<odometryRate>100</odometryRate>
<robotBaseFrame>base_footprint</robotBaseFrame>
<broadcastTF>1</broadcastTF>
</plugin>
</gazebo>
</robot>
这是move.xacro,只需要将前后左右四个轮的joint改名成自己取得名字就可以了。