您的浏览器不支持JavaScript,请开启后继续
C++树莓派机器人开发实战指南

C++树莓派机器人开发实战指南

  • 作者
  • (美)劳埃德·布朗巴赫(Lloyd Brombach) 著

本书深入浅出地介绍了构建移动机器人平台所需的综合知识,涵盖了硬件和软件诸多方面。本书以清晰的学习路径和全面的底层逻辑为基石,帮助读者轻松地构建和编程机器人,避免了深入每个科目复杂部分的困难。书中聚焦于树莓派与硬件交互的编程,全面覆盖了从选用机器人控制器的微计算机(即树莓派)到为车轮驱动电机供电等系统性知识。读者可了解并掌握如何利用传感器检测障碍物、训练机器人...


  • ¥198.00

ISBN: 978-7-122-44613-8

版次: 1

出版时间: 2024-04-01

图书介绍

ISBN:978-7-122-44613-8

语种:汉文

开本:16

出版时间:2024-04-01

装帧:平

页数:327

编辑推荐

1.原版书作者知识功底扎实,在电子和机器人技术领域颇有影响力 2.内容涉及基础硬件设备以及传感器、通信、定位、感知、规划、控制、多传感器融合等使用C++来开发机器人的整个流程的知识点,基础实用 3.译者专业知识丰富,力求使书中内容通俗易懂、融会贯通

图书前言

对于初学者来说,找到一本能够明确指导自己搭建自主定位与导航的机器人的书籍是一项挑战,有一部分原因是涉及的学科太多,另一部分原因是现有资源更倾向于专业性。比如说电子学的书籍不谈论建图或路径规划的相关知识;机器人算法的相关书籍则是不包含驱动电机和反馈传感器如何通过软件接口链接所必需的控制理论。目前市面上的书籍对于新手来说确实不太友好,相关的书籍和课程需要你拥有对应专业的学位,或者懂得一些高等数学,才能够去比较好地理解。
你做好学习本书的准备了吗?这本书将为你学习这部分学科节省4年乃至更多的时间,因为这部分学科里面的一些内容对于我们搭建并完成一个自主机器人的编程来说并不是必需的。这本书会给你一个清晰的学习路线图,并提供完整的机器人相关知识,以让你更好地学习。除此以外,在学习这些的基础上,我还会指明每门学科的重点以及所需要进一步学习的内容,这样你在学习完本书后就可以专注于探索自己最感兴趣的部分了。
本书的相关代码都已经在书里面显示并且在Github开源,相关的代码可以在github.com/lbrombach上下载。这本书的目的不是让你精确地按照我们的步骤一步步搭建并且对示例机器人进行演示编程,相反的是我们更鼓励你以自己的方式设计并给自己的机器人编程,只是以本书的例子作为参考。这本书会给你一个坚实的开始,而能走多远,取决于你的想像力和决心。
我写这本书是在和大学生合作时得到的灵感,这些学生有着各种不同的经验和能力。但我发现,无论是没有任何经验的大一新生,还是拥有计算机、电气和机械工程学位的研究生,他们都对机器人的制造和编程了解较少。最好的程序员也很有可能不知道电机或者传感器是如何工作的,而对应的是,电气工程师则不知道如何将传感器的数据信号转化为有效的编程代码。每一个学期,我们发现自己仍然在不断地反复教着各种科目的基础知识,为此,我们希望能有一本手册可以为我们的团队成员提供全面的基础知识讲解。特别是,我们需要一些对于新生来说足够简单,但对于研究生来说足够深入的课程。这就是本书写作的目的,因为对于本书来说,你只需要基本的C++知识和对机器人学习的兴趣就可以从浅到深地理解相关的知识。
这本书既适合初学者,也适合比较有经验的程序员。本书中编写的代码对于一个没有经验的程序员来说也是很容易理解的,因为我知道更有经验的程序员在编程方面应该没有问题。对于初学程序者来说,本书非常友好,首先本书使用C++语法来向你展示机器人算法的工作原理,但不要把它当作是一本“编程书”。随着编码能力的提高,你也会看到我们越来越多地避免使用初学者可能还不理解的C++高级用法,而是采用一些像全局变量这样易于理解的方式,这也使得示例更容易理解。其次,本书中所有程序都是可用的,虽然可能不是最佳代码示例。这是因为我们非常想避免整本书的代码难以读懂。当然本书中肯定会出现一些C++的高级用法,如果在书中不可避免地使用高级用法,我们会向你给出一定的提示。
送货机器人、仓库机器人、家用机器人、自制机器人、农场机器人——每一个机器人都有其独特的用途和操作环境,但不用担心,它们都是建立在本书学习的基础之上的。所以我建议你不要急于进入教程;相反,你应该先适应一下,阅读完整本书,然后回来进行实践体验。我希望你可以抱着兴奋的状态进入本书,因为是时候开始了。
我们为本书制定了五个部分,你可以在其中找到以下主题内容:
第一部分:机器人计算机介绍。该部分分为两个章节,第一章重点介绍笔记本电脑和树莓派计算机的选择和配置;第二章深入了解树莓派通用输入/输出(GPIO)硬件接口引脚,其中包括一些基本电子器件的信息和如何使用代码来与硬件完成交互。
第二部分:作为本书的第二部分,我们将这部分称为“机器人项目入门”。在本部分中,我们会重点介绍搭建机器人平台所需的知识,以便在后面的章节中对机器人进行自主行为编程。其中有五个章节讨论了可用的机器人平台类型,主要包括:获取或搭建一种电机并构建电机的控制算法、在机器人上完成不同设备间的通信、各种有用的硬件,以及计算机和机器人其他部分的布线。
第三部分:本节分六章向你介绍机器人的逻辑问题。其中一章会侧重于单个过程的控制器(如单个电机),以及设计一个复杂系统的控制器;另一章则关注如何协调数十个过程并处理大量的数据流量,这是我们构建自主建图导航机器人所必需的。剩余四章则是涵盖了自主机器人的主要问题,包括使机器人自行移动,为导航绘制地图,机器人如何自我跟踪,以及自主寻找避开障碍物的路径。
第四部分:我们将这一节称为“理解传感器数据的意义”,为此我们深入探究了上述章节中常用的传感器。这部分总共分为七章,其中五章涵盖了用于机器人跟踪(测距)的传感器,包括超声波传感器、激光测距传感器(LIDAR)、GPS和其他基于信标的定位系统。此外,还有一章专门讨论如何融合多个传感器的数据,以获得更可靠的系统,另一章则专门介绍另一大模块,即如何使用相机来完成计算机视觉相关的处理。
第五部分:最后一个部分是一个独立的章节,这一章主要是指导读者通过前面所学的内容来构建并完成一个自主机器人的编程。

精彩书摘

本书深入浅出地介绍了构建移动机器人平台所需的综合知识,涵盖了硬件和软件诸多方面。本书以清晰的学习路径和全面的底层逻辑为基石,帮助读者轻松地构建和编程机器人,避免了深入每个科目复杂部分的困难。书中聚焦于树莓派与硬件交互的编程,全面覆盖了从选用机器人控制器的微计算机(即树莓派)到为车轮驱动电机供电等系统性知识。读者可了解并掌握如何利用传感器检测障碍物、训练机器人建立地图并规划避障路径,以及实现代码的模块化和与其他机器人项目进行代码互换。此外,本书还详细阐述了如何运用树莓派的GPIO硬件接口端子和现有库,把树莓派转变成一个经济实用且性能卓越的机器人。
本书适合从事自动化、智能机器人、智能硬件、IOT领域的工程师以及树莓派爱好者阅读参考,无论是零基础的初学者,还是具备计算机科学、电气工程或机械工程背景的工程师或者高校师生,都能从本书中获益。你不仅能学习到驱动电机控制器的编程,还能了解从激光雷达数据构建地图、编写和实施自主路径规划算法、独立编写代码向电机驱动控制器发送路径点,以及更深入地学习机器人建图和导航的相关知识。

目录

绪论  001

第1章 选择并构建一个机器人计算机 002
1.1 什么是树莓派? 002
1.1.1 树莓派和微控制器有什么区别呢? 003
1.1.2 树莓派是机器人控制器的唯一选择吗? 003
1.1.3 难道树莓派只是为学校、爱好者和玩具而设计的吗? 003
1.2 树莓派型号的概念和应用以及为什么不是所有型号都能适合我们的需求 004
1.2.1 为什么树莓派型号不能适合我们所有的目的? 004
1.2.2 树莓派Zero型和树莓派Zero W型 005
1.2.3 树莓派2B型 006
1.2.4 树莓派3B型——最好的选择 006
1.2.5 树莓派3B+型 007
1.2.6 树莓派4代 007
1.3 操作系统的选择 007
1.3.1 Raspbian 008
1.3.2 Ubuntu 008
1.4 操作系统的安装和设置 009
1.4.1 在笔记本电脑或台式电脑上安装完整的Ubuntu桌面操作系统 010
1.4.2 在树莓派上安装Lubuntu系统 010
1.5 编程环境(IDE)的安装和设置 013
1.5.1 在笔记本电脑或台式电脑上安装VS Code 013
1.5.2 在树莓派上安装Code::Blocks 014
1.6 总结 015
1.7 问题 015

第2章 GPIO硬件接口引脚的概述及使用 016
2.1 简介 016
2.2 什么是GPIO引脚 016
2.3 GPIO到底是做什么的呢? 018
2.4 程序员的电子学 018
2.5 输出数据的类型 021
2.6 输入数据的类型  022
2.7 一些常见的电子硬件 024
2.7.1 面包板 024
2.7.2 作为输出的GPIO引脚 027
2.7.3 两种引脚编号系统 028
2.7.4 作为输入的GPIO引脚 028
2.8 使用C++程序访问树莓派的GPIO 030
2.8.1 安装PIGPIO 030
2.8.2 安装和设置PIGPIO库 031
2.8.3 确保Code::Blocks可以链接到PIGPIO 031
2.8.4 运行PIGPIO程序 032
2.9 我们的第一个GPIO项目——hello_blink 032
2.10 控制数字输出的数字输入——hello_button 034
2.11 GPIO事件的回调函数 036
2.12 结论 038

第3章 机器人平台 039
3.1 简介 039
3.2 目标 039
3.3 考虑机器人的尺寸大小和运行环境 040
3.4 差速驱动与阿克曼(Ackerman)转向的对比 041
3.4.1 差速驱动 042
3.4.2 阿克曼(Ackerman)转向 042
3.5 现成的机器人平台 042
3.5.1 大型的预搭建机器人 042
3.5.2 小型的预搭建机器人 043
3.6 自制机器人的技巧 044
3.6.1 搭建材料 045
3.6.2 电池 045
3.6.3 传动系统 045
3.6.4 机器人零件来源 046
3.7 改装扫地机器人或遥控车 047
3.7.1 带有接口的扫地机器人 047
3.7.2 与Roomba机器人对接  048
3.7.3 唤醒你的Roomba机器人 051
3.7.4 不带接口的扫地机器人 051
3.7.5 改装遥控车和卡车 052
3.8 总结 053
3.9 问题 053

第4章 机器人电机类型和电机控制 054
4.1 简介 054
4.2 目标 054
4.3 电机的类型 055
4.3.1 交流(AC)电机与直流(DC)电机 055
4.3.2 有刷直流电机 056
4.3.3 伺服电机 056
4.3.4 步进电机 057
4.3.5 无刷直流电机(又称为BLDC) 058
4.4 晶体管和电机驱动器的介绍 058
4.4.1 最基本的控制:开/关 058
4.4.2 晶体管 059
4.5 脉冲宽度调制(PWM) 061
4.5.1 用PWM来创造模拟电压 061
4.5.2 PWM作为控制信号 062
4.6 电机驱动器和电机控制器 063
4.6.1 电机驱动器 063
4.6.2 用L298N双H桥电机驱动器控制电机 065
4.7 电机控制器 067
4.8 结论 068
4.9 问题 068
4.10 挑战 068

第5章 与传感器和其他设备通信 069
5.1 简介 069
5.2 目标 069
5.3 二进制(逻辑)信号 069
5.3.1 开关去抖动 070
5.3.2 轮式编码器 071
5.3.3 来自模拟传感器的二进制信号 071
5.3.4 二进制通信简介 072
5.4 串行通信入门 072
5.4.1 UART串行通信 072
5.4.2 设置树莓派并测试UART串行通信 073
5.4.3 修复打开串行端口时的错误 076
5.5 I2C通信入门 076
5.5.1 在树莓派上设置和使用I2C设备 077
5.5.2 示例和测试程序:hello_i2c_lsm303  078
5.6 结论 081
5.7 问题 081

第6章 其他有用的硬件 082
6.1 简介 082
6.2 目标 082
6.3 电源 083
6.3.1 5V电源 083
6.3.2 可调电源 083
6.4 继电器模块 084
6.5 逻辑电平转换器 084
6.6 FTDI芯片 085
6.7 Arduino微控制器 086
6.8 Digispark微控制器 086
6.9 总结 087
6.10 问题 087

第7章 添加计算机来控制机器人 088
7.1 简介 088
7.2 结构 088
7.3 目标 089
7.4 步骤 089
7.4.1 安装计算机并为其供电 089
7.4.2 将计算机与机器人的其他组件相连 090
7.5 结论 091
7.6 问题 092

第8章 机器人的控制策略 093
8.1 简介 093
8.2 结构 093
8.3 目标 093
8.4 机器人控制:全局与局部 094
8.5 基本控制回路 095
8.5.1 观察和比较  095
8.5.2 响应 095
8.5.3 影响 096
8.6 开环控制器和闭环控制器 097
8.6.1 设计一个大局观控制器(也称为主控制器) 098
8.6.2 设计一个局部控制器(也称为进程控制器) 100
8.7 结论 104
8.8 问题 104

第9章 协调各个部件 105
9.1 简介 105
9.2 结构 105
9.3 目标 106
9.4 什么是机器人操作系统? 106
9.5 ROS与编写机器人控制软件 106
9.6 ROS和商业机器人产业 107
9.7 ROS的设置 107
9.7.1 在你笔记本电脑或台式机上安装ROS Melodic 108
9.7.2 在你的树莓派3B上安装ROS Kinetic 108
9.8 ROS概述和速成课程 110
9.9 一些有用的建议 115
9.10 创建和编写ROS包和节点 116
9.10.1 ROS文件系统 116
9.10.2 创建ROS包 116
9.10.3 编写ROS程序(节点) 117
9.10.4 下载、审阅和运行章节下载程序 123
9.11 使用roslaunch和.launch来简化工作 124
9.12 结论 124
9.13 问题 125

第10章 用于机器人导航的地图构建 126
10.1 简介 126
10.2 目标 127
10.3 角度、航向和距离等常规参数的规则 127
10.4 接收传感器数据 128
10.5 占用栅格地图(OGM) 129
10.6 用传感器数据构建占用栅格地图(OGM) 131
10.6.1 标记被占用的单元格 134
10.6.2 标记空闲单元格 136
10.6.3 完成建图 136
10.6.4 将地图作为ROS消息发布 136
10.7 ROS中的变换 138
10.7.1 理解变换 138
10.7.2 ROS中如何使用变换 139
10.7.3 使用静态变换发布器发布变换 140
10.7.4 用变换广播器从节点向外发布变换 141
10.7.5 在节点中获得转换数据 142
10.7.6 从命令行查看变换数据 143
10.8 用Gmapping绘制地图 143
10.8.1 Gmapping 143
10.8.2 下载Gmapping 144
10.8.3 运行Gmapping和启动文件中的参数 144
10.8.4 创建地图的步骤 145
10.9 用Rviz实现地图的可视化 146
10.10 保存地图并在以后使用 147
10.10.1 保存地图 147
10.10.2 加载先前保存的地图 148
10.11 总结 148
10.12 问题 149

第11章 机器人跟踪和定位 150
11.1 简介 150
11.2 目标 150
11.3 机器人位姿 151
11.3.1 将欧拉角转换为四元数 152
11.3.2 将四元数转换为欧拉角 153
11.4 里程计算和航迹推算 153
11.4.1 轮速计 154
11.4.2 计算每个轮子行驶的距离 156
11.4.3 计算机器人移动的总距离 157
11.4.4 计算航向角的变化 157
11.4.5 将机器人中的朝向变化添加到原来的朝向上 158
11.4.6 计算在x和y方向上移动的距离(也被叫作转换) 158
11.4.7 将计算的距离添加到前一个姿态估计中 158
11.4.8 航位推测 159
11.5 在ROS中发布姿态数据 160
11.6 里程计数据变换发布 162
11.7 进一步跟踪和定位 164
11.8 基准点 164
11.9 激光特征跟踪和定位 165
11.10 GPS和GNSS 166
11.11 基于信标的定位系统 166
11.12 总结 167
11.13 问题 167

第12章 自主运动  168
12.1 简介 168
12.2 目标 168
12.3 ROS机器人运动综述 168
12.4 电机控制器——simple_diff_drive.cpp  169
12.4.1 simple_diff_drive电机控制器的代码步骤 170
12.4.2 差动驱动电机控制器代码概述 170
12.4.3 差动电机控制器代码 171
12.5 驱动器控制器:simple_drive_controller.cpp 176
12.6 结论 180
12.7 问题 180

第13章 自主路径规划 181
13.1 简介 181
13.2 目标 181
13.3 路径规划方法与挑战 181
13.3.1 挑战 182
13.3.2 路径规划方法 182
13.4 障碍物膨胀 183
13.4.1 代价地图 183
13.4.2 costmap_2d包 184
13.5 A*路径规划 186
13.5.1 A*是如何工作的 187
13.5.2 A*算法的步骤 189
13.5.3 完成A*程序 190
13.6 将A*程序写成ROS节点 194
13.6.1 标准内容、辅助函数和main() 195
13.6.2 A*节点的核心:find_path() 203
13.7 结论 207
13.8 问题 208

第14章 里程计的轮式编码器 209
14.1 简介 209
14.2 目标 209
14.3 轮式编码器 209
14.4 光电编码器 210
14.5 霍尔效应编码器 210
14.6 编码器的接线 211
14.7 编码器tick信号发布——tick_publisher.cpp 212
14.8 结论 216
14.9 问题 216

第15章 超声波测距仪 217
15.1 简介 217
15.2 目标 217
15.3 HC-SR04超声波测距传感器基础知识 218
15.4 HC-SR04的接线 218
15.5 超声波范围数据发布器——ultrasonic_publisher. cpp 219
15.5.1 超声波范围数据发布者步骤 219
15.5.2 超声波范围数据发布者代码 220
15.6 用于物体探测的超声波范围数据 222
15.7 结论 223
15.8 问题 223

第16章 惯性测量单元——加速度计,陀螺仪和磁力计 224
16.1 简介 224
16.2 目标 225
16.3 加速度计 225
16.3.1 加速度计的缺点 226
16.3.2 在ROS中发布IMU数据 226
16.3.3 ROS中sensor_msgs::Imu数据类型 226
16.3.4 IMU消息发布者代码 228
16.4 陀螺仪 230
16.4.1 陀螺仪的缺点 231
16.4.2 向IMU节点添加陀螺仪数据 231
16.5 磁力计 232
16.5.1 磁力计的缺点 232
16.5.2 向IMU节点添加磁力计数据 232
16.6 安装IMU 234
16.7 总结 234
16.8 问题 234

第17章 GPS和外部信标系统  235
17.1 简介 235
17.2 目标 235
17.3 信标系统是如何工作的 236
17.4 GPS和GNSS基础知识 237
17.5 2cm精度级的GPS/GNSS-RTK 238
17.6 GPS/GNSS的局限性 239
17.7 GPS/GNSS数据格式 240
17.7.1 NMEA 数据字符串 240
17.7.2 一些关键的纬度/经度数据表示法 241
17.8 在ROS中发布GPS/GNSS数据 242
17.8.1 ROS软件包:nmea_navsat_driver 242
17.8.2 安装 nmea_navsat_driver包 243
17.8.3 阅读ROS软件包说明 243
17.8.4 运行带参数的nmea_serial_driver节点 244
17.9 总结 245
17.10 问题 245

第18章 激光雷达设备和数据 246
18.1 简介 246
18.2 目标 246
18.3 激光雷达基础知识 247
18.4 激光雷达的局限性 247
18.5 激光雷达的种类 248
18.5.1 单向(单点)激光雷达 248
18.5.2 2D激光雷达 248
18.5.3 3D激光雷达 249
18.5.4 从机器人吸尘器中获得激光雷达 249
18.6 选择激光雷达考虑的因素 250
18.7 激光雷达数据消息格式sensor_msgs:: LaserScan 251
18.8 激光雷达安装注意事项 253
18.9 配置、运行和测试一个普通的激光雷达装置 254
18.10 LaserScan信息的可视化 255
18.11 总结 258
18.12 问题 258

第19章 相机的实时视觉 259
19.1 简介 259
19.2 目标 259
19.3 图像是什么 260
19.3.1 图像属性 260
19.3.2 像素坐标系 261
19.3.3 检查并安装所需软件 261
19.3.4 ROS Kinetic 262
19.3.5 ROS Melodic 262
19.3.6 在ROS中测试OpenCV 263
19.4 图像处理软件(OpenCV)和ROS 264
19.4.1 步骤1:在ROS上发布图片 264
19.4.2 安装usb_cam_node 265
19.4.3 运行usb_cam_node 265
19.4.4 测试相机输出 266
19.4.5 步骤2:在其他节点订阅图片 267
19.4.6 创建你的ROS视觉包 267
19.4.7 编写图像消息订阅者 268
19.4.8 步骤3:使用cv-bridge将ROS使用的RGB图像转化成OpenCV可处理的BGR图像 269
19.4.9 步骤4:对图像实施希望的操作 269
19.4.10 步骤5:发布任何非图像数据作为自身的ROS信息 270
19.4.11 步骤6:将处理后的图像转化回RGB格式 270
19.4.12 步骤7:在所属话题下发布结果图像 270
19.4.13 更多图片处理基础 271
19.4.14 核算子、孔径与块 271
19.5 使用图片副本而不是原图像的重要性 272
19.5.1 关于光照的问题 272
19.5.2 重新审视步骤4——更多可能的OpenCV操作 272
19.5.3 图片色彩格式转换函数:cvtColor() 273
19.5.4 图片滤波函数:blur(),medianBlur(),GaussianBlur() 273
19.5.5 图片边缘检测函数:Canny() 274
19.6 将图像上的边缘变为数字线条:HoughLinesP() 275
19.7 图片颜色空间转换函数:cvtColor()与inRange() 280
19.8 各式各样有用的ROS工具 283
19.9 高级OpenCV与进阶 283
19.10 基于云的图像识别 284
19.11 结论 284
19.12 问题 284

第20章 传感器融合 285
20.1 简介 285
20.2 目标 285
20.3 如何让传感器融合变得简单 286
20.4 博世BN0055绝对方向传感器 286
20.5 改进后的测距仪 287
20.6 集成BN0055——硬件和ROS发布者 288
20.7 整合BN0055——测距节点 289
20.7.1 第1步:订阅IMU信息 289
20.7.2 第2步:确认方向没有被标记为不使用 289
20.7.3 第3步:将四元数转换成欧拉角 290
20.7.4 第4步:如果是第一个IMU 信息,则保存偏移信息 290
20.7.5 第5.1步:如果不是第一条IMU信息,则保存 IMU航向 291
20.7.6 第5.2步:将新的航向应用于里程计中  291
20.8 第二代传感器融合——一种更全面的方法 292
20.9 协方差矩阵 293
20.10 ROS信息中的协方差矩阵 295
20.11 robot_pose_ekf节点 296
20.11.1 安装robot_pose_ekf 296
20.11.2 运行robot_pose_ekf 296
20.12 关于变换和roslaunch的最后说明 298
20.13 结论 298
20.14 问题 298

第21章 构建并完成一个自主的机器人的编程 299
21.1 简介 299
21.2 目标 300
21.3 第1部分——构建物理机器人平台 300
21.3.1 机器人平台——总体概览和零件清单 301
21.3.2 车轮/电机模块 302
21.3.3 电机驱动器 303
21.3.4 轮毂 303
21.3.5 电池和充电器 303
21.3.6 底盘/底座 304
21.3.7 计算机 305
21.3.8 激光雷达或其他测距传感器 305
21.3.9 轮式编码器 306
21.3.10 IMU 306
21.3.11 计算机的电压转换器 306
21.3.12 GPIO集线器分线板 307
21.3.13 相机 307
21.3.14 电压表 307
21.3.15 其他材料 308
21.3.16 安装机器人平台 308
21.3.17 安装轮毂模块和脚轮 310
21.3.18 安装电机驱动器、端子排和计算机电源 311
21.3.19 准备好GPIO分线板 311
21.3.20 安装计算机、GPIO分线板和IMU 312
21.3.21 完成布线并安装电池 312
21.3.22 安装激光雷达和摄像头 312
21.4 第1部分——结论 313
21.5 第2部分——为机器人编程 314
21.5.1 程序设计——总览 314
21.5.2 为你的机器人编程——详细步骤 315
21.5.3 运行你的自主机器人! 324
21.5.4 一些故障排除提示 324
21.6 下一步需要是什么? 325
21.6.1 动态避障 325
21.6.2 PID控制器 326
21.6.3 一个主控制器,管理各种程序或任务 326
21.6.4 实现从地图到地图的转换(完全定位) 326
21.6.5 请关注facebook.com/practicalrobotics和 youtube.com/practicalrobotics 326
21.7 结论 327

发送电子邮件联系我们