ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真
urdf Gazebo V-Rep Webots Morse
书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用。
提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用。
补充内容:http://blog.csdn.net/zhangrelay/article/details/50241863
本书翻译基本参考官方推荐用语,如下:
ROS wiki 是一个开放的公共平台,你可以在上面编辑分享对社区有用的信息,比如翻译或编写教程。欢迎大家在这个非盈利性的公共平台上一起维护和分享ROS中文相关资源。
如果你想翻译,只需参考以下指南并自觉按照wiki编辑规范用心翻译:
如何开始翻译(翻译必读),包括翻译时的页面编辑方法、注意事项、约定以及翻译技巧等。
ROS专有词汇中英对照列表,ROS专有词汇中英对照列表,请尽量保持统一。
最佳翻译参考,一些典型词句的翻译方法,仅供参考以保持统一。
贡献者名单,如果你觉得有必要可以自行添加自己的名单,鼓励无名英雄。
目前已完成“初级”和“中级”教程翻译,但还需要保持更新。翻译时最好教程优先,以下是推荐优先翻译的部分:
ROS中文社区及资料,如下:QQ群
361379172【ROS机器人操作系统】,ROSwiki交流分享求助群。
144964398【ROS机器人技术交流群】。
253247353【ROS(机器人操作系统)】。
204907939【Gaitech ROS Forum】,Turtlebot中国代理商Gaitech官方群。
9820986【机器人操作系统】。
109434898【ExBot开源机器人社区】。
184903125【ROS机器人俱乐部】。
论坛及博客
ROS维基社区,由ROS学者从业者自由组成的维基社区,主要解决ROS应用出现的错误大家互相帮助和分享。
ROS机器人俱乐部,自由、分享、开源的中文ROS交流社区。
ROS中文问答网,非营利性ROS中文问答网,answers.ros.org中文版。
ros.gaitech.net,Gaitech官方论坛。
www.robotos.net,由爱好者维护的社区论坛。
blog.exbot.net,易科机器人实验室的博客,包含一些ROS相关的应用教程。
books.exbot.net,易科机器人实验室维护的机器人开源图书,包含一些ROS相关图书。
视频教程
51cto.com,机器人操作系统ROS精品入门视频课程。
官网教程:
非初学者: 如果你已经很熟悉 ROS fuerte(要塞龟)或更早期版本的使用,而只是想使用在groovy(加岛象龟)和hydro(渔龟)中开始采用的最新编译构建系统catkin,那你可以深入学习catkin教程。 但是我们仍然建议所有人学完整个“初级”教程以方便理解新增的功能特性。
如果你是Linux初学者:也许先学习一些有关linux命令行工具的快速使用教程会对你很有帮助,这里有篇好教程(英文)。
核心ROS教程
初级
- 安装并配置ROS环境
本教程详细描述了ROS的安装与环境配置。
- ROS文件系统介绍
本教程介绍ROS文件系统概念,包括命令行工具roscd、rosls和rospack的使用。
- 创建ROS程序包
本教程介绍如何使用roscreate-pkg或catkin创建一个新程序包,并使用rospack查看程序包的依赖关系。
- 编译ROS程序包
本教程介绍ROS程序包的编译方法
- 理解 ROS节点
- 理解ROS话题
- 理解ROS服务和参数
本教程介绍了ROS 服务和参数的知识,以及命令行工具rosservice 和 rosparam的使用方法。
- 使用 rqt_console 和 roslaunch
本教程介绍如何使用rqt_console和rqt_logger_level进行调试,以及如何使用roslaunch同时运行多个节点。早期版本中的rqt工具并不完善,因此,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考这个页面学习使用老版本的“rx”工具。
- 使用rosed编辑ROS中的文件
本教程将展示如何使用rosed来简化编辑过程。
- 创建ROS消息和ROS服务
本教程详细介绍如何创建并编译ROS消息和服务,以及rosmsg, rossrv和roscp命令行工具的使用。
- 编写简单的消息发布器和订阅器 (C++)
本教程将介绍如何编写C++的发布器节点和订阅器节点。
- 写一个简单的消息发布器和订阅器 (Python)
本教程将通过Python编写一个发布器节点和订阅器节点。
- 测试消息发布器和订阅器
本教程将测试上一教程所写的消息发布器和订阅器。
- 编写简单的Service和Client (C++)
本教程介绍如何用C++编写Service和Client节点。
- 编写简单的Service和Client (Python)
本教程介绍如何用Python编写Service和Client节点。
- 测试简单的Service和Client
本教程将测试之前所写的Service和Client。
- 录制与回放数据
本教程将教你如何将ROS系统运行过程中的数据录制到一个.bag文件中,然后通过回放数据来重现相似的运行过程。
- roswtf入门
本教程介绍了roswtf工具的基本使用方法。
- 探索ROS维基
本教程介绍了ROS维基(wiki.ros.org)的组织结构以及使用方法。同时讲解了如何才能从ROS维基中找到你需要的信息。
- 接下来做什么?
本教程将讨论获取更多知识的途径,以帮助你更好地使用ROS搭建真实或虚拟机器人。
现在你已经完成了初级教程的学习,请回答这个 问卷来检验一下自己的学习效果。
中级
大多数客户端API的使用教程可以在相关程序包(roscpp, rospy, roslisp)中找到。
- 手动创建ROS package
本教程将展示如何手动创建ROS package
- 管理系统依赖项
本教程将展示如何使用rosdep安装系统依赖项.
- Roslaunch在大型项目中的使用技巧
本教程主要介绍roslaunch在大型项目中的使用技巧。重点关注如何构建launch文件使得它能够在不同的情况下重复利用。我们将使用 2dnav_pr2 package作为学习案例。
- ROS在多机器人上的使用
本教程将展示如何在两台机器上使用ROS系统,详述了使用ROS_MASTER_URI来配置多台机器使用同一个master。
- 自定义消息
本教程将展示如何使用ROS Message Description Language来定义你自己的消息类型.
- 在python中使用C++类
本教程阐述一种在python中使用C++类的方法。
- 如何编写教程
(概述:)本教程介绍在编辑ros.org维基时可以用到的模板和宏定义,并附有示例以供参考。
ROS标准
ROS开发者指南 有关代码风格和软件包布局等相关指南。
外部ROS资源
外部教程
外部研讨会或课件
由位于东京的TORK提供的面向企业基础培训的研讨会
在机器人上运行ROS
创建你自己的URDF文件 创建一个定制的通用机器人格式化描述文件。
ros_control 使用ROS的标准控制器框架来与硬件连接。
在Gazebo中使用URDF 在Gazebo机器人模拟器中添加必要的标记。
搭建 MoveIt! 建立配置程序包(configuration package)来使用MoveIt!运动规划框架。
其它ROS函数库教程
提供ROS接口的函数库教程
当完成初级和中级教程后,就可以依据需要进行ROS相关主题学习。
下面言归正传:
第192页:
简介本章要点。
第193-198页:
URDF,统一机器人描述格式的构成,创建,rviz中查看,属性配置等。
补充阅读:
学习 URDF (Unified Robot Description Format,统一的机器人描述文件格式)
- Create your own urdf file
In this tutorial you start creating your own urdf robot description file.
- Parse a urdf file
This tutorial teaches you how to use the urdf parser
- Using the robot state publisher on your own robot
This tutorial explains how you can publish the state of your robot to tf, using the robot state publisher.
- Start using the KDL parser
This tutorial teaches you how to create a KDL Tree from a URDF file
- Using urdf with robot_state_publisher
This tutorial gives a full example of a robot model with URDF that uses robot_state_publisher. First, we create the URDF model with all the necessary parts. Then we write a node which publishes the JointState and transforms. Finally, we run all the parts together.
手把手学习URDF
- Building a Visual Robot Model with URDF from Scratch
Learn how to build a visual model of a robot that you can view in Rviz
- Building a Movable Robot Model with URDF
Learn how to define movable joints in URDF
- Adding Physical and Collision Properties to a URDF Model
Learn how to add collision and inertial properties to links, and how to add joint dynamics to joints.
- Using Xacro to Clean Up a URDF File
Learn some tricks to reduce the amount of code in a URDF file using Xacro
实例讲解一个完整的URDF文件
- Understanding the PR2 Robot Description
This tutorial explains the layout of the top level URDF Xacro file for a complex robot such as PR2.
第199-205页:
xacro机器人建模。http://wiki.ros.org/xacro
在jade之后版本中增加了一些内容,注意官网的New in Jade标签。
第205-214页:
在ROS使用Gazebo进行机器人仿真。
补充参考:http://blog.csdn.net/ZhangRelay/article/category/6457458
第215页:
本章小结。
思考与巩固:
1 在Gazebo中建立一个机器人模型,并用键盘控制在环境中运动。
2 加入传感器获取环境信息识别障碍等。
3 在V-Rep中使用ROS接口进行机器人控制和传感器信息获取。
4 熟练掌握URDF和xacro。
本章内容较多,需要掌握xml语言特点,并熟练使用。注意.xacro和.urdf区别。移动控制机器人的C++或Python代码。其他开源或商业3D建模软件创建自己的模型,启动Gazebo和ROS的.launch文件特点,添加传感器并在rviz中获取可视化数据。