注:本篇博文全部源码下载地址为:Git Repo传送门。

1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译。

2. 源码是在 Ubuntu14.04 + Indigo 环境下编写。

前面博文已经介绍了机器人平台的机械结构设计、嵌入式硬件平台的搭建等内容,从本片开始介绍本开源机器人平台ROS系统的相关程序,主要有:

ROS系统建模;

Gazebo仿真;

ROS系统机器人SLAM框架;

SLAM中Gmapping和地图构建;

SLAM中AMCL算法;

机器人正逆运动学;

路径规划;

ROS系统与机器人视觉;

ROS系统与语音交互;

。。。

随着本开源项目展开,所有的代码都会公开源码且GitHub托管。需要注明的是:

这里的开源的代码全部是基于X86平台的Linux开发的;

代码中很多是和嵌入式平台(小车运控板)交互的内容,小车的嵌入式软件所有的源代码后面也会分几篇博文介绍并全部公开。

OK,现在开始介绍机器人在ROS系统的建模方法,这里可以参考博主之前写的一篇双臂机器人的ROS建模方法(传送门),在开始动手自己建模之前,强烈推荐先精读ROS系统最基本的建模相关的语法介绍:

Urdf/XML详解(传送门)

XML macro language—Xacro(传送门)

经过这两篇文章的学习,基本可以掌握ROS系统的模型描述文件的基本语法,本开源平台仍然采用Xacro文件进行模型建立。

一、模型描述文件中网格(mesh)文件的生成

前面的文章已经介绍了本开源机器人平台的机械结构设计(传送门),下面简单讲解一下模型描述文件中的引用三维网格文件的生成。Urdf/Xacro文件中支持两种网格三维文件类型:.STL文件类型和 .DAE文件类型。

生成 .STL文件类型:

我们利用SolidWorks创建机器人三维模型之后,首先可以直接保存成STL文件类型。

Tips:SW中从装配体(或零件)保存到STL文件时可以先创建参考坐标系,然后另存为的时候,在选项中选择参考坐标系就可以在模型上自定义坐标系的位置。

生成 .DAE文件类型:

在上一步生成的STL的基础上,利用三维动画制作软件Blender生成 .DAE文件,很简单,只需要在“文件”下拉菜单中“导入”菜单经文件导入,然后用“导出”菜单选择导出成 .DAE格式的文件即可。

二、 模型描述文件的编写

本开源机器人建模文件集成在homerobot_description软件包(package)里面,可以在本篇文章开头给出的代码仓下载,该package的文件树结构如图1所示:

图1  homerobot_description包文件树

其中模型描述文件名称为:homerobot.xacro,这里截取几个比较重要的片段解释一下。

1. 开始的一些宏定义和声明就不做解释了,base_footprint相关定义如下:

这个坐标系(base_footprint)不是必须的,而是习惯性的写法,它是人为定义出来的一个可以称作为“影子”的坐标系,它和base_link唯一的不同点就是Z坐标上的值不同。这里我们先绘制了一个非常小的正方体(geometry)作为连杆(link),然后规定了关节(joint)的属性,即base_link和base_footprint的连接关系。

2. 关于base_link的定义

这里就涉及到引用.dae文件的语法了:

由于我们的三维网格文件base_link.dae提前就生成好了,所以这里直接引用就可以了,后面我们会通过可视化工具看到,这里link和joint的语法参考文章前面给出的详解文档,此外,这里有一个宏定义的引用语句:

这里引用开头定义的宏:转动惯量矩阵计算,然后将质量参数(mass="5")传入宏就指明了base_link的惯量矩阵。语句指出了base_link的碰撞检测范围,这里可以引用本体,也可以人为扩大一个范围。

3. 主动轮的定义

这里有几个参数值得注意:

指定了转轴为Z轴;

最大的驱动力矩和最大转速均设定为100,这里可以根据不同平台修改,其中,速度单位对于移动副来说是m/s,对于转动副来说是rad/s,这里joint的类型type是continuous,即连续转动,因此这里单位是后者。

4. Xacro文件的include用法

在Xacro文件中同样可以引用外部的一些设置文件,在这里有一句:

这里引用了homerobot_description包下面的homerobot.gazebo文件,这个文件是对机器人在gazebo仿真环境下的一些仿真参数设置,后面分一篇博文详细讲讲ROS系统与Gazebo仿真环境。

三、ROS系统和Rviz可视化工具

ROS系统非常好的集成了Rviz这一可视化调试工具,大大方便了机器人开发调试的工作(除了偶尔会crash,这个工具真的非常赞)。这里我们当然要用可视化工具看看上面编写完成的机器人模型描述文件,编写launch文件,名称为:description.launch,内容如下:

关于如何理解launch文件,请参考官方文档(传送门)。如果一切正常的话就会看到下面的图示效果。

图2 机器人平台在Rviz中

四、ROS系统的tf tree(空间坐标变换树)

这里tf应该是transform的缩写,是指空间中两个三维坐标系的转换关系,这种转换关系一般可以分为:平移和旋转。表征这些转换关系的方法也有很多,比较常用的就是:

齐次转换矩阵

欧拉角(RPY)

四元数

其实他们这件是可以相互转化的。

前面有一篇博文:ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模(传送门)中有简单介绍了空间坐标系的基础知识。

具体到ROS系统中,它提出了tf tree的概念,也就是在建模的时候你就已经指定了一个机器人一共有几个坐标系,各个坐标系之间的转换关系是如何的(上面xacro文件中的link和joint定义的时候就已经说明了各个零部件之间的位置关系和运动关系),如果有信息缺失则tf tree一定是有缺失的。ROS系统提供了tf查看工具,在命令行运行:

rosrun rqt_tf_tree rqt_tf_tree

就可以得到下图所示的效果,我们可以直观的看出各个link之间的转换关系。

图3 tf树截图

欢迎留言、私信、邮箱、微信等任何形式的技术交流。

作者信息:

名称:Shawn

邮箱:zhanggx0102@163.com

ros构建机器人运动学模型_ROS系统玩转自主移动机器人(5)-- ROS系统建模相关推荐

  1. ros构建机器人运动学模型_ROS入门学习之八机器人综合应用

    1.ROS机器人实例介绍(PR2,Turtlebot,HRMRP,Kungfu Arm) 1).PR2:造就了ROS的机器人平台,完全基于ROS开发,功能丰富.强大 2).Turtlebot:ROS社 ...

  2. ros构建机器人运动学模型_ROS环境下的机器人仿真模型构建方法研究

    现代电子技术 Modern Electronics Technique 2018 年 4 月 1 日 第 41 卷第 7 期 Apr. 2018 Vol. 41 No. 7 DOI : 10.1665 ...

  3. ros构建机器人运动学模型_ROS环境下机器人仿真模型构建方法研究.doc

    ROS环境下机器人仿真模型构建方法研究 ROS环境下机器人仿真模型构建方法研究 摘 要: 在众多的机器人仿真平台中,ROS可以封装机器人硬件.提出在ROS环境下构建机器人的仿真模型方法.设计了机器人仿 ...

  4. ros构建机器人运动学模型_ROS机器人底盘(4)-3D仿真模型

    ROS中通过RVIZ可视化机器人导航情况,其中,URDF(Unified Robot Description Format)是统一的机器人描述文件,此类文件通过HTML格式定义机器人模型(Robot ...

  5. ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!

    ~欢迎关注~ 微信公众号:古月居 新浪微博:古月春旭 知乎专栏:古月居 原文链接:古月私房课 | ROS机械臂开发中的主角MoveIt! 大家好,这里是<ROS机械臂开发:从入门到实战>的 ...

  6. ros构建机器人运动学模型_机器人开源控制软件 OROCOS

    0. OROCOS 简介 OROCOS,全称 Open Robot Control Software,即机器人开源控制软件:如张新宇老师在ROS史话36篇 | 20. ROS之KDL中所说:" ...

  7. ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍

    ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍 本机器人机械结构设计相关的所有设计文件下载地址为:传送门  其中包含:三维造型设计文件(所有零件+装配效果)(tips:基于Solidwor ...

  8. ROS系统玩转自主移动机器人(2)--机器人机械结构设计

    ROS系统玩转自主移动机器人(2)--机器人机械结构设计 在开始介绍本开源项目的机械结构设计之前,先和博友们用一篇博文分享一下机械设计工作相关的特点.性质.抛出结论:笔者觉得在机器人领域,机械结构设计 ...

  9. SCARA机器人运动学模型建立

    1 DH模型 DH模型是目前机器人建模过程中使用最多的方法.此方法不仅简单好用,且适用范围广.如图表达了通用关节-连杆之间相对位置关系. 关节-连杆组合之间位置关系 D-H 建模第一步便是为关节定义坐 ...

最新文章

  1. 《ORACLE PL/SQL编程详细》,游标 ,函数,触发器。。
  2. MyBatis-Plus 乐观锁 防止超卖、逻辑删除、自动填充、Id自增
  3. Java小游戏 —— 德州扑克
  4. 简而言之SPIFFE
  5. Java 7的类型推断
  6. 考研还是直接工作?嵌入式or前端
  7. mac java安全_关于 Java for Mac OS X 10.4 发行版 7 的安全性内容
  8. 怎样维系和监督多项计划
  9. 关于mysql查询_关于mysql的查询
  10. 阿里云ace考试有什么用?想要通过需要掌握哪些方面知识?
  11. 第十五章 文件读写
  12. 怕扫描王泄露数据?5分钟自建一个文档扫描器。——基于opencv
  13. a = a + 1,a+=1, a++, ++a 区别在哪
  14. 零基础入门无人机--无人机概述--1
  15. 使用VNC远程连接云服务器,连接超时问题
  16. 网络文件共享服务之NFS
  17. Vue实现顶部导航栏设计
  18. swust oj#160促销计算
  19. c语言中多线程的执行顺序,ReentrantLock实现 多线程顺序执行任务
  20. 协程大批量爬取是要被封IP的,最优秀的方法就是在被封IP时候立马切换IP

热门文章

  1. AX210 PCIE网卡 安装记录(linux)
  2. java 找出重复的数据_java 查找list中重复数据实例详解
  3. excel怎样制作html,HTML_Excel/Access 97 网页制作速成,一、 利用Excel 97制作网页 - phpStudy...
  4. 尼古拉·特斯拉——一个比爱迪生更伟大却被世界遗忘的科学巨人
  5. 2022Java面试题大全(整理版)面试题附答案详解,最全面详细
  6. 一个SAP程序员的2020年度总结:未知生,焉知死
  7. JAVA swing实现简单增删改查
  8. android时钟字体,抖音文字云时钟app-抖音文字云时钟安卓版(word clock)v1.0下载
  9. 有道云笔记Markdown编辑器 基础操作使用说明
  10. 完美解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource的问题