工作环境:ubuntu+ros
需要用到的package:
rviz,urdf,joint_state_publisher
学习之前需要掌握的技能:
- 新建工作空间
- 新建package
- 安装package
本文我们教大家学习怎么用urdf建如下的两*度机器人模型
1.什么是urdf以及xacro?
urdf(unified robot discription format)统一机器人描述格式,顾名思义是用来描述定义机器人的,告诉电脑哪个是link哪个是joint以及模型的几何信息,xacro你则可以把它当作简化的urdf。
2.准备工作
2.1新建工作空间
我们新建一个simulation_ws工作空间专门用来存放学习仿真时相关的package(也就是我所理解的项目)
mkdir -p ~/simulation_ws/src //把基本文件夹新建好
cd ~/simulation_ws/
catkin_make //编译
source devel/setup.bash //添加到ros环境
2.2新建package(也就是所谓的project)
下面的语句逐条执行
cd ~/simulation_ws/src
catkin_create_pkg RRrobot_description urdf
3.新建并编辑我们的模型代码
3.1新建xacro模型文件
mkdir RRrobot_description/urdf
cd RRrobot_description/urdf/
touch RRrobot.xacro
去到目录打开RRrobot.xacro文件并添加模型代码,urdf语法看这里
<?xml version="1.0"?>
<robot name="RRrobot" xmlns:xaro="http://www.ros.org/wiki/xacro">
<link name="baselink">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<cylinder radius="100" length="80"/>
</geometry>
</visual>
</link>
<joint name="baselink_link1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0.5"/>
<origin rpy = "0 0 0" xyz="0 0 0"/>
<parent link="baselink"/>
<child link="link1"/>
</joint>
<link name="link1">
<visual>
<origin rpy="0 0 0" xyz="0 400 80"/>
<geometry>
<box size="60 800 60"/>
</geometry>
</visual>
</link>
<joint name="link1_link2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0.5"/>
<origin rpy = "0 0 0" xyz="0 800 0"/>
<parent link="link1"/>
<child link="link2"/>
</joint>
<link name="link2">
<visual>
<origin rpy="0 0 0" xyz="0 400 80"/>
<geometry>
<box size="60 800 60"/>
</geometry>
</visual>
</link>
</robot>
现在我们逐条讲解
<?xml version="1.0"?>
<robot name="RRrobot" xmlns:xaro="http://www.ros.org/wiki/xacro">
只有robot name需要注意下一下,其他照抄。
(剩下的代码懒得解释了,各位看官去ros官网自行看urdf torturial)
4.新建并编辑launch文件
cd src/RRrobot_description/launch/
touch rviz.launch
去到目录打开launch文件并添加如下代码
<launch>
<param name="robot_description" command="$(find xacro)/xacro --inorder $(find RRrobot_description)/urdf/RRrobot.xacro"/>
<!-- Combine joint values -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"/>
<!-- Show in Rviz -->
<node name="rviz" pkg="rviz" type="rviz"/>
<!-- send joint values -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="use_gui" value="True"/>
</node>
</launch>
5.编译运行来查看我们建好的模型
cd ~/simulation_ws/
catkin_make
rospack profile
roslaunch RRrobot_description rviz.launch
第一次运行时rviz并不会正常显示模型,需要设置一些配置
- 首先去到Display——Fixed Frame选则baselink
- 然后点击Add添加rviz——RobotModel
- 我这边设置的尺寸有点大,记得缩放视野,在rviz窗口的右边增加distance或者滑滚轮
- 再根据自己的喜好设置要显示什么信息
如果不保存config,以后重新打开rviz都要重新设置一遍,因此可以点击file——save config as保存到launch文件夹里命名为config.rviz。再打开之前的launch file ,把第9行改成
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find RRrobot_description)/launch/config.rviz"/>
这样以后都不用重新配置了。
一下是rviz结果
可以调整一下joint大小验证模型是否正确
结果长这样
大功告成。