步骤:
序号 | 要做什么 | 备注 |
1 | 创建功能包XXX_description,依赖urdf 和 xacro | description是约定俗成的 |
2 | 创建urdf文件夹 | 放urdf模型文件 |
创建config文件夹 | 放rviz的配置文件 | |
创建launch文件夹 | 放launch文件 | |
创建meshes文件夹 | 放外观纹理文件 | |
3 | 编写urdf文件,launch文件 | urdf文件中千万不要写中文注释,千万别写(别问,问就是掉光头发) |
只有左轮的小车
<?xml version="1.0"?>
<robot name="mbot" >
<link name="base_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<cylinder length="0.16" radius="0.2"/>
</geometry>
<material name="yellow">
<color rgba="1 0.4 0 0.5"/>
</material>
</visual>
</link>
<joint name="left_wheel_joint" type="continuous">
<origin xyz="0 0.25 -0.05" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="left_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="left_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.06" length = "0.025"/>
</geometry>
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
</visual>
</link>
</robot>
launch:
gui
joint_state_publisher
robot_state_publisher
rviz
是固定套路
其中args="-d $(find mbot_description)/config/my_first_urdf.rviz" 你先运行rviz之后添加RobotModel 和tf之后保存成这个名字,下次运行launch文件的时候因为有rviz 的args 所以以前添加的东西都会自动出来,不用每次在去添加。
<launch>
<!--参数标签 参数的内容是后面的路径 -->
<param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" />
<!-- 设置GUI 参数 显示关节控制插件 -->
<param name="use_gui" value="true" />
<!--运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!--运行robot_state_publisher节点,发布tf -->
<node name = "robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!--运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/my_first_urdf.rviz" required="true" />
</launch>
第一次进入rviz之后添加tf和RobotModel
注意 进入rviz之后 fixed frame 改成base_link
报错:no transform from [left_back_wheel] to [base_link]
使用下面指令:
check_urdf *.urdf
查看urdf文件没有问题。
这样是没问题的
如果不行的话看看urdf文件
<?xml version="1.0"?> 这一行很容易出错
ROS问题:no transform from [left_back_wheel] to [base_link]_Linux系统教程_红联Linux门户
另外urdf文件千万别有中文注释
否则
[joint_state_publisher-2] process has died [pid 21605, exit code 1, cmd /opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher __log:=/home/xrh/.ros/log/37a76746-9905-11ec-ad84-4c77cb5faca3/joint_state_publisher-2.log].
log file: /home/xrh/.ros/log/37a76746-9905-11ec-ad84-4c77cb5faca3/joint_state_publisher-2*.log