学习写urdf有几个地方需要注意

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即可, 最后效果如下

转载于:https://www.cnblogs.com/jinee/p/5047021.html

urdf 学习笔记一相关推荐

  1. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  2. 【现代机器人学】学习笔记七:开链动力学(前向动力学Forward dynamics 与逆动力学Inverse dynamics)

    这节的内容主要讲述机器人动力学的内容.相对于本书其他部分运动学内容相比,把动力学一下子合成了一章.看完以后有三个感受: 1.本章难度相对其他章节较大,因此需要反复去看,以求对重要内容的眼熟,不求全部记 ...

  3. ROS学习笔记之——移动机器人的导航

    之前博客<ROS学习笔记之--激光雷达SLAM建图>已经介绍过如何通过激光雷达SLAM建图了,本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMC ...

  4. ROS ros_control wiki 学习笔记

    本文目录 ROS ros_control wiki 学习笔记 1 架构 2 控制器 3 硬件接口 4 Transmissions 4.1 Transmission URDF Format 4.2 Tr ...

  5. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  6. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  9. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  10. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

最新文章

  1. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)
  2. C# 按钮控制windows音量
  3. luogu3244 bzoj4011 HNOI2015 落忆枫音
  4. ASP.NET 网速慢时候按钮禁止重复提交
  5. java修饰方法有哪些,探讨Java语言中那些修饰符
  6. 提示以下的错误信息:“未能在设计视图中打开, 块中,以不同方式将值括起来 ”...
  7. 多线程下不能用truncate吗_那么多的化妆品,怀孕后都不能用了吗?
  8. [Teaching] [Silverlight] 30秒快速建立遊戲迴圈 (Game Loop)
  9. Eclipse 的中文简体版安装教程
  10. mac电脑用户使用的音乐播放软件,用户还可以使用网易云账号将电脑和手机上的音乐同步网易云音乐mac版中
  11. 维刻柠檬鲜果冰怎么样?
  12. layaair的TS版本报错问题
  13. 开发中的各种时间格式转换(二)
  14. 任务栏WPS出现多窗口预览?下载这个注册表就对了
  15. 雨伞被拿错,你怎么办?!
  16. python遍历是什么意思_在Python中遍历列表的方法有哪些
  17. chrome浏览器插件程序包失效解决办法
  18. ASP.NET完全手册(电子工业出版社)
  19. 在阿里晋升3次,5年拿下P8岗位,这份pdf记录了我的整个成长过程
  20. 20 Linux Server Hardening Security Tips

热门文章

  1. StuQ Android 会员学习计划|帮你成为更优秀的 Android 工程师
  2. sklearn中的xgboost_RF/GBDT/XGBoost/LightGBM简单总结
  3. 力扣——保持城市天际线
  4. 实验五 编写、调试具有多个段的程序
  5. jQuery-对标签元素 文本操作-属性操作-文档的操作
  6. 【BZOJ 2306】 2306: [Ctsc2011]幸福路径 (倍增floyd)
  7. 简单介绍基于颜色的阴影检测算法
  8. iOS 腾讯云IM UIKit 升级XCode11后, 调用语音(取消) 崩溃问题
  9. 关于微信支付接口,curl错误代码58
  10. SQL Server里面如何检查没有释放的游标