【ROS机器人系统】实验 2 熟悉和使用 URDF 创建机器人模型

本文介绍了如何使用ROS的URDF格式创建机器人模型,包括创建URDF文件,添加轮子和激光传感器的步骤。通过实验,读者将学习到如何在URDF模型上增加新的机械部件和传感器,例如为机器人添加额外的轮子和激光雷达,并进一步扩展到添加摄像头模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验 2 熟悉和使用 URDF 创建机器人模型

1、实验目的

创建 URDF 机器人模型

添加激光或者视觉传感器并进行参数设置

2、实验设备

硬件环境:windows 10

系统环境:Ubuntu20.04、ROS noetic

3、实验内容

3.1 创建 URDF 机器人模型:

(1)URDF 介绍

URDF(Unified Robot Description Format,统一机器人描述格式)是ROS 中非常重要的机

器人模型描述格式,URDF 是一种基于XML 规范、用于描述机器人结构的格式。

(2)准备建立机器人模型

·创建文件夹以及功能文件

首先建立 ROS 工作空间,然后进入到创建好的 ROS 工作空间:

cd ~/urdf_ws/src

创建一个机器人建模的功能包,如图 3 所示。

catkin_create_pkg about_des urdf xacro

接下来我们要创建以下几个文件夹,如图 4 所示,用来存放相关文件,urdf:存放机器人模型的 URDF 或 xacro 文件,meshes:放置 URDF 中引用的模型渲染文件,launch:保存相关启动文件,config:保存 rviz 的配置文件。

进入 urdf 文件夹下,新建一个 about_urdf.urdf 文件。

touch about_urdf.urdf

打开 about_urdf.urdf 文件,编写机器人的 URDF。(一定要在 URDF 的目录下输入以下指令)

gedit about_urdf.urdf

·编写相关机器人模型信息

添加 robot 标签, 并且创建一个机器人的主体部分,主体以长方体为例:

<?xml  version="1.0" ? > 
<robot  name="robot"  > 
<link  name="base_link"  > 
<visual > 
<origin  xyz="0 0 0" rpy="0 0 0"  / > 
<geometry > 
<box  size="0.30 0.25 0.15"  / > 
</geometry > 
<material  name="yellow"  > 
<color  rgba="1 0.4 0 1"  / > 
</material > 
</visual > 
</link > 
</robot > 

在 launch 文件下创建启动文件

about.launch

touch about.launch

打开 about.launch 文件,然后写入以下内容:

<launch >
<param  name="robot_description" textfile=" $(find about_des)/urdf/about_urdf.urdf"  / >
<!--设置 GUI 参数,显示关节控制插件 -- >
 <param  name="use_gui" value="true"  / > 
<!-- 运动 joint_state_publisher 节点,发布机器人关节状态 -- >
< nodename nodename ="joint_state_publisher"pkg="joint_state_publisher" type="joint_state_publisher"  / > 
<!-- 运行 robot_state_publisher 节点,发布 TF -- >
< nodename nodename ="robot_state_publisher"pkg="robot_state_publisher" type="robot_state_publisher"  / > 
</launch > 

·运行演示

首先在 src 目录下编译文件并且利用 source 命令刷新环境,然后运行 launch 文件,如图 5

所示:

roslaunch about_des about.launch

并且启动可视化工具 rviz:

rosrun rviz rviz

先将 Fixed Fram 改为 base_link。

然后点击Add 添加可视化模块,选择“RobotModel”,点击 ok,然后就可以看到机器人的主体情况,如图 7 所示。

·完善机器人

目前已经准备好了 launch 启动文件,接下来开始完善机器人(主要配置 urdf 文件,launch

可以先不用修改了)。接下来为机器人添加轮子,再次打开 about_urdf.urdf,将下面内容添加到机器人主体的形容语句下面:

<?xml  version="1.0" ? > 
<robot  name="robot"  > 

<link  name="base_link"  > 
<visual > 
<origin  xyz="0 0 0" rpy="0 0 0"  / > 
<geometry > 
<box  size="0.30 0.25 0.15"  / > 
</geometry > 
<material  name="yellow"  > 

<color  rgba="1 0.4 0 1"  / > 
</material > 
</visual > 
</link > 

<link  name="left_front_link"  > 
<visual > 
<origin  xyz="0 0 0" rpy="1.5707 0 0"  / > 
<geometry > 
<cylinder  radius="0.04" length="0.025"  / > 
</geometry > 
<material  name="white"  > 
<color  rgba="1 1 1 0.9"  / > 
</material > 
</visual > 
</link > 
<joint  name="left_front_joint" type="continuous"  > 
<origin  xyz="0.10 0.15 -0.05" rpy="0 0 0"  / > 
<parent  link="base_link"  / > 
<child  link="left_front_link"  / > 
<axis  xyz="0 1 0"  / > 
</joint > 

<link  name="left_back_link"  > 
<visual > 
<origin  xyz="0 0 0" rpy="1.5707 0 0"  / > 
<geometry > 
<cylinder  radius="0.06" length="0.025"  / > 
</geometry > 
<material  name="white"  > 
<color  rgba="1 1 1 0.9"  / > 
</material > 
</visual > 
</link > 
<joint  name="left_back_joint" type="continuous"  > 
<origin  xyz="-0.10 0.15 -0.05" rpy="0 0 0"  / > 
<parent  link="base_link"  / > 
<child  link="left_back_link"  / > 
<axis  xyz="0 1 0"  / > 
</joint > 

</robot > 

·再次运行查看

然后重新运行launch文件和 rviz可视化工具,查看效果:

动手实现1∶利用实验所学知识,为机器人添加另外两个轮子?

打开 about_urdf.urdf,将下面内容添加到机器人主体的形容语句下面:

right_front_link和 right_back_link

<link name="right_front_link">
    <visual>
        <origin xyz="0 0 0" rpy="1.5707 0 0"  />
        <geometry>
            <cylinder radius="0.04" length="0.025"  />
        </geometry>
        <material name="white">
            <color rgba="1 1 1 0.9"  />
        </material>
    </visual>
</link>
<joint name="right_front_joint" type="continuous">
    <origin xyz="0.10 -0.15 -0.05" rpy="0 0 0"  />
    <parent link="base_link"  />
    <child link="right_front_link"  />
    <axis xyz="0 1 0"  />
</joint>

<link name="right_back_link">
    <visual>
        <origin xyz="0 0 0" rpy="1.5707 0 0"  />
        <geometry>
            <cylinder radius="0.06" length="0.025"  />
        </geometry>
        <material name="white">
            <color rgba="1 1 1 0.9"  />
        </material>
    </visual>
</link>
<joint name="right_back_joint" type="continuous">
    <origin xyz="-0.10 -0.15 -0.05" rpy="0 0 0"  />
    <parent link="base_link"  />
    <child link="right_back_link"  />
    <axis xyz="0 1 0"  />
</joint> 
    

再次运行查看

然后重新运行launch文件和 rviz可视化工具,查看效果:

3.2 在 URDF 中添加激光传感器

·修改机器人模型

为机器人添加激光雷达传感器。先把之前创建的 URDF 文件复制一份出来,修改名称为

about_with_laser.urdf,在最下端添加雷达的形容词(注意 urdf 文件不能有中文)。(用一个

圆柱体来代表激光雷达传感器)

<link name="laser_link">  
    <visual>  
        <origin xyz="0 0 0" rpy="0 0 0" />  
        <geometry>  
            <cylinder radius="0.04" length="0.040" />  
        </geometry>  
        <material name="black">  
            <color rgba="0 0 0 0.95" />  
        </material>  
    </visual>  
</link><joint name="laser_joint" type="fixed">  
    <origin xyz="0 0 0.09" rpy="0 0 0" />  
    <parent link="base_link" />  
    <child link="laser_link" />  
</joint>  

然后修改 launch 文件,将参数名改为 about_with_laser.urdf,然后启动 launch 文件和 rviz。

显示如下,我们就已经成功的将激光雷达添加进去了。

·运行查看

重新运行 launch 文件和 rviz 可视化工具,查看效果,如图 10 所示:

最终相关文件目录结构如图 11 所示:

动手实现 2:利用之前所学的知识,编写 urdf 文件,在添加激光雷达传感器的基础上为机器人加上摄像头的模型。

在about_with_laser.urdf中添加相机的形容词

<link  name="camera_link"  > 
<visual > 
<origin  xyz="0 0 0" rpy="0 0 0"  / > 
<geometry > 
<cylinder  radius="0.02" length="0.040"  / > 
</geometry > 
<material  name="white"  > 
<color  rgba="1 1 1 0.95"  / > 
</material > 
</visual > 
</link > 
<joint  name="camera_joint" type="fixed"  > 
<origin  xyz="0 0 0.13" rpy="0 1.5707 0"  / > 
<parent  link="base_link"  / > 
<child  link="camera_link"  / > 
</joint > 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~柠月如风~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值