前言
本文主要是跟着audolabor学习ROS笔记,多为操作性质,并从另一种角度对实现的顺序进行调整,想要多学习,可以参考autolabor教程
urdf
概念
URDF是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度…,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件
语法
urdf是一种XML语言,通过标签层级实现
robot层级
<robot name="name">
</robot>
link节点和子节点
<link name="link1">
<visual>
<geometry>
<!-- 选一个形状 -->
<box size="1 2 3" />
<cylinder radius="1" length="2" />
<sphere radius="1" />
<mesh filename="package://包名/meshes/文件.stl" />
</geometry>
<origin xyz="0 0 0" rpy="0 0 0" />
<material name="name1">
<color rgba="1 1 1 0.5" />
</material>
</visual>
<mass value="" />
<inertial ixx="" />
<collision>
<geometry>
<!--同上-->
</geometry>
</collision>
</link>
joint节点
关节类型
- continuous: 旋转关节,可以绕单轴无限旋转
- revolute: 旋转关节,类似于 continues,但是有旋转角度限制
- prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限
- planer: 平面关节,允许在平面正交方向上平移或旋转
- floating: 浮动关节,允许进行平移、旋转运动
- fixed: 固定关节,不允许运动的特殊关节
<joint name="link1_to_link2" type="continuous">
<parent name="link2" />
<child name="link1" />
<origin xyz="0 1 2" rpy="0 0 0" />
<axis xyz="1 0 0" />
</joint>
launch文件
<launch>
<param name="robot_description" testfile="$(find 文件名)/urdf/urdf/test.urdf" />
<!-- 启动 rivz -->
<node pkg="rviz" type="rviz" name="rviz_test" args="-d $(find demo01_urdf_helloworld)/config/helloworld.rviz" />
<!-- 启动机器人状态和关节状态发布节点 -->
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
<node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
</launch>
检查
使用安装命令后,可以使用相关语法查看urdf的合法性,代码如下:
sudo apt install liburdfdom-tools
check_urdf urdf文件名
urdf_to_graphiz urdf文件名 生成一个层级关系的pdf文件
evince pdf文件