展开全部

主编推荐语

全面详解ROS的基础概念及应用实践。

内容简介

本书在介绍ROS总体框架和理论要点的基础上,讲解ROS的通信机制、常用组件和进阶功能;同时以实践为主,讲解机器视觉、机器听觉、SLAM与导航、机械臂控制、机器学习等多种ROS应用的主要原理和实现方法;并分析基于ROS的机器人系统设计方法和典型实例;最后论述ROS 2的框架特点和使用方法,剖析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 节点
  • 2.2.2 消息
  • 2.2.3 话题
  • 2.2.4 服务
  • 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开发环境
  • 3.4.1 安装Eclipse
  • 3.4.2 创建Eclipse工程文件
  • 3.4.3 将工程导入Eclipse
  • 3.4.4 设置头文件路径
  • 3.4.5 运行/调试程序
  • 3.5 RoboWare简介
  • 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 乌龟例程中的服务
  • 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 控制器
  • 6.6.3 硬件接口
  • 6.6.4 传动系统
  • 6.6.5 关节约束
  • 6.6.6 控制器管理器
  • 6.7 Gazebo仿真
  • 6.7.1 机器人模型添加Gazebo属性
  • 6.7.2 在Gazebo中显示机器人模型
  • 6.7.3 控制机器人在Gazebo中运动
  • 6.7.4 摄像头仿真
  • 6.7.5 Kinect仿真
  • 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 人工智能标记语言
  • 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-slam
  • 9.4.1 hector-slam功能包
  • 9.4.2 hector_mapping节点的配置与运行
  • 9.4.3 在Gazebo中仿真SLAM
  • 9.4.4 真实机器人SLAM
  • 9.5 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 规划场景
  • 10.1.4 运动学求解器
  • 10.1.5 碰撞检测
  • 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 配置自碰撞矩阵
  • 10.4.3 配置虚拟关节
  • 10.4.4 创建规划组
  • 10.4.5 定义机器人位姿
  • 10.4.6 配置终端夹爪
  • 10.4.7 配置无用关节
  • 10.4.8 设置作者信息
  • 10.4.9 生成配置文件
  • 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 动态配置参数
  • 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 Robots
  • 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
  • 14.1 ROS 1存在的问题
  • 14.2 什么是ROS 2
  • 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 本章小结
展开全部

评分及书评

5.0
4个评分
  • 用户头像
    给这本书评了
    5.0
    ROS入门实践宝书

    ROS 开源机器人操作系统,已经维护多年,多个版本,目前使用越来越广。作为 2011 年就开始在 ROS 上搞开发的古月大神,实践经验之丰富,书中代码详实,可以用网页版,直接复制代码,一步步操作,实属方便。收藏起来吧,同学们。

      转发
      1
      用户头像
      给这本书评了
      5.0

      name:参数名,使用字符串描述。・type:定义参数的类型,可以是 int_tdouble_tstr_t bool_t。・level:参数动态配置回调函数中的掩码,在回调函数中会修改所有参数的掩码,表示参数已经被修改。・description:描述参数作用的字符串。・default:设置参数的默认值。・min:可选,设置参数的最小值,对于字符串和布尔类型值不生效。・max:可选,设置参数的最大值,对于字符串和布尔类型值不生效。

        转发
        评论

      出版方

      机械工业出版社有限公司

      机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。