文章目录
top: urdf文件中不能有中文注释
<link>元素,属性:name(required) 描述link自己的名称
URDF文件创建,首先在工作空间 的src下,使用catkin_make packagename urdf创建一个urdf包。
URDF文件中不能有中文注释,删除掉中文注释
<link>中的子标签:
1.1 <inertial> (option)
: 描述link的惯性属性。
<inertial>子标签有
- <origin> (optional:如果没有指定定义为defaults :这是惯性参考系相对于连杆参考坐标系的姿态。惯 性参考坐标系的原点必须在重心。惯性参考坐标系的轴无需与惯性主轴对齐。
属性 | 描述 |
---|---|
xyz(optional) | 默认在零向量,描述x,y,z的偏移量 |
rpy(optional) | 如为指定默认标识,标识固定轴的横滚角,俯仰角和偏航角以弧度标识 |
- <mass> 描述link的质量; 属性是value.
- <inertia> 3x3的惯性矩阵,由于转动惯量矩阵是对称的,这里只指定了该矩阵的6个以上对角线元素,使用属性ixx、ixy、ixx、iyy、iyz、izz。
1.2 <visual>(option) 描述link的外形
链接的视觉属性。此元素指定用于可视化目的的对象(框、圆柱体等)的形状。注意:同一链接可以存在多个<visual>标记实例。它们定义的几何图形的并集形成了链接的可视化表示。
属性的name(optional):指定link几何图形的一部分名称。这对于能够引用链接几何体的特定位很有用。
<visual>的子标签有
- <origin> (optional) 如未指定,则标识为默认;视觉元素的参考框架性对于link的参考框架
属性 | 描述 |
---|---|
xyz(optional默认0向量) | 描述xyz的偏移量 |
ryp(optioanal) | 如为指定默认标识,标识固定轴的横滚角,俯仰角和偏航角以弧度标识 |
- <geometry> (required) 描述视觉对象的形状,有以下的子标签
子标签 | 作用 |
---|---|
<box> | 属性是size 包含盒子的三个边长。盒子的原点在中间 |
<cylinder> | 有两个属性,radius和length 指定圆柱体的半径,圆柱体的圆心位于其中心 |
<mesh> |
- <collosion> (optional) 描述link的碰撞属性
<joint>及子标签
它描述了关节的运动学以及动力学,还指定了关节的安全极限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SctxwaoT-1590647600581)(/home/zhongsy/Desktop/photo/Screenshot from 2020-04-20 16-18-21.png)]
属性 | 描述 |
---|---|
name (required) | 声明joint的名字 |
type (required) | 声明joint的类型。有以下几种:(1)revolute 旋转-沿轴旋转并具有由上限和下限指定的有限范围的铰链关节。(2)continous绕轴旋转且没有上下限的连续铰链关节。(3) prismatic -沿轴滑动的滑动关节,具有由上限和下限指定的有限范围。(4)fixed 这不是真正的关节,因为它不能移动。所有自由度都被锁定。这种类型的关节不需要轴、校准、动力学、极限或安全控制器。(5) floating -这个关节允许所有6个自由度的运动. (6) planar 这个关节允许在垂直于轴的平面上运动。 |
子标签有
2.1 <origin> (optional)
如果没有指定那么设置为default
属性 | 描述 |
---|---|
xyz(optional默认0向量) | 描述xyz的偏移量,均以米为单位 |
ryp(optioanal) | 如为指定默认标识,表示绕固定轴旋转:首先绕x轴滚动,然后绕y轴俯仰,最后z轴偏航。所有角度均以弧度为单位 |
2.2 <parent> (required)
有一个必填的属性:父link的名称
属性 | 描述 |
---|---|
link | 父link的名称 |
2.3 <child> (required)
属性 | 描述 |
---|---|
link | 子link的名称 |
2.4 <axis> (optional 默认(1,0,0))
关节框架中指定的关节轴。这是旋转关节的旋转轴、棱柱关节的平移轴和平面关节的曲面法向。轴在关节参考系中指定。固定关节和浮动关节不使用“axis”标签。
属性 | 描述 |
---|---|
xyz (required) | components of a vector. The vector should be normalized. |
2.5 <calibration> (optional)
joint的参考位置,用于校准关节的绝对位置
属性 | 描述 |
---|---|
rising (optional) | 当关节正向移动时,该参考位置将触发上升沿。 |
falling (optional) | 当关节正向移动时,该参考位置将触发下降沿。 |
2.6<dynamics> (optional)
指定joint的物理特性的标签,指定建模属性用于仿真
2.7<friction> (optional defaults to 0)
2.8<limit> (required only for revolute(旋转)and prismatic(棱柱)joint)
问题
也可能是launch文件写错了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNEhVkSw-1590647600584)(/home/zhongsy/Desktop/photo/Screenshot from 2020-04-19 17-38-08.png)]
launch文件
<launch>
<arg name="model" />
<!--设置GUI参数,显示关节控制插件-->
<arg name="gui" default="False" />
<param name="robot_description" textfile="$(find mrobot_description)/urdf/mrobot_base.urdf" />
<param name="use_gui" value="$(arg gui)"/>
<!--运行joint_state_publisher节点,发布机器人关节状态-->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<!--运行robot_state_publisher节点,发布tf-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<!--运行rviz可视化界面-->
<node name="rviz" pkg="rviz" type="rviz" />
</launch>
<launch>
<arg name="model" />
<arg name="gui" default="true" />
<arg name="rvizconfig" default="$(find urdf_tutorial)/rviz/urdf.rviz" />
<param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" /> //把xacro 文件转换成urdf文件
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>
工具
check_urdf my_robot.urdf
命令行检查urdf文件
建模软件
solidwork
xacro package(减少urdf的代码量)
xxx.urdf.xacro
对于三件事xacro很有帮助
- constant
- simple math
- macros(宏)
顾名思义,xacro是一种宏语言。xacro程序运行所有宏并输出结果。典型用法如下:
xacro --inorder model.xacro > model.urdf
您还可以在启动文件中自动生成urdf。这很方便,因为它保持最新,而且不会占用硬盘空间。但是,生成确实需要时间,因此请注意,启动启动文件可能需要更长的时间。
param name="robot_description" command="xacro --inorder '$(find pr2_description)/robots/pr2.urdf.xacro'" />
在URDF文件的顶部,必须指定一个名称空间,以便文件正确解析。例如,以下是有效xacro文件的前两行:
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter">
这个很简单就像是声明变量声明模块然后赋值使用会生成对应urdf代码
详细的可以看http://wiki.ros.org/urdf/Tutorials/Using Xacro to Clean Up a URDF File