《ROS机器人开发实践》| 目录

  • 内容
  • 评论
  • 相关

前言

 

1 初识ROS

1.1 ROS是什么

1.1.1 ROS的起源

1.1.2 ROS的设计目标

1.1.3 ROS的特点

1.2 如何安装ROS

1.2.1 操作系统与ROS版本的选择

1.2.2 配置系统软件源

1.2.3 添加ROS软件源

1.2.4 添加密钥

1.2.5 安装ROS

1.2.6 初始化rosdep

1.2.7 设置环境变量

1.2.8 完成安装

1.3 本书源码下载

1.4 本章小结

 

2. ROS系统架构

2.1 ROS架构设计

2.2 计算图

2.2.1 节点(Node)

2.2.2 消息(Message)

2.2.3 话题(Topic)

2.2.4 服务(Service)

2.2.5 节点管理器

2.3 文件系统

2.3.1 功能包

2.3.2 元功能包

2.4 开源社区

2.5 ROS的通信机制

2.5.1 话题

2.5.2 服务

2.5.3 参数

2.6 话题与服务的区别

2.7 本章小结

 

3 ROS基础

3.1 第一个ROS例程——小乌龟仿真

3.1.1 turtlesim功能包

3.1.2 控制乌龟运动

3.2 创建工作空间

3.2.1 什么是工作空间

3.2.2 创建工作空间

3.2.3 创建功能包

3.3 工作空间的覆盖

3.3.1 ROS中的空间覆盖

3.3.2 工作空间之间的覆盖

3.4 搭建Eclipse IDE开发环境

3.4.1 安装Eclipse

3.4.2 创建Eclipse工程文件

3.4.3 将工程导入Eclipse

3.4.4 设置头文件路径

3.4.5 运行/调试程序

3.5 RoboWare IDE

3.5.1 RoboWare的特点

3.5.2 RoboWare的安装与使用

3.6 话题中的Publisher与Subscriber

3.6.1 乌龟例程中的Publisher与Subscriber

3.6.2 如何创建Publisher

3.6.3 如何创建Subscriber

3.6.4 编译功能包

3.6.5 运行Publisher与Subscriber

3.6.6 自定义话题消息

3.7 服务中的Server和Client

3.7.1 乌龟例程中的Service

3.7.2 如何自定义服务数据

3.7.3 如何创建Server

3.7.4 如何创建Client

3.7.5 编译功能包

3.7.6 运行Server和Client

3.8 ROS中的命名空间

3.8.1 有效的命名

3.8.2 命名解析

3.8.3 命名重映射

3.9 分布式多机通信

3.9.1 设置IP地址

3.9.2 设置ROS_MASTER_URI

3.9.3 多机通信测试

3.10 本章小结

 

4 ROS中的常用组件

4.1 launch启动文件

4.1.1 基本元素

4.1.2 参数设置

4.1.3 重映射机制

4.1.4 嵌套复用

4.2 TF坐标变换

4.2.1 TF功能包

4.2.2 TF工具

4.2.3 乌龟例程中的TF

4.2.4 创建TF广播器

4.2.5 创建TF监听器

4.2.6 实现乌龟跟随运动

4.3 Qt工具箱

4.3.1 日志输出工具——rqt_console

4.3.2 计算图可视化工具——rqt_graph

4.3.3 数据绘图工具——rqt_plot

4.3.4 参数动态配置工具——rqt_reconfigure

4.4 rviz三维可视化平台

4.4.1 安装并运行rviz

4.4.2 数据可视化

4.4.3 插件扩展机制

4.5 gazebo仿真环境

4.5.1 gazebo的特点

4.5.2 安装并运行gazebo

4.5.3 构建仿真环境

4.6 rosbag数据记录与回放

4.6.1 如何记录数据

4.6.2 如何回放数据

4.7 本章小结

 

5 机器人平台搭建

5.1 机器人的定义

5.2 机器人的组成

5.2.1 执行机构

5.2.2 驱动系统

5.2.3 传感系统

5.2.4 控制系统

5.3 机器人系统搭建

5.3.1 MRobot

5.3.2 执行机构的实现

5.3.3 驱动系统的实现

5.3.4 内部传感系统的实现

5.4 基于Raspberry Pi的控制系统实现

5.4.1 硬件平台Raspberry Pi

5.4.2 安装Ubuntu 16.04

5.4.3 安装ROS

5.4.4 控制系统与MRobot通信

5.4.5 PC端控制MRobot

5.5 为机器人装配摄像头

5.5.1 usb_cam功能包

5.5.2 PC端驱动摄像头

5.5.3 Raspberry Pi驱动摄像头

5.6 为机器人装配Kinect

5.6.1 freenect_camera功能包

5.6.2 PC端驱动Kinect

5.6.3 Raspberry Pi驱动Kinect

5.6.4 Kinect电源改造

5.7 为机器人装配激光雷达

5.7.1 rplidar功能包

5.7.2 PC端驱动rplidar

5.7.3 Raspberry Pi驱动rplidar

5.8 本章小结

 

6 机器人建模与仿真

6.1 统一机器人描述格式——URDF

6.1.1 <link>标签

6.1.2 <joint>标签

6.1.3 <robot>标签

6.1.4 <gazebo>标签

6.2 创建机器人URDF模型

6.2.1 创建机器人描述功能包

6.2.2 创建URDF模型

6.2.3 URDF模型解析

6.2.4 在rviz中显示模型

6.3 改进URDF模型

6.3.1 添加物理和碰撞属性

6.3.2 使用xacro优化URDF

6.3.3 xacro文件引用

6.3.4 显示优化后的模型

6.4 添加传感器模型

6.4.1 添加摄像头

6.4.2 添加Kinect

6.4.3 添加激光雷达

6.5 基于ArbotiX和rviz的仿真器

6.5.1 安装ArbotiX

6.5.2 配置ArbotiX控制器

6.5.3 运行仿真环境

6.6 ros_control

6.6.1 ros_control框架

6.6.2 控制器(Controllers)

6.6.3 硬件接口(Hardware Interface)

6.6.4 传动系统(Transmissions)

6.6.5 关节约束(Joint Limits)

6.6.6 控制器管理器(controller manager)

6.7 gazebo仿真

6.7.1 机器人模型添加gazebo属性

6.7.2 在gazebo中显示机器人模型

6.7.3 控制机器人在gazebo中运动

6.7.4 摄像头仿真

6.7.5 RGB-D摄像头仿真

6.7.6 激光雷达仿真

6.8 本章小结

 

7 机器视觉

7.1 ROS中的图像数据

7.1.1 二维图像数据

7.1.2 三维点云数据

7.2 摄像头标定

7.2.1 camera_calibration功能包

7.2.2 启动标定程序

7.2.3 标定摄像头

7.2.4 标定Kinect

7.2.5 加载标定参数的配置文件

7.3 OpenCV库

7.3.1 安装openCV

7.3.2 在ROS中使用OpenCV

7.4 人脸识别

7.4.1 应用效果

7.4.2 源码实现

7.5 物体跟踪

7.5.1 应用效果

7.5.2 源码实现

7.6 二维码识别

7.6.1 ar_track_alvar功能包

7.6.2 创建二维码

7.6.3 摄像头识别二维码

7.6.4 Kinect识别二维码

7.7 物体识别

7.7.1 ORK功能包

7.7.2 建立物体模型库

7.7.3 模型训练

7.7.4 三维物体识别

7.8 本站小结

 

8 机器语音

8.1 让机器人听懂你说的话

8.1.1 pocketsphinx功能包

8.1.2 语音识别测试

8.1.3 创建语音库

8.1.4 创建launch文件

8.1.5 语音指令识别

8.1.6 中文语音识别

8.2 通过语音控制机器人

8.2.1 编写语音控制节点

8.2.2 语音控制小乌龟运动

8.3 让机器人说话

8.3.1 sound_play功能包

8.3.2 语音播放测试

8.4 人工智能标记语言——AIML

8.4.1 AIML中的标签

8.4.2 Python中的AIML解析器

8.5 来和机器人对话吧

8.5.1 语音识别

8.5.2 智能匹配应答

8.5.3 文本转语音

8.5.4 智能对话

8.6 让机器人听懂中文

8.6.1 下载科大讯飞SDK

8.6.2 测试SDK

8.6.3 语音听写

8.6.4 语音合成

8.6.5 智能语音助手

8.7 本章小结

 

9 机器人SLAM与自主导航

9.1 理论基础

9.2 准备工作

9.2.1 传感器信息

9.2.2 仿真平台

9.2.3 真实机器人

9.3 gmapping

9.3.1 gmapping功能包

9.3.2 gmapping节点的配置与运行

9.3.3 在gazebo中仿真SLAM

9.3.4 真实机器人SLAM

9.4 hector

9.4.1 hector功能包

9.4.2 hector节点的配置与运行

9.4.3 在gazebo中仿真SLAM

9.4.4 真实机器人SLAM

9.5 google cartographer

9.5.1 cartographer功能包

9.5.2 官方demo测试

9.5.3 cartographer节点的配置与运行

9.5.4 在gazebo中仿真SLAM

9.5.5 真实机器人SLAM

9.6 rgbdslam

9.6.1 rgbdslam功能包

9.6.2 使用数据包实现SLAM

9.6.3 使用Kinect实现SLAM

9.7 ORB_SLAM

9.7.1 ORB_SLAM功能包

9.7.2 使用数据包实现单目SLAM

9.7.3 使用摄像头实现单目SLAM

9.8 导航功能包

9.8.1 导航框架

9.8.2 move_base功能包

9.8.3 amcl功能包

9.8.4 代价地图的配置

9.8.5 本地规划器配置

9.9 在rviz中仿真机器人导航

9.9.1 创建launch文件

9.9.2 开始导航

9.9.3 自动导航

9.10 在gazebo中仿真机器人导航

9.10.1 创建launch文件

9.10.2 运行效果

9.10.3 实时避障

9.11 真实机器人导航

9.11.1 创建launch文件

9.11.2 开始导航

9.12 自主探索SLAM

9.12.1 创建launch文件

9.12.2 通过rviz设置探索目标

9.12.3 自主探索SLAM

9.13 本章小结

 

10 MoveIt!机械臂控制

10.1 MoveIt!系统架构

10.1.1 运动组(move_group)

10.1.2 运动规划器(motion_planner)

10.1.3 规划场景(Planning Scene)

10.1.4 运动学求解器(Kinematics)

10.1.5 碰撞检测(Collision Checking)

10.2 如何使用MoveIt!

10.3 创建机械臂模型

10.3.1 声明模型中的宏

10.3.2 创建六轴机械臂模型

10.3.3 加入gazebo属性

10.3.4 显示机器人模型

10.4 使用Setup Assistant配置机械臂

10.4.1 加载机器人URDF模型

10.4.2 配置自碰撞矩阵(Self-Collisions)

10.4.3 配置虚拟关节(Virtual Joints)

10.4.4 创建规划组(Planning Groups)

10.4.5 定义机器人位姿(Robot Poses)

10.4.6 配置终端夹爪(End effectors)

10.4.7 配置无用关节(Passive Joints)

10.4.8 设置作者信息(Author Information)

10.4.9 生成配置文件(Configuration Files)

10.5 启动MoveIt!

10.5.1 拖动规划

10.5.2 随机规划

10.5.3 初始位姿更新

10.5.4 碰撞检测

10.6 配置文件

10.6.1 SRDF文件

10.6.2 fake_controllers.yaml

10.6.3 joint_limits.yaml

10.6.4 kinematics.yaml

10.6.5 ompl_planning.yaml

10.7 添加ArbotiX关节控制器

10.7.1 添加配置文件

10.7.2 运行ArbotiX节点

10.7.3 测试例程

10.7.4 运行效果

10.8 配置MoveIt!关节控制器

10.8.1 添加配置文件

10.8.2 启动插件

10.9 MoveIt!编程学习

10.9.1 关节空间规划

10.9.2 工作空间规划

10.9.3 笛卡尔运动规划

10.9.4 避障规划

10.10 Pick and Place

10.10.1 应用效果

10.10.2 创建抓取的目标物体

10.10.3 设置目标物体的放置位置

10.10.4 生成抓取姿态

10.10.5 pick

10.10.6 place

10.11 Gazebo中的机械臂仿真

10.11.1 创建配置文件

10.11.2 创建launch文件

10.11.3 开始仿真

10.12 使用MoveIt!控制Gazebo中的机械臂

10.12.1 关节轨迹控制器

10.12.2 MoveIt!控制器

10.12.3 关节状态控制器

10.12.4 运行效果

10.13 ROS-I

10.13.1 ROS-I的目标

10.13.2 ROS-I的安装

10.13.3 ROS-I的架构

10.14 本章小结

 

11 ROS与机器学习

11.1 AlphaGo的大脑——TensorFlow

11.2 TensorFlow基础

11.2.1 安装TensorFlow

11.2.2 核心概念

11.2.3 第一个TensorFlow程序

11.3 线性回归

11.3.1 理论基础

11.3.2 创建数据集

11.3.3 TensorFlow解决线性回归问题

11.4 手写数字识别

11.4.1 理论基础

11.4.2 TensorFlow中的MNIST例程

11.4.3 基于ROS实现MNIST

11.5 物体识别

11.5.1 安装TensorFlow Object Detection API

11.5.2 基于ROS实现动态物体识别

11.6 本章小结

 

12 ROS进阶功能

12.1 action

12.1.1 什么是action

12.1.2 action的工作机制

12.1.3 action的定义

12.1.4 实现action通信

12.2 plugin

12.2.1 工作原理

12.2.2 如何实现一个插件

12.2.3 创建基类

12.2.4 创建plugin类

12.2.5 注册插件

12.2.6 编译插件的动态链接库

12.2.7 将插件加入ROS系统

12.2.8 调用插件

12.3 rviz plugin

12.3.1 速度控制插件

12.3.2 创建功能包

12.3.3 代码实现

12.3.4 编译插件

12.3.5 运行插件

12.4 dynamic reconfigure

12.4.1 创建配置文件

12.4.2 创建服务端节点

12.4.3 参数动态配置

12.5 SMACH

12.5.1 什么是SMACH

12.5.2 状态机跑起来

12.5.3 状态机实现剖析

12.5.4 状态间的数据传递

12.5.5 状态机嵌套

12.5.6 多状态并行

12.6 ROS-MATLAB

12.6.1 ROS-MATLAB是什么

12.6.2 ROS-MATLAB可以做什么

12.6.3 连接Matlab和ROS

12.6.4 Matlab可视化编程

12.6.5 创建可视化界面

12.6.6 编辑控件的回调函数

12.6.7 运行效果

12.7 Web GUI

12.7.1 ROS中的Web功能包

12.7.2 创建Web应用

12.7.3 使用Web浏览器控制机器人

12.8 本章小结

 

13 ROS机器人实例

13.1 PR2

13.1.1 PR2功能包

13.1.2 gazebo中的PR2

13.1.3 使用PR2实现SLAM

13.1.4 PR2机械臂的使用

13.2 TurtleBot

13.2.1 TurtleBot功能包

13.2.2 gazebo中的TurtleBot

13.2.3 使用TurtleBot实现导航

13.2.4 尝鲜TurtleBot 3

13.3 Universal Robot

13.3.1 Universal Robots功能包

13.3.2 gazebo中的UR机器人

13.3.3 使用MoveIt!控制UR机器人

13.4 catvehicle

13.4.1 构建无人驾驶仿真系统

13.4.2 运行无人驾驶仿真器

13.4.3 控制无人驾驶汽车

13.4.4 实现无人驾驶汽车的SLAM功能

13.5 HRMRP

13.5.1 总体架构设计

13.5.2 SLAM与导航

13.5.3 多机器人扩展

13.6 Kungfu Arm

13.6.1 总体架构设计

13.6.2 具体层次功能

13.6.3 功夫茶应用展示

13.7 本章小结

 

14 ROS 2.0

14.1 ROS 1存在的问题

14.2 什么是ROS 2.0

14.2.1 ROS 2的设计目标

14.2.2 ROS 2的系统架构

14.2.3 ROS 2的关键中间件——DDS

14.2.4 ROS 2的通信模型

14.2.5 ROS 2的编译系统

14.3 Ubuntu安装ROS 2

14.3.1 安装步骤

14.3.2 运行talker和listener例程

14.4 Windows安装ROS 2

14.4.1 安装Chocolatey

14.4.2 安装Python

14.4.3 安装OpenSSL

14.4.4 安装Visual Studio Community 2015

14.4.5 配置DDS

14.4.6 安装OpenCV

14.4.7 安装依赖包

14.4.8 下载并配置ROS 2

14.4.9 运行talker和listener例程

14.5 ROS 2中的话题通信

14.5.1 创建工作目录和功能包

14.5.2 创建talker

14.5.3 创建listener

14.5.4 修改CMakeLists.txt

14.5.5 编译并运行节点

14.6 自定义话题和服务

14.6.1 自定义话题

14.6.2 自定义服务

14.6.3 修改CMakeLists.txt和package.xml

14.6.4 编译生成头文件

14.7 ROS 2中的服务通信

14.7.1 创建Server

14.7.2 创建Client

14.7.3 修改CMakeLists.txt

14.7.4 编译并运行节点

14.8 ROS 2与ROS 1的集成

14.8.1 ros1_bridge功能包

14.8.2 话题通信

14.8.3 服务通信

14.9 本章小结


原创文章,转载请注明: 转载自古月居

本文链接地址: 《ROS机器人开发实践》| 目录

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixinpay_weixin

评论

17条评论
  1. Gravatar 头像

    niubulin 回复

    古月您好,正在学习您的教程,由于刚开始学习,很多的知识点都不太明白。在gazebo中仿真自己建立的机器人模型时遇到了如下问题:
    Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/kinetic/lib/xacro/xacro --inorder '/home/niubulin/catkin_ws/src/mbot_description_practice/urdf/mbot.xacro'] returned with code [1].

    Param xml is
    The traceback for the exception was written to the log file
    感觉应该是文件哪里配置出现了问题,自己搜索很久也没有找到问题的根源在哪里

    • 古月

      古月 回复

      @niubulin 应该是没有把机器人模型路径加载到robot_description参数里,最好对照着例程改

  2. Gravatar 头像

    潘达 回复

    古月前辈你好,最近一直在看你这本大作《ROS机器人开发实战》,并也在真实机器人平台实验,对我的学习真是有莫大的指导~!但由于刚入门,好多东西都没懂,在第九章“机器人SLAM与自主导航”的9.4hector_slam试验中,执行hector_demo.launch 后,地图总不能显示出来,终端提示内容为“lookupTransform base_footprint to laser timed out. Could not transform laser scan into base_frame.”,rviz里面的global status提示warn,具体为fixed frame:“No tf data. Actual error: Fixed Frame [map] does not exist”。通过rqt_graph能看出hect_mapping已经订阅激光的scan话题并也发布map到rviz。我用的激光雷达为Hokuyo UST-20LX,小车平台没有里程计信息。已经困扰很久,还请前辈不吝赐教~多谢!

    • 古月

      古月 回复

      @潘达 错误提示是找不到map这个坐标系,检查一下激光数据是不是正常发布,频率方面是不是稳定

      • Gravatar 头像

        潘达 回复

        @古月 多谢古月大神,前几天在调里程计没有看到回复不好意思~我的ros是indigo,发现《ROS机器人开发实践》上面好多教程不能照例进行,正准备重新安装ros重新调试。再次谢古月前辈~~

  3. Gravatar 头像

    fengyuan 回复

    古月老师您好,看了您的书,感觉收获很大,但是有四个问题想请教下您,(1)我在运行《ROS机器人开发实践》第十章的p351的代码roslaunch marm_gazebo arm_gazebo_control.launch的时候,有时候会出现[gazebo-1] process has died [pid 6764, exit code 134, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo这个错误,请问这个是什么原因呢,但有时候又是正常的,感觉很奇怪(2)在运行357页的代码的时候,roslaunch marm_gazebo arm_bringup_moveit.launch,出现错误 Action client not connected : arm_controller/follow_joint_trajectory,rviz中可以进行运动,但是gazebo中运动不了(3)在moveIT控制机械臂进行运动的时候,添加arbotix插件是否一定添加呢,和我运行roslaunch marm_moveit_config demo.launch 和rosrun marm_planning moveit_fk_demo.py这两个命令的时候,arm机械臂也是可以进行运动(4)在gazebo进行机械臂的仿真的时候,用了关节轨迹控制器,请问这个轨迹控制器也是一定要加上才可以进行在gazebo中的仿真吗

    • 古月

      古月 回复

      @fengyuan 1. gazebo本身不稳定,和计算机的配置也有关系,都会导致gazebo启动失败,多启动几次就行,正常的
      2. 请确定是否安装了ros-kinetic-ros-control和ros-kinetic-ros-controllers包
      3. demo里是再带一个fake controller的,功能和arbotix一样,可以不用arbotix
      4. 这个必须要加上的,是接口要求

  4. Gravatar 头像

    lijiashushu 回复

    大神您好,在您的书中看到了Roboware-studio这款软件,感觉功能非常强大。但是在使用中出现问题,打开本地的工作空间,构建时总提示错误Remote Arguments not configured! 。而自己新建工作空间时,出现错误磁盘上路径“/home/robot/catkin_ws”似乎不是一个有效的 ROS 工作区。请问您遇到过么?

      • Gravatar 头像

        Krasa 回复

        @zzzyyyccc 古月老师,我刚开始学ros 按书里写的我把下载的包放在工作站里catkin_make了之后缺失了 ecto的包,manipulation-msgs的包,都安装好了,现在出来缺少moveit_msgs的包,我在网上查了下都没有下载方法,请问怎么办啊

        • 古月

          古月 回复

          @Krasa 这些都是ROS的功能包,sudo apt-get install ros-kinetic-moveit-msgs就可以安装,缺少的其他包也使用类似的方法安装,也可以sudo apt-get install ros-kinetic-moveit-*安装所有moveit的包

  5. Gravatar 头像

    花生 回复

    古月大神你好,在第一批买的你原版书籍,感觉超有价值,由于我是新手,所以遇到一个问题不能解决,在下载完你书中提供的源代码,在工作空间中catkin_make后遇到如下问题:请您解答一下。
    Could not find the required component 'ecto'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
    CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
    Could not find a package configuration file provided by "ecto" with any of
    the following names:

    ectoConfig.cmake
    ecto-config.cmake

    Add the installation prefix of "ecto" to CMAKE_PREFIX_PATH or set
    "ecto_DIR" to a directory containing one of the above files. If "ecto"
    provides a separate development package or SDK, be sure it has been
    installed.
    Call Stack (most recent call first):
    ros_exploring-master/robot_perception/ork_tutorials/CMakeLists.txt:4 (find_package)

    -- Configuring incomplete, errors occurred!
    See also "/home/qinpeiwang/catkin_ws/build/CMakeFiles/CMakeOutput.log".
    See also "/home/qinpeiwang/catkin_ws/build/CMakeFiles/CMakeError.log".
    Invoking "cmake" failed

    • 古月

      古月 回复

      @花生 感谢支持,缺少ecto这个包,用sudo apt-get install ros-kinetic-ecto安装

      • Gravatar 头像

        花生 回复

        @古月 谢谢您,我在微信活动中,评论一直是第一,好想能得到一本你的亲笔签名。永远支持你!

    • Gravatar 头像

      JiMale 回复

      @花生 请问怎么下载书中源代码啊?
      还请赐教!!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注