urdf 学习笔记一
2015-12-15 03:47
330 查看
学习写urdf有几个地方需要注意
1. 一定要记住它使用的是右手坐标系。
x正方向朝左, y 正方向向内, z轴正方向朝上
2. 构建树结构, 即写link和joint
3. 每个link的参考坐标系都在它的底部,并与关节的参考坐标系正交,为了添加尺寸,需要指定偏移从一个link到它的关节的子link, 这通过添加origin到每个节点解决。
这么说origin表示的是关节相对于父关节的距离和旋转, xyz和rpy
用ros wiki上的r2d2实例学习
1.初始版本
2. 加入关节origin
因为basekink没有改变,所以这里省略baselink...
3. 加入link origin y轴 旋转
因为basekink没有改变,所以这里省略baselink...
4. 加入link origin xyz偏移
因为basekink没有改变,所以这里省略baselink...
5. 给模型加入材质(穿上一件衣服)
加上左臂
6. 添加头,sphere几何体
注意每定义个link都要为它添加一个关节,否则check_urdf时报错
Error: Failed to find root link: Two root links found: [base_link] and [head]
没有给头link添加关节导致的错误。
8. 添加车轮和车轮底座
左轮也是一样设置,只需把right 改成left即可, 最后效果如下
1. 一定要记住它使用的是右手坐标系。
x正方向朝左, y 正方向向内, z轴正方向朝上
2. 构建树结构, 即写link和joint
3. 每个link的参考坐标系都在它的底部,并与关节的参考坐标系正交,为了添加尺寸,需要指定偏移从一个link到它的关节的子link, 这通过添加origin到每个节点解决。
这么说origin表示的是关节相对于父关节的距离和旋转, xyz和rpy
用ros wiki上的r2d2实例学习
1.初始版本
<?xml version="1.0"?> <robot name="origins"> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 .2 .1"/> </geometry> </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> </joint> </robot>
2. 加入关节origin
因为basekink没有改变,所以这里省略baselink...
<link name="right_leg"> <visual> <geometry> <box size="0.6 .2 .1"/> </geometry> </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> <origin xyz="0.22 0 .25"/>(左移和上移, x轴左为正, z为上, y 垂直平面, 右手坐标系) </joint>
3. 加入link origin y轴 旋转
因为basekink没有改变,所以这里省略baselink...
<link name="right_leg"> <visual> <geometry> <box size="0.6 .2 .1"/> </geometry> <origin rpy="0 1.57075 0"/> (y轴旋转90度) </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> <origin xyz="0.22 0 .25"/> </joint>
4. 加入link origin xyz偏移
因为basekink没有改变,所以这里省略baselink...
<link name="right_leg"> <visual> <geometry> <box size="0.6 .2 .1"/> </geometry> <origin rpy="0 1.57075 0" xyz = “0 0 -0.3 ”/> (y轴旋转90度, 往下0.3) </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> <origin xyz="0.22 0 .25"/> </joint>
5. 给模型加入材质(穿上一件衣服)
<?xml version="1.0"?> <robot name="origins"> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> <material name = "blue"> <color rgba = "0 0 .8 1"/> </material> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 .2 .1"/> </geometry> <material name = "white"> <color rgba = "1 1 1 1"/> </material> <origin rpy = "0 1.57 0" xyz = "0 0 -0.3"/> </visual> </link>
加上左臂
<?xml version="1.0"?> <robot name="origins"> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> <material name = "blue"> <color rgba = "0 0 .8 1"/> </material> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 .2 .1"/> </geometry> <material name = "white"> <color rgba = "1 1 1 1"/> </material> <origin rpy = "0 1.57 0" xyz = "0 0 -0.3"/> </visual> </link>
<joint name="base_to_right_leg" type="fixed">
<parent link="base_link"/>
<child link="right_leg"/>
<origin xyz="0.22 0 .25"/>
</joint>
<link name="left_leg">
<visual>
<geometry>
<box size="0.6 .2 .1"/>
</geometry>
<material name = "white">
<color rgba = "1 1 1 1"/>
</material>
<origin rpy = "0 1.57 0" xyz = "0 0 -0.3"/>
</visual>
</link>
<joint name="base_to_left_leg" type="fixed">
<parent link="base_link"/>
<child link="left_leg"/>
<origin xyz="-0.22 0 .25"/> 仅仅这里不同, 关节右移所以是负
</joint>
</robot>
6. 添加头,sphere几何体
注意每定义个link都要为它添加一个关节,否则check_urdf时报错
Error: Failed to find root link: Two root links found: [base_link] and [head]
没有给头link添加关节导致的错误。
<link name = "head"> <visual> <geometry> <sphere radius = "0.2"/> </geometry> <material name = "white"> <color rgba = "1 1 1 1"/> </material> </visual> </link> <joint name = "head_swivel" type = "fixed"> <parent link = "base_link"/> <child link = "head"/> <origin xyz = "0 0 0.3"/> </joint>
8. 添加车轮和车轮底座
<link name = "right_wheel_base"> //右车轮底座 <visual> <geometry> <box size = "0.1 .4 .1"/> </geometry> <material name = "yellow"> <color rgba = "1 1 0 1"/> </material> </visual> </link> <joint name = "right_wheel_base_joint" type = "fixed"> <parent link = "right_leg"/> <child link = "right_wheel_base"/> <origin xyz = "0 0 -0.65"/> </joint> <link name = "right_front_wheel"> // 右前轮 <visual> <geometry> <cylinder length = "0.08" radius = "0.04"/> </geometry> <material name = "black"> <color rgba = " 0 0 0 1"/> </material> </visual> </link> <joint name = "right_front_wheel_joint" type = "fixed"> <parent link = "right_wheel_base"/> <child link = "right_front_wheel"/> <origin xyz = "0 .14 -.05" rpy = "1.5 0 1.5"/> // 旋转了车轮 </joint> <link name = "right_back_wheel"> // 右后轮 <visual> <geometry> <cylinder length = "0.08" radius = "0.04"/> </geometry> <material name = "black"> <color rgba = " 0 0 0 1"/> </material> </visual> </link> <joint name = "right_back_wheel_joint" type = "fixed"> <parent link = "right_wheel_base"/> <child link = "right_back_wheel"/> <origin xyz = "0 -.14 -.05" rpy = "1.5 0 1.5"/> // y轴为负,往后移 </joint>
左轮也是一样设置,只需把right 改成left即可, 最后效果如下
相关文章推荐
- Linux_VMWare12 Install RHEL7
- FFMPEG支持的所有编码解码
- Common JS String Methods
- 数据结构串
- Leetcode: Count Primes
- 变量生命周期
- IOS中在自定义控件(非视图控制器)的视图跳转中 代理方法与代码块的比较
- gas伪指令
- iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例
- web应用安全防御100技 好书再次阅读, 变的只是表象,被概念迷惑的时候还是静下心来回顾本质
- 猫叫老鼠跑-观察者模式
- Leetcode: Remove Linked List Elements
- 一颗小白菜的编程之旅起点
- setProjectionMap@SQLiteQueryBuilder使用简记
- 多态性(C#)
- Leetcode: Bitwise AND of Numbers Range
- background复合属性详解(上):background-image
- Maven编译32位Hadoop2.7.1
- awk 正则表达式、正则运算符详细介绍
- HDU 3016 线段树单点更新+DP