第1章 用于机器人的Ubuntu Linux 1
1.1 从GNU/Linux入门 1
1.1.1 什么是Ubuntu 2
1.1.2 为什么选择Ubuntu系统 2
1.2 安装Ubuntu 2
1.2.1 计算机推荐配置 2
1.2.2 下载Ubuntu 2
1.2.3 安装VirtualBox 3
1.2.4 创建一个VirtualBox虚拟机 4
1.2.5 在VirtualBox中安装Ubuntu 10
1.2.6 在计算机上安装Ubuntu 17
1.3 使用Ubuntu图形用户界面 18
1.3.1 Ubuntu文件系统 19
1.3.2 实用的Ubuntu应用 20
1.4 shell命令入门 21
1.5 本章小结 32
第2章 机器人编程的C++基础知识 33
2.1 C++入门 33
2.2 在Ubuntu Linux中运行C/C++ 34
2.2.1 GCC和G++编译器介绍 34
2.2.2 安装C/C++编译器 34
2.2.3 验证安装C/C++编译器 34
2.2.4 GNU项目调试器GDB简介 35
2.2.5 在Ubuntu Linux中安装GDB 35
2.2.6 验证安装GDB 35
2.2.7 编写第一个程序 36
2.2.8 解释代码 37
2.2.9 编译代码 38
2.2.10 调试代码 39
2.3 从实例中学习OOP概念 41
2.3.1 类和结构体之间的区别 41
2.3.2 C++的类和对象 43
2.3.3 类访问修饰符 44
2.3.4 C++中Inheritance的使用 45
2.3.5 C++文件和流 48
2.3.6 C++中的命名空间 49
2.3.7 C++的异常处理 51
2.3.8 C++的标准模板库 52
2.4 建立一个C++工程 52
2.4.1 建立一个Linux Makefile 53
2.4.2 创建一个CMake文件 55
2.5 本章小结 56
第3章 机器人编程的Python基础 58
3.1 开始使用Python 58
3.2 Ubuntu/Linux中的Python 59
3.2.1 Python解释器的介绍 59
3.2.2 在Ubuntu 16.04 LTS中安装Python 59
3.2.3 验证Python的安装 60
3.2.4 编写第一个Python程序 60
3.2.5 执行Python代码 62
3.2.6 理解Python的基础知识 63
3.2.7 Python中的新内容 63
3.2.8 Python变量 64
3.2.9 Python输入和条件语句 65
3.2.10 Python:循环 66
3.2.11 Python:函数 67
3.2.12 Python:异常处理 69
3.2.13 Python:类 69
3.2.14 Python:文件 71
3.2.15 Python:模块 72
3.2.16 Python:处理串行端口 73
3.2.17 在Ubuntu 16.04中安装PySerial 73
3.2.18 Python:科学计算和可视化 75
3.2.19 Python:机器学习和深度学习 75
3.2.20 Python:计算机视觉 75
3.2.21 Python:机器人 76
3.2.22 Python:集成开发环境(IDE) 76
3.3 本章小结 76
第4章 ROS概述 77
4.1 什么是机器人编程 77
4.2 为什么机器人编程与众不同 78
4.3 开始使用ROS 79
4.3.1 ROS等式 81
4.3.2 ROS的历史 81
4.3.3 ROS诞生前后 82
4.3.4 我们为什么要使用ROS 83
4.3.5 安装ROS 84
4.3.6 支持ROS的机器人和传感器 88
4.3.7 常用的ROS计算平台 89
4.3.8 ROS的架构和概念 90
4.3.9 ROS文件系统 92
4.3.10 ROS计算的概念 93
4.3.11 ROS社区 94
4.3.12 ROS命令行工具 94
4.3.13 ROS实例:Hello World 97
4.3.14 ROS实例:turtlesim 98
4.3.15 ROS图形用户接口:Rviz和Rqt 102
4.4 本章小结 104
第5章 基于ROS编程 105
5.1 什么是使用ROS编程 105
5.2 创建ROS工作空间和程序包 106
5.2.1 ROS编译系统 108
5.2.2 ROS catkin工作空间 109
5.2.3 创建ROS程序包 110
5.3 使用ROS客户端库 111
5.3.1 roscpp和rospy 112
5.3.2 基于ROS的Hello World实例 116
5.3.3 使用rospy为turtlesim编程 126
5.3.4 使用rospy对turtlebot编程 138
5.4 使用ROS对嵌入式板卡编程 142
5.4.1 使用ROS连接Arduino 142
5.4.2 在树莓派上安装ROS 146
5.5 本章小结 148
第6章 基于ROS的机器人项目 149
6.1 从轮式机器人开始 149
6.2 差速驱动机器人的运动学 149
6.3 搭建机器人硬件 152
6.3.1 购买机器人组件 153
6.3.2 机器人模块框图 156
6.3.3 组装机器人硬件 157
6.4 使用URDF创建一个三维ROS模型 158
6.5 编写机器人固件程序 162
6.6 使用ROS对机器人编程 165
6.6.1 为机器人创建基于ROS的蓝牙驱动器 165
6.6.2 teleop节点 168
6.6.3 传送至Motor velocity节点的Twist消息 168
6.6.4 里程计节点 169
6.6.5 航位推算节点 169
6.7 最终运行 170
6.8 本章小结 172