ROS学习记录2:仿真【Gazebo】【urdf】

URDF文件简述

URDF(Unified Robot Description Format,统一机器人描述格式)是ROS中非常重要的机器人模型描述格式,URDF 是一种基于XML 规范、用于描述机器人结构的格式。根据该格式的设计者所言,设计这一格式的目的在于提供一种尽可能通用(as general as possible)的机器人描述规范。从机构学角度讲,机器人通常被建模为由连杆和关节组成的结构。连杆是带有质量属性的刚体,而关节是连接、限制两个刚体相对运动的结构。关节也被成为运动副。通过关节将连杆依次连接起来,就构成了一个个运动链(也就是这里所定义的机器人模型)。一个URDF 文档即描述了这样的一系列关节与连杆的相对关系、惯性属性、几何特点和碰撞模型。具体来说,包括:

  • 机器人模型的运动学与动力学描述
  • 机器人的几何表示
  • 机器人的碰撞模型

URDF的常用参数

标签 link

link标签用于描述机器人某个刚体部分的外观和物理属性,包括尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等。
visual标签用于描述机器人LINK 部分的外观参数。inertial标签用于描述link 的惯性参数,而collision标签用于描述link 的碰撞属性。

标签joint

joint标签用于描述机器人关节运动学和动力学属性,包括关节涌动的位置和速度限制。根据机器人的关节运动形式可以将其分为六种类型。
在这里插入图片描述

实例URDF文件

<?xml version='1.0'?>
<robot name="mybot">
<!--**************base_link***************** -->
	<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>
		<collision>
			<origin xyz="0 0 0" rpy="0 0 0"/>
			<geometry>
				<box size="0.30 0.25 0.15"/>
			</geometry>
		</collision>
		<inertial>
			<mass value="20"/>
			<inertia ixx="0.525" ixy="0.0" ixz="0.0" iyy="1.191666" iyz="0.0" izz="1.4166666"/>
		</inertial>
	</link>
	<gazebo reference="base_link">
		<material>Gazebo/Gray</material>
	</gazebo>

配置过程问题记录:

运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误

请添加图片描述
执行命令重启服务器:

killall gzserver

urdf文件中定义gazebo插件的指令添加位置

直接代码片段:

<robot>
......
......
<!--**************base_footprint***************** -->
	<link name="base_footprint">
		<visual>
			<origin xyz="0 0 0" rpy="0 0 0" />
			<geometry>
				<box size="0.001 0.001 0.001" />
			</geometry>
		</visual>
	</link>
<!--**************base_footprint_joint*********** -->
	<joint name="base_footprint_joint" type="fixed">
		<origin xyz="0 0 0" rpy="0 0 0" />
		<parent link="base_footprint"/>
		<child link="base_link" />
	</joint>
	<gazebo reference="base_footprint_joint">
		<turnGravityOff>false</turnGravityOff>
	</gazebo>
<!--置于文件末端,在robot定义范围内-->
	<gazebo>
		<plugin name="skid_steer_drive_controller" filename="libgazebo_ros_skid_steer_drive.so">
			<alwaysOn>true</alwaysOn>
			<robotNamespace>/</robotNamespace>
			<updateRate>100</updateRate>
			<leftFrontJoint>left_front_joint</leftFrontJoint>
			<rightFrontJoint>right_front_joint</rightFrontJoint>
			<leftRearJoint>left_back_joint</leftRearJoint>
			<rightRearJoint>right_back_joint</rightRearJoint>
			<wheelSeparation>0.200</wheelSeparation>
			<wheelDiameter>0.120</wheelDiameter>
			<torque>1</torque>
			<commandTopic>cmd_vel</commandTopic>
			<odometryTopic>odom</odometryTopic>
			<odometryFrame>odom</odometryFrame>
			<robotBaseFrame>base_footprint</robotBaseFrame>
			<broadcastTF>1</broadcastTF>
		</plugin>
	</gazebo>
	
</robot>

rosdep update连接不上的解决方法:

尝试了非常多的方法,使用本地文件更新的方法是最有效的,附上连接(为大佬点赞):
本地文件安装法

要注意一点:很多教程说不需要update这一步,确实,如果说没有使用ROS更多的功能的话确实不需要,甚至我自己在没有更新成功的情况下学习完古月ROS入门教程的21讲都没有遇到什么需要rosdep update这一步来解决的。但是在后期进一步学习ROS的仿真的时候就必须要解决这问题。

相关XML文件格式记录

这里给出了XML的基础语法连接,还要好好研读学习。
XML基本语法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

絮沫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值