在机器人的科研与工业应用中,机器人仿真与编程技术发挥着无可替代的作用,因为它一方面能够对机器人控制算法进行检验测试,另一方面给机器人的研发与测试提供一个无风险且稳定的平台。
本书主要内容分为三部分,分别介绍了基于MATLAB机器人工具箱的机器人仿真、3款常用的机器人仿真软件、机器人操作系统(Robot Operating System,ROS)的基础和应用。本书所使用的工具包括MATLAB、Simulink、3款常用的机器人仿真软件和机器人操作系统。
本书配套资源丰富,适合作为教材或教辅,也适合各阶层的机器人开发人员和机器人爱好者阅读。
《机器人仿真与编程技术》主要分为三篇,*篇介绍了基于MATLAB机器人工具箱的机器人仿真,第二篇介绍了三款常用的机器人仿真软件,第三篇介绍了机器人操作系统(Robot Operating System,简称ROS)的基础和应用。《机器人仿真与编程技术》中所使用的工具包括了MATLAB/SIMULINK、几款常用的机器人仿真软件、机器人操作系统(ROS)。这些工具一方面可以用于机器人学的理论知识进行实际验证与研究,另一方面用于对机器人的设计、仿真与测试。同时,这些工具大多具有开源的特点,而且它们相互之间有方便快捷的接口,能够发挥各自的优势,实现更强大的仿真、编程功能。如今,这些仿真工具都已广泛应用于机器人设计、研发和科学研究等方面,尤其是机器人操作系统越来越成为机器人领域中重要的应用系统。
前言
机器人技术是衡量一个国家科技创新和高端制造业水平的重要标志。随着机器人技术的快速发展,它的应用领域涉及工业、服务、航空航天、军事等方面,因此需要一批熟练掌握机器人技术的创新型人才。
传统的机器人教材大多侧重于对机器人学理论知识的探讨,往往涉及比较多的矩阵理论、控制理论的知识,对于读者来说比较抽象。另一方面,这些知识面难以培养读者的动手能力,难以取得良好的实践效果。因此需要将理论与实践相结合。本书将机器人学的理论和应用相结合,一方面概要地介绍了机器人学的理论,另一方面着力于介绍机器人的仿真和编程技术。
在机器人的科研与工业应用中,机器人仿真与编程技术发挥着无可替代的作用,这是因为它一方面能够对机器人控制算法进行检验测试,另一方面给机器人的研发与测试提供一个无风险且稳定的平台。本书所使用的工具包括MATLAB/Simulink、3款常用的机器人仿真软件和机器人操作系统(Robot Operating System,ROS)。这些工具一方面可以用于将机器人学的理论知识进行实际验证与研究,另一方面用于对机器人进行设计、仿真与测试。同时,这些工具大多具有开源的特点,而且它们相互之间有方便快捷的接口,能够发挥各自的优势,实现更强大的仿真、编程功能。如今,这些仿真工具都已广泛应用于机器人设计、研发和科学研究等方面,尤其是机器人操作系统,成为机器人领域越来越重要的应用系统。
本书的内容主要分为三篇,第一篇介绍了基于MATLAB机器人工具箱的机器人仿真,第二篇介绍了3款常用的机器人仿真软件,第三篇介绍了机器人操作系统的基础和应用。
在第一篇中,从机器人学的理论入手,讲述了机器人学中的数学基础、机器人运动学、机器人动力学、机器人控制和轨迹。然后针对每一部分理论内容,介绍了如何使用MATLAB机器人工具箱去解决相关的问题。最后,以作者的一些科研成果作为实例,介绍了MATLAB机器人工具箱在科研中的应用。
在第二篇中,介绍了3款机器人仿真软件: VREP、Gazebo和OpenRAVE。它们作为机器人的仿真工具,能够对机器人及其工作平台进行3D建模和3D渲染,搭建与现实类似的机器人模型,并具备丰富的物理引擎,能够对机器人在虚拟的物理条件下的运动进行仿真。
在第三篇中,主要介绍了机器人操作系统。ROS是一个适用于机器人的开源的操作系统。它提供了操作系统应有的服务,包括硬件抽象、底层设备控制、常用函数的实现、进程间消息传递,以及包管理。它也提供用于获取、编译、编写和跨计算机运行代码所需的工具和库函数。这部分主要讲述了ROS的概念、应用和相关的基础,然后以Baxter机器人为应用对象,介绍了ROS在机器人中的相关编程技术。
本书适用于高校的教师作为教材或教辅,同时适合各层次的机器人开发人员和机器人爱好者阅读。教师在以本书作为教材时,可以利用本书提供的工具,布置一些能够锻炼学生动手能力、激励学生创新思维的课程作业。初学机器人学的学生在阅读本书时,可以参考一些对于机器人学理论介绍更全面的书籍,同时要利用好本书介绍的工具,去动手搭建机器人模型或编写相关代码。
在本书的编写过程中得到了编者所在实验室曾超、罗晶、王行健、彭光柱、吴怀炜、陈垂泽、陈雄君、叶宇航、王尊冉、黄典业、梁聪垣等的支持和帮助,编者在此表示谢意。
由于编者水平有限,对于书中存在的欠缺之处,敬请读者批评指正。
作者
2017年11月
目录
第一篇基于MATLAB工具箱的机器人仿真
第1章机器人学与MATLAB机器人工具箱
1.1MATLAB机器人工具箱的下载与安装
1.2机器人学的数学基础
1.2.1三维空间中的位置与姿态
1.2.2坐标变换
1.2.3姿态的其他表示方法
1.2.4具体例子的应用
1.3机器人运动学
1.3.1机械臂及运动学
1.3.2DH参数法
1.3.3机器人正运动学
1.3.4机器人逆运动学
1.3.5机器人的瞬态运动学
1.3.6具体例子的应用
1.3.7机器人工具箱的Link类
1.3.8机器人工具箱的SerialLink类1
1.4机器人动力学
1.4.1机器人动力学概述
1.4.2机器人动力学方程的建立方法
1.4.3状态空间方程
1.4.4正向动力学
1.4.5机器人工具箱的SerialLink类2
1.5机器人的运动轨迹
1.5.1运动轨迹问题
1.5.2关节空间的规划方法
1.6机械臂关节控制
1.6.1机器人控制系统的构成
1.6.2Simulink机器人模块
1.6.3机器人的单关节控制
1.6.4机器人的多关节控制
1.7其他基于MATLAB的机器人工具箱
1.7.1Kuka控制工具箱(KCT)的介绍与测试
1.7.2其他机器人工具箱
本章小结
参考文献
第2章MATLAB机器人工具箱的应用
2.1基于学习算法的机器人触觉识别算法研究
2.1.1引言
2.1.2背景
2.1.3算法设计
2.1.4实验设计
2.1.5实验与结果
2.2基于波动变量和神经网络的远程控制系统
2.2.1引言
2.2.2远程操作系统的数学模型
2.2.3基于波动变量的神经控制设计
2.2.4实验设计
2.2.5仿真实验
2.3开发混合运动捕捉方法使用MYO手环应用于远程操作
2.3.1引言
2.3.2设计方法
2.3.3仿真系统设计
2.3.4仿真实验
2.4基于自适应参数识别的Geomagic
Touch X触觉装置运动学建模
2.4.1引言
2.4.2建模步骤
2.4.3仿真设计
2.4.4实验和仿真
2.4.5可视化运动学模型与工作空间识别
2.5复杂扰动环境中的新型机械臂混合自适应控制器
2.5.1引言
2.5.2控制问题
2.5.3自适应控制
2.5.4仿真
2.5.5实验设计
2.5.6实验与结果
本章小结
参考文献
第二篇机器人仿真软件的基础与应用
第3章VREP在机器人仿真中的应用
3.1VREP简介及安装
3.1.1VREP的简介
3.1.2VREP的特性
3.1.3VREP的安装
3.2VREP的用户界面及位姿操作
3.2.1控制台窗口
3.2.2对话框
3.2.3应用程序窗口
3.2.4自定义用户界面
3.2.5页面与视图
3.2.6对象/项目位置和方向操作
3.3VREP的场景与模型
3.3.1场景与模型的关系
3.3.2VREP的场景
3.3.3VREP的模型
3.3.4VREP的环境
3.4实体
3.4.1VREP的场景对象
3.4.2场景对象的性质
3.4.3常用的场景对象形状
3.4.4常用的场景对象关节
3.4.5VREP的集合
3.5VREP的六种计算模块
3.5.1碰撞检测模块
3.5.2最小距离计算模块
3.5.3逆向运动学模块
3.5.4几何约束求解模块
3.5.5动力学模块
3.5.6路径规划模块
3.6VREP中控制机器人仿真的方法
3.6.1嵌入式子脚本
3.6.2插件
3.6.3附加组件
3.6.4远程客户端应用程序接口
3.6.5通过ROS的节点
3.6.6自定义解决方案
3.7VREP的API框架
3.7.1常规API
3.7.2远程API
3.7.3ROS接口
3.7.4辅助API
3.7.5其他接口
3.8仿真模型的搭建
3.8.1从模型浏览器中加载现有模型
3.8.2从菜单栏中添加场景对象
3.8.3从Import命令中导入/导出其他软件的CAD模型
3.9机器人的仿真
3.9.1物理引擎的选择
3.9.2仿真参数的设置
3.9.3仿真的控制
3.10VREP的具体例子
3.10.1机械臂模型的构建
3.10.2逆运动学建模
3.10.3VREP与MATLAB连接的例子
3.11VREP在人机交互中的应用(一)
3.11.1触觉学与Touch X
3.11.2Touch X的相关软件在人机交互中的作用
3.11.3CHAI3D在人机交互中的作用
3.11.4VREP模块
3.11.5Touch X控制VREP中KUKA机器人的实现
3.12VREP在人机交互中的应用(二)
3.12.1体感技术与Kinect
3.12.2交互相关软件的作用
3.12.3交互相关软件的安装与测试
3.12.4OpenNI/NITE中的人体骨架分析
3.12.5VREP与Kinect接口的安装与测试
3.12.6Kinect与VREP交互的设计与实现
本章小结
参考文献
第4章Gazebo在机器人仿真中的应用
4.1Gazebo的介绍与安装
4.1.1Gazebo的初步介绍
4.1.2Gazebo的安装
4.1.3Gazebo与VREP的比较
4.2Gazebo的结构
4.2.1Gazebo的运行方法
4.2.2Gazebo的组成部分
4.2.3Gazebo的结构
4.3创建机器人
4.3.1模型结构和要求
4.3.2模型的上传
4.3.3制作一个模型
4.3.4制作移动机器人模型
4.3.5导入网格
4.3.6附加网格物体
4.3.7给机器人添加传感器
4.3.8做一个简单的夹持器
4.3.9在机器人上构建夹持器
4.3.10嵌套模型
4.3.11模型编辑器
4.3.12盒子的动画
4.3.13三角网格的惯性参数
4.3.14图层可见性
4.4Gazebo中的模型编辑器
4.4.1模型编辑器
4.4.2SVG文件
4.5场景文件的创建
4.5.1创建一个场景
4.5.2修改场景
4.5.3如何在Gazebo中使用DEM
4.5.4模型群
4.5.5建筑编辑器
4.6插件的编写
4.6.1一个简单的插件: Hello WorldPlugin!
4.6.2插件的使用
4.6.3模型插件
4.6.4世界插件
4.6.5程序化场景控制
4.6.6系统插件
4.7传感器
4.7.1传感器噪声模型
4.7.2接触式传感器
4.7.3摄像头失真
4.8Gazebo的其他功能
4.8.1数学库的使用
4.8.2用户输入
4.8.3连接到Player
本章小结
参考文献
第5章OpenRAVE在机器人仿真中的应用
5.1OpenRAVE简介
5.1.1OpenRAVE的应用
5.1.2OpenRAVE的特性
5.1.3OpenRAVE的下载与安装
5.2OpenRAVE概观
5.2.1OpenRAVE基本架构
5.2.2关于OpenRAVE中的一些说明
5.2.3OpenRAVE公约与准则
5.2.4OpenRAVE中机器人概述
5.2.5插件与接口说明
5.2.6网络协议和脚本
5.3OpenRAVE的基础
5.3.1开始使用OpenRAVE
5.3.2OpenRAVE的命令行工具
5.3.3写OpenRAVE文档
5.3.4环境变量
5.4OpenRAVE运用与展望
5.4.1OpenRAVE的运用项目举例
5.4.2OpenRAVE的展望
本章小结
参考文献
第三篇机器人操作系统基础与应用
第6章机器人操作系统的基础
6.1ROS的安装与测试
6.1.1虚拟机与Ubuntu的安装
6.1.2ROS的安装
6.1.3turtlesim例子的测试
6.2ROS的基本概念与命令
6.2.1程序包(packages)
6.2.2节点(Nodes)和节点管理器(Master)
6.2.3消息(Messages)和主题(Topics)
6.2.4其他ROS的相关概念
6.2.5ROS的一些常用工具
6.3ROS的程序包的创建与编译
6.3.1创建工作区和功能包
6.3.2ROS程序的编译过程
6.4ROS与MATLAB集成
6.4.1RST的ROS功能介绍
6.4.2MATLAB与ROS通信的介绍
6.5ROS与VREP之间的集成
6.5.1VREP中的ROS程序包
6.5.2在ROS中安装VREP
6.5.3在ROS中创建相关的VREP程序包
6.5.4使用ROS节点控制VREP模型的例子
6.5.5VREP ROS Bridge的简介及安装
6.6ROS与Gazebo
6.6.1ROS集成概述
6.6.2安装Gazebo_ros_pkgs
6.6.3ROS/Gazebo版本组合的选择
6.6.4使用roslaunch
6.6.5ROS通信
6.6.6Gazebo中的URDF
6.7实时系统ROS 2.0的介绍
本章小结
参考文献
第7章机器人操作系统的应用
7.1Baxter机器人与ROS
7.1.1Baxter机器人
7.1.2Baxter机器人的控制系统总体框架
7.1.3相关的ROS代码
7.2基于神经网络实现对摇操作机器人进行高性能控制
7.2.1控制系统的架构
7.2.2实验设计与实现
7.2.3实验及结果
7.3规定全局稳定性和运动精度的双臂机器人的神经网络控制
7.3.1实验设计与实现
7.3.2实验结果
7.4基于人体运动捕获对Baxter机器人的远程操作控制
7.4.1远程操作控制系统
7.4.2实验的设计与实现
7.4.3实验及结果
本章小结
参考文献