《精通ROS机器人编程(原书第2版) 》 —3 在ROS中为3D机器人建模

举报
华章计算机 发表于 2020/02/10 15:58:08 2020/02/10
【摘要】 本节书摘来自华章计算机《精通ROS机器人编程(原书第2版) 》 一书中第3章,第3.1节,作者是[印度]郎坦·约瑟夫(Lentin Joseph)[意大利]乔纳森·卡卡切(Jonathan Cacace),张新宇 张志杰 等译 。

第3章

在ROS中为3D机器人建模

机器人制造的第一个阶段是设计和建模。这里我们可以使用CAD软件对一个机器人进行设计和建模,例如AutoCAD、SOLIDWORKS和Blender。机器人建模的主要目的之一就是仿真。

机器人仿真工具可以检查机器人设计中的关键缺陷,也可以确认机器人在进入制造阶段之前是否可以正常工作。

虚拟机器人模型必须具有真实硬件的所有特性。机器人的外形可能与实际的机器人相似,也可能与实际的机器人不相似,但它必须是抽象的,应具有实际机器人的所有物理特性。

在本章中,我们将讨论两类机器人的设计。一个是七自由度(7 Degrees of Freedom,7-DOF)机械手臂,另一个是差速驱动机器人。在接下来的章节中,我们将讨论仿真,如何构建真实硬件以及与ROS的接口。

如果我们计划创建机器人的3D模型并使用ROS对其进行仿真,那么你需要了解一些有助于机器人设计的ROS软件包。出于各种不同的原因,在ROS中为机器人创建一个模型是很重要的。例如,我们可以使用这个模型来仿真并控制机器人,将其可视化,或者使用ROS工具获取机器人的结构及其运动的信息。

ROS有一个标准的超软件包robot_model,用于设计和创建机器人模型。它由一组软件包组成,其中一些软件包被称为urdf、kdl_parser、robot_state_publisher和collada_urdf。这些软件包可以帮助我们创建具有真实硬件准确特征的3D机器人模型描述。

本章将介绍以下内容:

用于机器人建模的ROS软件包

为机器人描述创建ROS软件包

使用URDF理解机器人建模

使用xacro理解机器人建模

将xacro转换为URDF

为一个7-DOF机器人机械臂创建机器人描述

关节状态发布和机器人状态发布协同工作

创建一个差速轮式机器人描述

3.1 机器人建模的ROS软件包

ROS提供了一些很有用的软件包,可以用来创建3D机器人模型。

在本节中,我们将讨论一些普遍用于创建机器人模型的重要的ROS软件包:

urdf:机器人建模最重要的ROS软件包是urdf软件包。这个软件包包含一个用于统一机器人描述格式(Unified Robot Description Format,URDF)的C++解析器,它是一个表示机器人模型的XML文件。还有一些其他不同的组件来组成urdf:

urdf_parser_plugin:这个软件包实现了写入URDF数据结构的方法;

urdfdom_headers:此组件提供了使用urdf解析器的核心数据结构头文件;

collada_parser:这个软件包通过解析Collada文件来填充数据结构;

urdfdom:此组件通过解析URDF文件来填充数据结构;

collada-dom:这是一个独立组件,可以使用Maya、Blender和Softimage等3D计算机图形软件对Collada文档进行转换。

我们可以使用URDF来定义机器人模型、传感器和工作环境,使用URDF解析器对其进行解析。我们只能使用URDF描述一个类似树状连杆结构的机器人,也就是说,机器人会有刚性连杆,并通过关节连接。我们无法用URDF表达柔性连杆。URDF由特殊的XML标签构成,我们可以使用解析器程序解析这些XML标签以进行进一步处理。在后面的部分我们会使用URDF进行建模:

joint_state_publisher:在使用URDF设计机器人模型时,该工具非常有用。这个软件包包含一个名为joint_state_publisher的节点,该节点读取机器人模型描述,查找所有关节,并利用GUI滑动条将关节值向所有非固定关节发布。用户可以用该工具与机器人的每个关节进行交互,也可以使用RViz进行可视化。在设计URDF时,用户可以使用此工具验证每个关节的旋转和平移。我们将在后面详细讨论joint_state_publisher节点及其用法。

kdl_parser:运动学和动力学库(Kinematic and Dynamics Library,KDL)是一个ROS软件包,它包含解析器工具,可以从URDF表示中构建KDL树。运动学树可以用来发布关节的状态,也可以用来表示机器人的正/逆运动学。

robot_state_publisher:该软件包可以读取当前机器人的关节状态,并发布由URDF构建的运动学树中每个机器人连杆的3D姿态。机器人的3D姿态以ROS tf (transform)的形式发布。tf 发布了机器人各坐标系之间的关系。

xacro:Xacro是XML Macros的缩写,xacro可理解为URDF加上若干插件。xacro包含一些插件,让URDF变得更简短、可读性更好,并且可以用于构建复杂的机器人描述。利用ROS相应的工具,可以在需要的时候将xacro转换为URDF。我们将在以后的章节学习xacro及其用法。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。