URDF学习(二)用URDF建立一个简单的机器模型

获取机器人URDF模型文件的途径通常有

  • 自己写
  • 机器人制造商提供其机器人的URDF模型
  • 通过机械设计软件导出URDF文件

本节我们学习怎么自己写一个简单的URDF模型,但这并不是鼓励大家自己写 urdf 文件,是为了让大家理解 urdf 好能够自行修改。我个人的建议是尽量在cad软件导出来的 urdf 里面做修改,这样可能会简单容易些。

1. URDF模型代码
这里我们学习怎么用URDF建立一个简单的,由两根连杆组成的单摆模型。新建一个文件输入以下代码,并保存为 double_pendulum.urdf.

<robot name = "linkage">
	<!-- links section -->>
	<link name = "link A">
		<inertial>
			<origin xyz = "0 0 0" />
			<mass value = "0.5" />
			<inertia ixx = "0.5" iyy = "0.5" izz = "0.5" ixy = "0" ixz = "0" iyz = "0" />
		</inertial>
		<visual>
			<origin xyz = "0 0 0" />
			<geometry>
				<box size = "0.5 0.5 0.1" />
			</geometry>
			<material name = "gray A">
				<color rgba = "0.1 0.1 0.1 1" />
			</material>
		</visual>
	</link>
	<link name = "link B">
		<inertial>
			<origin xyz = "0 0 -0.5" />
			<mass value = "0.5" />
			<inertia ixx = "0.5" iyy = "0.5" izz = "0.5" ixy = "0" ixz = "0" iyz = "0" />
		</inertial>
		<visual>
			<origin xyz = "0 0 -0.5" />
			<geometry>
				<cylinder radius = "0.05" length = "1"  />
			</geometry>
			<material name = "gray B">
				<color rgba = "0.3 0.3 0.3 1" />
			</material>
		</visual>
	</link>
	<link name = "link C">
		<inertial>
			<origin xyz = "0 0 -0.5" />
			<mass value = "0.5" />
			<inertia ixx = "0.5" iyy = "0.5" izz = "0.5" ixy = "0" ixz = "0" iyz = "0" />
		</inertial>
		<visual>
			<origin xyz = "0 0 -0.5" />
			<geometry>
				<cylinder radius = "0.05" length = "1"  />
			</geometry>
			<material name = "gray C">
				<color rgba = "0.5 0.5 0.5 1" />
			</material>
		</visual>
	</link>

	<!-- joints section -->>
	<joint name = "joint A" type = "continuous">
		<parent link = "link A" />
		<child link = "link B" />
		<origin xyz = "0 0 -0.05" />
		<axis xyz = "0 1 0" />
	</joint>
	<joint name = "joint B" type = "continuous">
		<parent link = "link B" />
		<child link = "link C" />
		<origin xyz = "0 0 -1" />
		<axis xyz = "0 1 0" />
		<dynamics damping ="0.002" />
	</joint>
</robot>

2. 代码解读
上面的代码建立了一个名叫“linkage”的机械模型,该模型包括了三个连杆,分别为link A,link B,link C。parent 和 child 主从关系展示了连杆之间的连接方式,Link A 跟link B通过关节 joint 1连在一起,link B 为child link;Link B和link C通过关节joint 2 连在一起,link C为child link。Link A没有parent link,因此为root link,也就是所谓的根连杆。

Link A 中的 inertial 部分定义了link A的重量,惯量矩和惯量积。注意:urdf单位遵循 SI 单位标准。Link A 的 visual 部分定义了连杆的几何形状和颜色。该连杆的形状是一个宽和长度都为0.5m,高为0.1m的方形。 inertial,visual 里的 origin 部分定义了从参考坐标系到惯性参考坐标系和视觉参考坐标系的变换。类似的定义在link B和link C里面也能看到。

joint 里面的类型属性定义了关节类型为continuous,一种没有转动上下限的转动关节。 origin 定义了转动轴相对于参考坐标系的位置,比如link A里的 origin 部分定义了转轴相对于参考坐标系-z方向有着0.05m的位移。并且该关节是以[0,1,0]也就是+y轴为转轴进行旋转的。

下图展示了该模型的所有模块——连杆和关节以及他们包含的各种坐标系,R代表连杆的参考坐标系,I代表连杆的惯性参考坐标系,V代表连杆的视觉坐标系,J代表关节参考坐标系,默认J与child link的参考坐标系相对静止

在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在ROS的rviz中显示机器模型,需要使用URDF(Unified Robot Description Format)文件来描述机器人的几何和运动学信息。以下是一个简单的步骤来集成URDF和rviz并建立机器模型: 1. 创建一个URDF文件,描述机器人的几何和运动学信息。可以使用文本编辑器编写URDF文件,也可以使用URDF编辑器(如Robotics System Toolbox for MATLAB)来创建URDF文件。 2. 将URDF文件保存在ROS包中的“urdf”文件夹中。 3. 创建一个launch文件,将URDF文件加载到rviz中。以下是一个简单的示例launch文件: ``` <launch> <arg name="model" default="$(find my_robot_description)/urdf/my_robot.urdf" /> <param name="robot_description" textfile="$(arg model)" /> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"> <param name="use_gui" value="true"/> </node> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find my_robot_description)/rviz/my_robot.rviz" /> </launch> ``` 这个launch文件首先定义一个参数“model”,它指向URDF文件的路径。然后,它使用“robot_state_publisher”节点来发布机器人的状态信息,使用“joint_state_publisher”节点来控制机器人的关节状态,并使用“rviz”节点来启动rviz,并加载rviz配置文件。 4. 创建一个rviz配置文件,用于显示机器模型。可以使用rviz的GUI工具来创建配置文件,也可以手动编写配置文件。以下是一个简单的示例配置文件: ``` rviz: background_color: '25 25 25' fixed_frame: base_link perspective_projection: true target_frame: odom marker_topic: /visualization_marker path_topic: /path pose_array_topic: /particlecloud tf_prefix: '' camera: auto_fit: true far_clip_distance: 1000.0 near_clip_distance: 0.01 pitch: -30.0 position: x: 5.0 y: 0.0 z: 5.0 show_frustum: true show_target_frame: true target_frame: odom track_camera: false track_target: true use_fixed_frame: true view_controller: 'rviz/Orbit' displays: - name: RobotModel enabled: true type: 'rviz/RobotModel' topic: /robot_description - name: TF enabled: true type: 'rviz/TF' update_rate: 0.0 - name: Grid enabled: true type: 'rviz/Grid' cell_count: 40 color: '220 220 220' plane: 'XY' cell_size: 0.5 line_width: 0.1 ``` 这个配置文件定义了rviz的背景颜色、固定帧、透视投影等参数,以及显示机器模型、坐标系、网格等信息的方式。 5. 启动launch文件,开始显示机器模型。在终端中运行以下命令: ``` roslaunch my_robot_description display.launch ``` 这将启动rviz,并加载URDF文件和配置文件,显示机器模型。 注意:在运行launch文件之前,需要确保已经正确安装了ROS和rviz,并且已经创建了一个ROS包,用于存放URDF文件和rviz配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值