5.0 用户推荐指数
科技
类型
8.1
豆瓣评分
可以朗读
语音朗读
396千字
字数
2018-05-01
发行日期
展开全部
主编推荐语
全面详解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 本章小结
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。