智能机器人实验室—杭州电子科技大学
URDF(Unified Robot Description Format),统一机器人描述格式,包含link和joint以及相关属性描述文件。 Link: 描述机器人某个刚体部位的外观及物理属性; 描述连杆尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix),碰撞检测(collision properties)等; 每个link需要包含三个参数:visual;collision;inertial matrix;其中visual是必须的,其他两个可以有,也可以没有. 每个link都会成为一个坐标系. (1)visual: geometry(几何形状):描述刚体的形状; origin(坐标变换):包含xyz(平移变换,米)和rpy(旋转偏移,弧度); (2)collision: geometry(几何形状):描述刚体的碰撞外观,简化为简单的几何形状; origin(坐标变换):包含xyz(平移变换)和rpy(旋转偏移,弧度); joint: 描述两个link之间的关系,分为六种类型; 包含关节运动的位置和速度限制; parent link是前一个link,child link是另一个link; origin链接这两个link,表示后一个与前一个相对位置,即坐标系的偏移; axis是绕xyz轴旋转,0表示不转,1表示旋转; limit:限位,单位为弧度.
(1)创建ros包以及文件夹: ros包添加urdf以及xacro依赖,ros包下面添加上述四个文件夹; (2)编写模型数据 在urdf文件夹下面创建一个mbot.urdf文件,先编写一个底盘数据,如下图所示; 其中坐标系为原点处,圆柱体高为0.16米,半径为0.2米,外观为黄色; (3)编写launch文件 param做一个描述,描述名保存在rosmaster里面,后面是模型的路径; joint_state_publisher是一个功能插件,可以修改模型参数,不断广播关节状态的值; robot_state_publisher,通过订阅joint_state_publisher进行tf坐标更新; (4)运行实现 左上角的topic为base_link,可以修改urdf的参数对模型进行不同的变化。 (5)添加关节 添加一个左轮的link以及左轮与底盘的joint,格式如上所示; 注意上图rpy中的r,转换为角度就是90度,也就是说左轮竖直放置; origin描述轮子与底盘的相对位置变化,在y轴(绿色)有0.19的平移,在z轴(蓝色)有0.05的平移; axis表示绕y轴进行旋转; 如下图所示: 添加两个前后支撑轮: 如下所示: 添加激光雷达: 添加Kinect: 此处调用了Kinect模型文件。
前述步骤和上面一样,从数据建模开始: 编写数据 创建launch文件 运行实现 左上角修改topic,base_link,然后add里面添加robotmodel 机械臂底座 添加第一个link 同理,再创建其他五个连杆,同样的结构; 运行效果如下图: 添加夹爪 添加一个非实际意义刚体,只用来产生一个坐标系,便于定位物体抓取点; 运行效果: 本文主要根据胡春旭教学视频进行设计实现。