005 机器人建模
机器人建模
URDF
为了在仿真软件里面加载机器人本体,我们通常需要对机器人进行建模。而ROS及一些仿真软件通常使用URDF(Unified Robot Description Format)格式的文件来对机器人建模
URDF是一种基于XML的机器人模型描述格式,主要用于定义机器人的连杆(links)、关节(joints)、几何形状和物理属性
基本结构
URDF文件以<robot>
为根标签,包含<link>
(描述刚体)和<joint>
(描述连接关系)两类核心标签
1 |
|
常用标签
在进行运动学和动力学仿真时,所需要的子标签不完全相同。如果仅进行运动学仿真,则不需要碰撞、摩擦、质量等子标签
robot
作为一个urdf的根标签,全局只有一个
link
描述机器人的一个刚体部件(如底座、轮子、传感器等)
子标签 | 作用 | 关键属性/子标签 |
---|---|---|
<visual> |
定义部件的可视化外观(形状、颜色、材质等) | - <geometry> :形状(<box> 、<cylinder> 、<sphere> 、<mesh> ) - <origin> :偏移和旋转(xyz 、rpy ) - <material> :颜色(rgba ) |
<collision> |
定义部件的碰撞几何体(用于物理仿真) | 与<visual> 类似,但通常更简化以提高性能 |
<inertial> |
定义部件的质量、质心和惯性矩阵(动力学仿真必需) | - <mass> :质量(value ) - <inertia> :惯性矩阵(ixx 、ixy 等) - <origin> :质心位置 |
joint
描述2个连杆间的连接关系
子标签 | 作用 | 关键属性/子标签 |
---|---|---|
<parent> |
指定父<link> 的名称(必需) |
link :父链接名称 |
<child> |
指定子<link> 的名称(必需) |
link :子链接名称 |
<origin> |
定义关节坐标系相对于父/子链接的偏移和旋转 | xyz :平移偏移 rpy :旋转角度(弧度) |
<axis> |
定义关节的运动轴(如旋转轴或平移方向) | xyz :轴方向向量(如 "1 0 0" 表示绕X轴旋转) |
<limit> |
设置关节的运动限制(如角度、速度、力矩) | lower /upper :位置限制 effort :最大力矩 velocity :最大速度 |
<dynamics> |
定义关节的物理特性(如阻尼、摩擦) | damping :阻尼系数 friction :静摩擦系数 |
<safety_controller> |
设置安全控制器参数(防止关节超限) | soft_lower_limit /soft_upper_limit :软限制边界 |
<mimic> |
使当前关节模仿另一个关节的运动(如机械臂的联动) | joint :被模仿的关节名 multiplier :运动比例。 |
合法性检查
1 | check_urdf xxxx.urdf |
rviz可视化
在使用URDF文件定义好了机器人后,需要通过一些node间的通信机制把信息发给rviz节点,然后rviz在收到对应的信息后,就可以显示机器人了
URDF定义的机器人模型是静态的,如果要控制其移动,也需要发送某些预定的topic
用途 | 预定话题 |
---|---|
(rviz)获取机器人 URDF 模型描述 | /robot_description (存储 URDF/Xacro 的 XML 字符串) |
(rviz)实时获取各连杆(<link> )的坐标系变换关系 |
/tf 和 /tf_static (发布父子坐标系间的位姿) |
(rviz)获取关节(<joint> )的实时角度/位置 |
/joint_states (由 joint_state_publisher 或控制器发布) |
可以看到,rviz如果要显示机器人,主要依靠的是/robot_description
话题,他是由robot_state_publisher
功能包中的同名node发送的,所以我们要启动这个node才行
xacro
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.