ROS中3D机器人建模(一)
一,机器人建模的ROS软件包
*urdf : 机器人建模最重要的ros软件包是urdf软件包。这个软件包包含一个用于统一机器人描述格式(URDF)的C++解析器,它是一个表示机器人模型的XML文件,还有一些其他不同的组件来组成urdf:
*urdf_parser_plugin : 这个软件包实现了写入URDF数据结构的方法:
*urdfdom_headers : 此组件提供了使用urdf解析器的核心数据结构头文件:
*collada_parser : 这个软件包通过解析Collada文件来填充数据结构:
*urdfdom : 此组件通过解析URDF文件来填充数据结构:
*collada-dom : 这是一个独立组件,可以使用Maya,Blender和Softtimage等3D计算机图形软件对Collada文档进行转换。
我们可以使用URD来定义机器人模型,传感器和工作环境,使用URDF解析器对其进行解析。我们只能使用URDF描述一个类似树状连杆结构机器人,也就是说,机器人会有刚性连杆,并通过关节连接,我们无法用URDF表达柔性连杆。
URDF由特殊的XML标签构成,我们可以使用解析器程序解析这些XML标签以进一步处理。
*joint_state_publisher : 在使用URDF设计机器人模型时,该软件非常有用。这个软件包包含一个名为joint_state_publisher的节点,该节点读取机器人模型描述,查找所有关节,并利用GUI滑动条将关节值向所有非固定关节发布。
*kdl_parser : 运动学和运动学库(Kinematic and Dynamics,KDL)是一个ROS软件包,它包含解析器工具,可以从URDF表示中构建KDL树,运动学树可以用来发布关节的状态,也可以用来表示机器人的正/逆运动学。
*robot_state_publisher : 该软件包可以读取当前机器人的关节状态,并发布由URDF构建的运动学树中每个机器人连杆的3D姿态。
*xacro : Xacro是XML Macro 的缩写,xacro可理解为URDF加上若干插件。xacro包含一些插件,让URDF变得更简短。可读性更好,并且可以用于构建复杂的机器人描述,利用ROS相应的工具,可以在需要的时候将xacro转换成URDF。
二,利用URDF理解机器人建模
我们已经讨论了urdf软件包,将进一步研究URDF XML标签,它有助于机器人建模,我们必须创建一个文件,并编写机器人的每个连杆和关节之间的连接关系,并用.urdf扩展名保存文件。
下面是组成URDF机器人模型常用的URDF标签:
*link : link标签表示机器人的单个连杆。使用此标签,我们可以为机器人的一个连杆及其属性建模。该模型包括大小、形状和颜色,甚至可以导入一个3D网络来表示机器人的连杆。我们还可以提供连杆的动态属性,如惯性属性和碰撞属性。
语法如下:
<link name ="<name of the link>">
<inertial>......</inertial>
<visual> ......</visual>
<collision> ......</collision>
</link>
*joint : joint标签表示机器人关节。我们可以指定关节的运动学和动力学,并设定关节运动和速度的极限。
joint标签支持不同类型的关节,如旋转关节(revolute),无限位旋转关节(continuous),滑动关节(prismatic),固定关节(fixed),浮动关节(floating)和平面关节(planar).
语法如下:
<joint name = "<name of the joint>">
<parent link="link1"/>
<child link="link2"/>
<calibration .... />
<dynamics damping .... />
<limit effort .... />
</joint>
在两个连杆之间会形成一个URDF关节。第一个被称为父连杆(parent),第二个被称为子连杆(child).
*robot : 这个标签封装了用URDF表示的整个机器人模型。在robot标签内,我们可以定义机器人的名字、各个连杆,以及机器人的各个关节。
语法如下:
<robot name= "<name of the robot>"
<link> .... </link>
<link> .... </link>
<joint> .... </joint>
<joint> .... </joint>
</robot>
*gazebo : 当我们在URDF中包含Gazebo仿真器的仿真参数时,使用这个标签。我们可以用这个标签包含gazebo插件、gazebo材料属性等。
以下是一个使用gazebo标签的例子:
<gazebo reference="link_1">
<material>Gazebo/Black</material>
</gazebo>
三,为机器人创建ROS软件包
为机器人创建URDF文件之前,让我们在catkin_ws的工作空间src目录下创建一个ROS软件包来保存机器人模型:
$ catkin_create_pkg mastering_ros_robot_description_pkg roscpp tf geometry_msgs urdf rviz xacro
该软件包主要依赖于urdf和xacro软件包
而我是直接从git库中下载的完整的软件包
$ git clone https://github.com/jocacace/mastering_ros_robot_description_pkg.git
ROS中3D机器人建模(一)的更多相关文章
- ROS中3D机器人建模(四)
一.创建一个7-DOF机械臂机器人 创建一个名为seven_dof_arm.xacro的文件,写入相应的代码,其关节名称如下: bottom_joint shoulder_pan_joint shou ...
- ROS中3D机器人建模(五)
一.创建一个差速驱动移动机器人模型 前面我们已经创建了一个7-DOF机械臂机器人模型,接下来我们将创建一个差速机器人模型,差速轮式机器人在机器人底盘的两端安装两个轮子, 整个底盘由一个或两个脚轮支撑. ...
- ROS中测试机器人里程计信息
在移动机器人建图和导航过程中,提供相对准确的里程计信息非常关键,是后续很多工作的基础,因此需要对其进行测试保证没有严重的错误或偏差.实际中最可能发生错误的地方在于机器人运动学公式有误,或者正负号不对, ...
- ROS中的3D建模机器人(三)
一.利用xacro理解机器人建模 当我们创建复杂的机器人模型时,URDF的灵活性将会降低,URDF缺少的主要特性是简单的.可重用性,模块化和可编程性. URDF是一个单独的文件我们不能在它里面包含其他 ...
- ROS中的3D机器人建模(二)
一,创建我们的第一个URDF模型 我们设计的第一个机器人模型是pan-and-tilt机械结构,代码如下 pan_tilt.urdf: 1 <?xml version="1.0&quo ...
- 机器人操作系统(ROS)教程22:ROS的3D可视化工具—rviz
rviz是ROS中的一个3D可视化工具,有了它就可以把你用代码建的机器人模型转化为可视的3D模型. 首先需要安装: rosdep install rviz 然后编译rviz: rosmake rviz ...
- ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0
ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0 ROS kinetic中的gazebo版本是7.0,有很多新的特性. 首先,启动gazebo: ~$ gaz ...
- ROS中发布激光扫描消息
激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程.限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”.使用激光雷 ...
- 对比几种在ROS中常用的几种SLAM算法
在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是 ...
随机推荐
- 20191114-2 Beta阶段事后诸葛亮会议
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10005 组长组“多彩夕阳”项目beta阶段诸葛亮会议 设想和目标 1.我 ...
- 01_console 你真的了解吗,不曾了解过得console~
对于 console 你只知道 console.log 吗? 那你就 out 啦!!! // 1. 显示信息 console.log('hello'); console.info('信息'); con ...
- Snipaste - 可以提高你工作效率的截图软件
使用Snipaste提高您的工作效率 Snipaste是一个简单但功能强大的剪切工具,还允许您将屏幕截图固定在屏幕上.下载并启动应用程序,按F1开始剪切,然后按F3将其粘贴为浮动窗口.而已! 您还可以 ...
- 解释一下什么是 aop?(未完成)
解释一下什么是 aop?(未完成)
- 一起来立Flag吧!超炫的数据图表分析 2020 年 Java 技术趋势
引言 2020 来了,第一批 00 后已经 20 岁了,95 后也到了晚婚的年龄,员外的头发也越来越少了,新的一年大家有立下了哪些 Flag ?小伙伴们别急着立 Flag,让员外帮你分析一下哪些技术正 ...
- 单用户登陆demo-后者挤到前者,类似QQ
单用户登陆demo ,采用的是Tp5. 流程是,当用户首次登陆是验证用户帐号密码,成功的,用当前时间戳加上用户id和ip 拼接成一个标识,暂且sign ,然后存入cookie ,时间戳存入缓存redi ...
- 2019年全网最热门的123个Java并发面试题总结
前言 并发编程几乎是所有互联网公司面试必问的问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能.它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰.思维缜密, ...
- Spring循环依赖的解决
## Spring循环依赖的解决 ### 什么是循环依赖 循环依赖,是依赖关系形成了一个圆环.比如:A对象有一个属性B,那么这时候我们称之为A依赖B,如果这时候B对象里面有一个属性A.那么这时候A和B ...
- 更加清晰的TFRecord格式数据生成及读取
TFRecords 格式数据文件处理流程 TFRecords 文件包含了 tf.train.Example 协议缓冲区(protocol buffer),协议缓冲区包含了特征 Features.Ten ...
- 【Magicodes.IE 2.0.0-beta1版本发布】已支持数据表格、列筛选器和Sheet拆分
为了更好的完善Magicodes.IE,春节期间我们会进行一次大的重构.由于精力有限,急缺文档和翻译(将文档翻译为英文文档)支持,诚邀各位加入.同时在功能方便也做了相关规划,有兴趣的朋友可以参与提交P ...