ROS学习笔记 A ——如何使用urdf建立一个简单的机器人模型

时间:2024-03-27 10:08:39

工作环境:ubuntu+ros
需要用到的package:
rviz,urdf,joint_state_publisher

学习之前需要掌握的技能:

  • 新建工作空间
  • 新建package
  • 安装package

本文我们教大家学习怎么用urdf建如下的两*度机器人模型
ROS学习笔记 A ——如何使用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并不会正常显示模型,需要设置一些配置

  1. 首先去到Display——Fixed Frame选则baselink
  2. 然后点击Add添加rviz——RobotModel
  3. 我这边设置的尺寸有点大,记得缩放视野,在rviz窗口的右边增加distance或者滑滚轮
  4. 再根据自己的喜好设置要显示什么信息

如果不保存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结果
ROS学习笔记 A ——如何使用urdf建立一个简单的机器人模型
可以调整一下joint大小验证模型是否正确
ROS学习笔记 A ——如何使用urdf建立一个简单的机器人模型
结果长这样
ROS学习笔记 A ——如何使用urdf建立一个简单的机器人模型
大功告成。