重要参考:
课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
讲义链接:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
6.3.4 URDF练习
需求描述:
创建一个四轮圆柱状机器人模型,机器人参数如下,底盘为圆柱状,半径 10cm,高 8cm,四轮由两个驱动轮和两个万向支撑轮组成,两个驱动轮半径为 3.25cm,轮胎宽度1.5cm,两个万向轮为球状,半径 0.75cm,底盘离地间距为 1.5cm(与万向轮直径一致)
结果演示:
实现流程:
创建机器人模型可以分步骤实现
-
新建 urdf 文件,并与 launch 文件集成
-
搭建底盘
-
在底盘上添加两个驱动轮
-
在底盘上添加两个万向轮
1.新建urdf以及launch文件
urdf 文件:基本实现
<robot name="mycar"><!-- 设置 base_footprint --><link name="base_footprint"><visual><geometry><sphere radius="0.001" /></geometry></visual></link><!-- 添加底盘 --><!-- 添加驱动轮 --><!-- 添加万向轮(支撑轮) --></robot>
launch 文件:
<launch><!-- 将 urdf 文件内容设置进参数服务器 --><param name="robot_description" textfile="$(find demo01_urdf_helloworld)/urdf/urdf/test.urdf" /><!-- 启动 rivz --><node pkg="rviz" type="rviz" name="rviz_test" args="-d $(find demo01_urdf_helloworld)/config/helloworld.rviz" /><!-- 启动机器人状态和关节状态发布节点 --><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" /><node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" /><!-- 启动图形化的控制关节运动节点 --><node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" /></launch>
2.底盘搭建
<!-- 参数形状:圆柱 半径:10 cm 高度:8 cm 离地:1.5 cm--><link name="base_link"><visual><geometry><cylinder radius="0.1" length="0.08" /></geometry><origin xyz="0 0 0" rpy="0 0 0" /><material name="yellow"><color rgba="0.8 0.3 0.1 0.5" /></material></visual></link><joint name="base_link2base_footprint" type="fixed"><parent link="base_footprint" /><child link="base_link"/><origin xyz="0 0 0.055" /></joint>
3.添加驱动轮
<!-- 添加驱动轮 --><!--驱动轮是侧翻的圆柱参数半径: 3.25 cm宽度: 1.5 cm颜色: 黑色关节设置:x = 0y = 底盘的半径 + 轮胎宽度 / 2z = 离地间距 + 底盘长度 / 2 - 轮胎半径 = 1.5 + 4 - 3.25 = 2.25(cm)axis = 0 1 0--><link name="left_wheel"><visual><geometry><cylinder radius="0.0325" length="0.015" /></geometry><origin xyz="0 0 0" rpy="1.5705 0 0" /><material name="black"><color rgba="0.0 0.0 0.0 1.0" /></material></visual></link><joint name="left_wheel2base_link" type="continuous"><parent link="base_link" /><child link="left_wheel" /><origin xyz="0 0.1 -0.0225" /><axis xyz="0 1 0" /></joint><link name="right_wheel"><visual><geometry><cylinder radius="0.0325" length="0.015" /></geometry><origin xyz="0 0 0" rpy="1.5705 0 0" /><material name="black"><color rgba="0.0 0.0 0.0 1.0" /></material></visual></link><joint name="right_wheel2base_link" type="continuous"><parent link="base_link" /><child link="right_wheel" /><origin xyz="0 -0.1 -0.0225" /><axis xyz="0 1 0" /></joint>
4.添加万向轮
<!-- 添加万向轮(支撑轮) --><!--参数形状: 球体半径: 0.75 cm颜色: 黑色关节设置:x = 自定义(底盘半径 - 万向轮半径) = 0.1 - 0.0075 = 0.0925(cm)y = 0z = 底盘长度 / 2 + 离地间距 / 2 = 0.08 / 2 + 0.015 / 2 = 0.0475 axis= 1 1 1--><link name="front_wheel"><visual><geometry><sphere radius="0.0075" /></geometry><origin xyz="0 0 0" rpy="0 0 0" /><material name="black"><color rgba="0.0 0.0 0.0 1.0" /></material></visual></link><joint name="front_wheel2base_link" type="continuous"><parent link="base_link" /><child link="front_wheel" /><origin xyz="0.0925 0 -0.0475" /><axis xyz="1 1 1" /></joint><link name="back_wheel"><visual><geometry><sphere radius="0.0075" /></geometry><origin xyz="0 0 0" rpy="0 0 0" /><material name="black"><color rgba="0.0 0.0 0.0 1.0" /></material></visual></link><joint name="back_wheel2base_link" type="continuous"><parent link="base_link" /><child link="back_wheel" /><origin xyz="-0.0925 0 -0.0475" /><axis xyz="1 1 1" /></joint>
6.3.5 URDF工具
在 ROS 中,提供了一些工具来方便 URDF 文件的编写,比如:
-
check_urdf 命令可以检查复杂的 urdf 文件是否存在语法问题
-
urdf_to_graphiz 命令可以查看 urdf 模型结构,显示不同 link 的层级关系
当然,要使用工具之前,首先需要安装,安装命令:sudo apt install liburdfdom-tools
1.check_urdf 语法检查
进入urdf文件所属目录,调用:check_urdf urdf 文件
,如果不抛出异常,说明文件合法,否则非法
2.urdf_to_graphiz 结构查看
进入 urdf 文件所属目录,调用:urdf_to_graphiz urdf文件
,当前目录下会生成 pdf 文件