URDF机器人建模
相关urdf代码链接:
https://download.youkuaiyun.com/download/weixin_43262513/10990016
1.urdf介绍
URDF(Unified Robot Description Format),统一机器人描述格式,是一种特殊的xml格式,用来描述一个机器人. 在ROS中,urdf功能包包含一个urdf格式文件的C++解析器,这样,任何通过统一编码格式设计的机器人都可以通过该解析器得到一个可视化的模型.
具体介绍参考:
https://zhuanlan.zhihu.com/p/21252651
URDF创造的机器人模型包含的内容有:
- 连杆 link
- 关节 joint
- 运动学参数 axis
- 动力学参数 dynamics
- 可视化模型 visual
- 碰撞检测模型 collision
具体xml模型如下图:
2.urdf模型具体介绍
(1)link(link代码称之为link标签)
具体形态如图:
代码如图:
(2)joint连杆(joint代码称之为连杆标签)
介绍:
物理模型:
主关节:parent link
子关节:child link ,必须指定主关节和子关节
代码如下:
其他一些参考标签:
连杆分类:
(3)完整的机器人模型------->由若干个link标签个joint标签组成
具体代码如下:
2.创建urdf功能包模型
(相关文件已经上传,移植过程下载的资源介绍里面有)
步骤一:catkin_ws/src目录下,执行:
catkin_create_pkg mbot_description urdf xacro
步骤二:mbot_description文件夹下创建文件夹
urdf------------>放置模型具体文件
meshes------->机器人外观纹理等参数的描述文件
launch--------->启动相关文件
config---------->相关功能包的配置文件,rviz相关显示的配置文件
步骤三:
launch文件夹,创建display_mbot_base_urdf.launch,
导入源码:
<launch>
<!-- 加载的参数名字叫robot_description,具体内容是urdf相关模型的路径 -->
<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="state_publisher" />
<!-- 运行rviz可视化界面,保存每次打开之后的相关插件,保存到config文件夹下面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>
注意:
…
3.创建小车车体模型
(1)urdf文件夹下创建mbot_base.urdf,
写入代码(下面代码插入都在我空下来的大片地方这里):
<?xml version="1.0" ?>
<robot name="mbot">
<link name="base_link">
<visual>
<origin xyz=" 0 0 0" rpy="0 0 0" />
<!-- link坐标位置,放在最中央 ,xyz单位是米,rpy单位是弧度-->
<geometry>
<cylinder length="0.16" radius="0.20"/>
</geometry>
<!-- 机器人的外观效果,使用圆柱体,高0.16,半径0.20 -->
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</material>
<!-- 通过rgba来描述颜色,颜色命名为yellow,a为1是不透明-->
</visual>
<!--visual指的是一些物理属性的标签 -->
</link>
</robot>
<