[ROS] URDF 模型基础知识

[ROS] URDF 模型基础知识



URDF: Unified Robot Description Format,统一机器人描述格式


1. ros 创建 urdf 建模空间,创建 urdf 工作单元

  1. ROSWS/ 下创建 robot_ws/ 工作空间:mkdir robot_ws
  2. robot_ws/ 下 创建 src/ 目录:mkdir src
  3. robot_ws/src/ 下创建 demo_urdf 工作单元(pkg):catkin_create_pkg demo_urdf roscpp rospy rosmsg,注意添加依赖
  4. robot_ws/ 下编译工作空间:catkin_make
  5. source devel/setup.bash

2. 为 rviz 设置 robot_description

参考 rough 章节

在这里插入图片描述
在这里插入图片描述

  1. 尝试获得 /robot_descriptionrosparam get /robot_description
  2. 通过 xacro 查看目标路径下的 .urdf 文件:rosrun xacro xacro -i src/demo_urdf/urdf/helloworld.urdf
  3. 确定路径无误后设置 /robot_descriptionrosparam set robot_description -t src/demo_urdf/urdf/helloworld.urdf
  4. 再次尝试获得 /robot_description,如果设置成功,会输出结果:rosparam get /robot_description

设置成功后,rviz 显示模型

在这里插入图片描述

将 Fixed Frame 改写成 base_link,依据 helloworld.urdf 文件中的 link_name,得到目标模型。

在这里插入图片描述
在这里插入图片描述


3. 为 urdf + rviz 编写 launch file

<launch>

    <param name="robot_description" command="$(find xacro)/xacro -i $(find demo_urdf)/urdf/helloworld.urdf"></param>

    <node pkg="rviz" type="rviz" name="rviz"></node>

</launch>

4. urdf 创建盒子(box)

  • geometry_box.urdf
<?xml version="1.0" encoding="utf-8" ?>

<robot name="box">

    <link name="base_link">

        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <box size="1 2 3"/>
            </geometry>
            <material name="Cyan">
                <color rgba="0 1.0 1.0 1.0"/>
            </material>
        </visual>

    </link>

</robot>

  • 配置 launch file 的 rviz 启动项
  • -d 表示指向的 rviz 目标配置文件路径
<launch>

    <arg name="model" default="helloworld.urdf" />

    <param name="robot_description" command="$(find xacro)/xacro -i $(find demo_urdf)/urdf/$(arg model)"></param>

    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find demo_urdf)/rviz/demo01.rviz"></node>

</launch>
  • rviz 显示模型

在这里插入图片描述


5. urdf 创建圆柱体(cylinder)

  • geometry_cylinder.urdf
<?xml version="1.0" encoding="utf-8" ?>

<robot name="cylinder">

    <link name="base_link">

        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <cylinder length="2" radius="0.2"/>
            </geometry>
            <material name="Cyan">
                <color rgba="0 1.0 1.0 1.0"/>
            </material>
        </visual>

    </link>

</robot>


  • 启动:roslaunch demo_urdf display.launch model:=geometry_cylinder.urdf
  • rviz 显示模型

在这里插入图片描述


6. urdf 创建球体(sphere)

  • geometry_sphere.urdf
<?xml version="1.0" encoding="utf-8" ?>

<robot name="sphere">

    <link name="base_link">

        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="1" />
            </geometry>
            <material name="Cyan">
                <color rgba="0 1.0 1.0 1.0"/>
            </material>
        </visual>

    </link>

</robot>



  • rviz 显示模型

在这里插入图片描述


7. urdf 显示 bowl.dae 模型

  • 保存 bowl.dae 模型文件

在这里插入图片描述

  • geometry_mesh.urdf
<?xml version="1.0" encoding="utf-8" ?>

<robot name="box">   < !-- 机器人整体模型名称 -- >

<link name="base_link">   < !-- 整体模型中连杆组件名称 -- >

    <visual>   < !-- 视觉属性名称 -- >
        <origin xyz="0 0 0" rpy="0 0 0"/>   < !-- 此组件原点 -- >
        <geometry>   < !-- 模型几何 -- >
            <mesh filename="package://demo_urdf/meshes/bowl.dae"/>
        </geometry>
        <material name="Cyan">   < !-- 模型材质 -- >
            <color rgba="0 1.0 1.0 1.0"/>
        </material>
    </visual>

</link>

</robot>

  • <mesh filename="package://demo_urdf/meshes/bowl.dae"/> package://包名/目录/.dae
  • 启动:roslaunch demo_urdf display.launch model:=geometry_mesh.urdf
  • rviz 显示模型

在这里插入图片描述


*. 参考

1. xacro

  • Xacro (XML Macros) Xacro is an XML macro language. With xacro, you can construct shorter and more readable XML files by using macros that expand to larger XML expressions.
  • http://wiki.ros.org/xacro
  • 一个 xml 宏

*. 问题解决

1. RLException: roscore cannot run as another roscore/master is already running.

roscore 已经启动问题

在这里插入图片描述
解决

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


8. link 连杆 与 属性

1. link 连杆

在URDF描述性语言中,link是用来描述物理特性的

  1. 描述视觉属性
  2. 描述碰撞属性
  3. 描述物理惯性
<link name="my_link">			< !-- 标签中name属性是 必填项,描述当前连杆名称。多个<link>标签存在时,name必须是唯一。 -- >
    <visual></visual>			< !-- 标签用来描述视觉显示。选填项 -- >
    <collision></collision>		< !-- 标签用来描述碰撞属性。选填项 -- >
    <inertial></inertial>		< !-- 标签用来描述物理惯性。选填项 -- >
</link>

2. visual 视觉属性

<visual>
    <origin xyz="0 0 0" rpy="0 0 0" />
    <geometry>
        <box size="1 1 1" />
    </geometry>
    <material name="Cyan">
        <color rgba="0 1.0 1.0 1.0"/>
    </material>
</visual>
  • origin描述的是位置姿态信息。<origin xyz="0 0 0" rpy="0 0 0" />
  1. xyz描述的是在大环境中的坐标位置
  2. rpy描述的是自身的姿态
  • mesh指向对应的文件

9. 通用 launch 文件参考

<launch>
    <arg name="model" default="geometry_box.urdf"/>
    <arg name="gui" default="true" />
    <arg name="rvizconfig" default="$(find demo_urdf)/rviz/urdf.rviz" />

    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find demo_urdf)/urdf/$(arg model)" />
    <param name="use_gui" value="$(arg gui)"/>

    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>
  • 启动了三个节点:
  1. joint_state_publisher
  2. robot_state_publisher
  3. rviz
  • 定义了三个变量
  1. model
  2. gui
  3. rvizconfig

*. rough

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

找机器人描述文件 robot_description,在下图找,但是没有,需要主动设置

在这里插入图片描述
在这里插入图片描述

设置方式如上,命令如下

在这里插入图片描述

可以得到 robot_description 了

在这里插入图片描述

for launch file

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值