前言
二维码清单
第1章 学习ROS必备的Linux知识1
1.1 Linux操作系统介绍1
1.1.1 Linux的诞生1
1.1.2 Linux、UNIX、系统、内核和发行版2
1.2 Ubuntu环境搭建3
1.2.1 VMWare的安装使用3
1.2.2 安装Ubuntu系统5
1.3 Ubuntu桌面使用10
1.3.1 Ubuntu的桌面布局10
1.3.2 安装VMware Tools工具11
1.4 shell和常用命令12
1.4.1 shell、终端和命令12
1.4.2 常用shell命令14
1.5 Ubuntu安装和卸载软件17
1.5.1 使用国内软件源提升下载速度17
1.5.2 通过apt管理软件19
1.5.3 通过应用商店安装卸载软件19
1.6 vim编辑器使用21
1.7 Linux文件系统22
1.7.1 Linux文件系统结构22
1.7.2 目录内容存放规则24
1.8 root用户和权限管理24
1.8.1 Linux中的权限概念25
1.8.2 文件/目录权限查看和修改25
1.8.3 启用root用户26
1.9 嵌入式单板计算机和Linux27
第2章 认识ROS30
2.1 ROS是什么30
2.1.1 ROS从何而来30
2.1.2 为什么要使用ROS31
2.2 如何安装ROS32
2.3 ROS通信结构37
2.3.1 节点和主节点38
2.3.2 话题(Topic)39
2.3.3 服务(Service)40
2.3.4 动作(Action)41
2.3.5 参数服务器42
2.4 ROS常用shell命令43
2.5 ROS常用图形工具50
2.5.1 rqt工具箱51
2.5.2 rviz52
2.6 ROS坐标系和tf变换53
2.6.1 ROS中的坐标定义53
2.6.2 ROS中的tf变换54
2.7 ROS工作空间56
2.7.1 ROS工作空间是什么57
2.7.2 创建并使用一个工作空间58
第3章 ROS编程基础60
3.1 ROS开发环境搭建60
3.1.1 Ubuntu下安装VSCode60
3.1.2 VSCode常用插件安装61
3.2 新建一个ROS功能包62
3.3 编写一对发布订阅节点(C++)64
3.3.1 编写发布节点(C++)64
3.3.2 编写订阅节点(C++)66
3.4 编写一对发布订阅节点(Python)67
3.4.1 编写发布节点(Python)67
3.4.2 编写订阅节点(Python)68
3.5 编写launch文件用于启动节点70
3.5.1 通过launch文件启动C++编译的节点70
3.5.2 通过launch文件启动Python节点71
3.5.3 在launch文件中调用launch文件72
3.6 创建新消息类型并编写节点发布消息73
3.6.1 编写自定义消息74
3.6.2 验证消息正常产生75
3.6.3 编写节点发布自定义消息类型(C++)76
3.6.4 编写节点订阅自定义消息类型(Python)76
3.7 创建一个服务类型并编写服务端/客户端节点77
3.7.1 定义并编写一个自定义服务77
3.7.2 通过rossrv验证服务产生78
3.7.3 编写自定义服务的服务端(C++)79
3.7.4 编写自定义服务的服务端(Python)80
3.7.5 编写自定义服务的客户端(C++)80
3.7.6 编写自定义服务的客户端(Python)81
3.8 tf变换编程入门82
3.8.1 通过static_transform_publisher发布静态坐标变换82
3.8.2 编写节点实现动态tf变换(Python)84
3.8.3 编写节点实现动态tf变换(C++)85
第4章 ROS机器人平台搭建87
4.1 机器人系统的典型构成87
4.2 几种常见的机器人底盘运动学模型88
4.2.1 差速转向结构89
4.2.2 阿克曼转向结构90
4.2.3 全向运动结构92
4.3 驱动和电池系统95
4.3.1 驱动系统—电动机95
4.3.2 电池系统97
4.4 控制系统—底盘控制器98
4.5 控制系统—车载计算机100
4.5.1 车载计算机需要实现的功能100
4.5.2 车载计算机的选择100
4.5.3 将车载计算机和底盘控制器连接起来102
4.6 机器人上常用的传感器105
4.6.1 获取机器人运动状态—编码器和IMU105
4.6.2 让机器人看见世界—摄像头107
4.6.3 让机器人感知世界的“深浅”—立体相机108
4.6.4 让机器人具备全向感知能力—激光雷达109
4.7 远程连接车载计算机111
4.7.1 路由模式和WiFi模式111
4.7.2 SSH远程登录112
4.7.3 使用远程桌面连接机器人113
4.8 底盘启动和控制115
4.8.1 启动底盘驱动节点115
4.8.2 控制机器人运动116
4.8.3 向launch文件中传入变量118
4.9 机器人底盘ROS节点源码解析119
4.9.1 base_control功能包文件结构120
4.9.2 base_control.launch文件解读120
4.9.3 base_control.py源码解读122
4.9.4 bash脚本与udev规则131
4.10 ROS分布式通信配置132
4.10.1 分布式通信配置条件检查133
4.10.2 分布式通信配置和测试验证135
第5章 机器人仿真环境搭建137
5.1 为什么要有机器人仿真环境137
5.1.1 机器人仿真主要解决的问题137
5.1.2 仿真环境中的机器人和真实机器人的联系138
5.2 在Stage仿真器中创建机器人139
5.2.1 Stage仿真器简介139
5.2.2 创建Stage仿真器地图和机器人模型140
5.2.3 控制Stage仿真器中的机器人143
5.3 在Gazebo仿真器中创建机器人144
5.3.1 Gazebo仿真器简介144
5.3.2 Gazebo仿真器中的环境模型147
5.4 机器人模型和URDF文件150
5.4.1 URDF文件150
5.4.2 xacro文件和Gazebo插件155
5.4.3 通过Solidworks 创建机器人模型157
第6章 ROS中的OpenCV和机器视觉159
6.1 摄像头的驱动和图像话题订阅159
6.1.1 启动摄像头159
6.1.2 订阅摄像头图像并显示161
6.1.3 摄像