URDF、Gazebo与Rviz 现在终于百川汇海,综合应用拉!
第一个重要的概念:ros_control 类比手机的typc接口,什么型号都适用。
机器人运动控制
还没运行就报错了非常不爽:解决运行gazebo时出现gazebo-2process has died pid 7920, exit code 255…的问题
在上一节的基础上,集成运动控制即可。
<robot name="my_car_camera" xmlns:xacro="http://wiki.ros.org/xacro">
<!-- 包含惯性矩阵文件 -->
<xacro:include filename="head.xacro" />
<!-- 组合小车底盘与摄像头与雷达 -->
<xacro:include filename="my_base.urdf.xacro" />
<xacro:include filename="my_camera.urdf.xacro" />
<xacro:include filename="my_laser.urdf.xacro" />
<!-- 集成运动控制 -->
<xacro:include filename="gazebo/move.xacro" />
</robot>
move.xacro文件主要有两部分:
<robot name="my_car_move" 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">
...
</transmission>
</xacro:macro>
<!-- 每一个驱动轮都需要配置传动装置 -->
<xacro:joint_trans joint_name="left_2base_link" />
<xacro:joint_trans joint_name="right_2base_link" />
<!-- 第2部分,根据自己定义的参数,进行修改,需要细心 -->
<!-- 差速控制器 适用于两轮模型 -->
<gazebo>
<plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
<rosDebugLevel>Debug</rosDebugLevel>
<publishWheelTF>true</publishWheelTF>
<robotNamespace>/</robotNamespace>
<publishTf>1</publishTf>
<publishWheelJointState>true</publishWheelJointState>
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<legacyMode>true</legacyMode>
<leftJoint>left_2base_link</leftJoint> <!-- 左轮 -->
<rightJoint>right_2base_link</rightJoint> <!-- 右轮 -->
<wheelSeparation>${base_link_radius * 2}</wheelSeparation> <!-- 车轮间距 -->
<wheelDiameter>${wheel_radius * 2}</wheelDiameter> <!-- 车轮直径 -->
<broadcastTF>1</broadcastTF>
<wheelTorque>30</wheelTorque>
<wheelAcceleration>1.8</wheelAcceleration>
<commandTopic>cmd_vel</commandTopic> <!-- 运动控制话题 -->
<odometryFrame>odom</odometryFrame>
<odometryTopic>odom</odometryTopic> <!-- 里程计话题 -->
<robotBaseFrame>base_footprint</robotBaseFrame> <!-- 根坐标系 -->
</plugin>
</gazebo>
</robot>
我在进行修改的时候,会打印出节点图,对照着改,感觉很有用。
之后,我们就可以在gazebo中用键盘控制小车运动了:rosrun teleop_twist_keyboard teleop_twist_keyboard.py
如果找不到这个命令,那就需要安装:sudo apt-get install ros-noetic-teleop-twist-keyboard