urdf 学习笔记一

urdf 学习笔记一学习写urdf有几个地方需要注意1.一定要记住它使用的是右手坐标系。x正方向朝左,y正方向向内,z轴正方向朝上2.构建树结构,即写link和joint3.每个link的参考坐标系都在它的底

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

1. 一定要记住它使用的是右手坐标系。

x正方向朝左, y 正方向向内, z轴正方向朝上

2. 构建树结构, 即写link和joint

3. 每个link的参考坐标系都在它的底部,并与关节的参考坐标系正交,为了添加尺寸,需要指定偏移从一个link到它的关节的子link, 这通过添加origin到每个节点解决。

这么说origin表示的是关节相对于父关节的距离和旋转, xyzrpy

用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>

urdf 学习笔记一 

 

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>

 

 urdf 学习笔记一 

 

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> 

 urdf 学习笔记一 

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>

urdf 学习笔记一 

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>

urdf 学习笔记一  

加上左臂

<?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>


urdf 学习笔记一

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>

 

urdf 学习笔记一 

 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>

urdf 学习笔记一 

 

左轮也是一样设置,只需把right 改成left即可, 最后效果如下

 

 urdf 学习笔记一

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167730.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分布式事务-TCC(Hmily)[通俗易懂]

    分布式事务-TCC(Hmily)[通俗易懂]TCC是什么:TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel操作若

    2022年5月21日
    60
  • mysql截取字符串去重,mysql 截取字符串 去重 拼接

    mysql截取字符串去重,mysql 截取字符串 去重 拼接1:字符串截取LEFT(guid_,LENGTH(guid_)-5)//1001-1002-1003截取为1001-10022:判断是否存在某字符串中IN(‘1001′,’1002′,’1003’)//whereidin(xxxx)可以用查询的某个字段直接whereidin(selectidfromxxxx)3:根据某个字段去重复在查询结果中加入COUNT(DIS…

    2022年6月10日
    184
  • pycharm学生版更新license「建议收藏」

    pycharm学生版更新license「建议收藏」pycharm的学生license一年过期,需要更新license.看网上的po出的经验较少,即使有也有错误,前几天成功更新了,分享一下经验。1.首先登陆jetbrainshttps://www.jetbrains.com/zh-cn/2.使用学校邮箱登陆后查看license因为是前几天更新的所以这个截图是已经更新过的,如果是一年期license过期的话(就是validthrough日期已过),大概是红圈这个位置有一个绿色的“renew…”(具体内容不记得了)。3.点开后输入学校邮箱这时候

    2022年8月28日
    4
  • java byte转中文乱码_java byte转string 涉及到字节流中有中文[通俗易懂]

    java byte转中文乱码_java byte转string 涉及到字节流中有中文[通俗易懂]最近遇到一个问题,我用java写了一个客户端通过socket向服务器端发送消息,发送的内容是字节流,编码格式是GBK,服务器在收到消息后,如果格式正确,会返回固定的消息格式,同样也是字节流,编码格式也是GBK。现在问题来了,我怎么把字节流转换为字符流,当然是要能显示出中文。于是上网搜了一下,找到一篇博客,网址如下:http://bbs.csdn.net/topics/391939108,代码如下:…

    2022年6月15日
    80
  • Qwt、QChart、QCustomPlot使用

    Qwt、QChart、QCustomPlot使用Qwt、QChart、QCustomPlot使用文档文章目录Qwt、QChart、QCustomPlot使用文档@[toc]效果图比较Qwt1、下载源码2、将Qwt编译成共享库3、添加Qwt4、使用Qwt5、添加帮助文档6、示例QCustomPlot1、下载源码2、使用源码3、将QCustomPlot编译成共享库4、示例QChart1、安装2、示例效果图QwtQcustomplotQChart比较美观方面:Qcustomplot≈Qchart>QwtQ

    2022年10月17日
    2
  • HDU 4331 Image Recognition

    HDU 4331 Image Recognition

    2021年8月19日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号