1.5 快速硬件测试
为了执行快速测试并专注于此机器人硬件,将使用由Dexter Industries创建的基于Raspbian的发行版DexterOS,它可以方便用户快速入门。操作系统的详细信息在网址https://www.dexterindustries.com/dexteros/提供。Dexter Industries通过提供一个简单的网络环境,简化了接口,从而不必处理一个完整的Linux桌面。
可以通过连接到名为GoPiGo的Wi-Fi接入点访问它(不需要密码)。这样,将直接通过笔记本电脑连接到机器人。在安装它之前,让我们检查一下可用资源。
1.5.1 资源
使用机器人时,将至少管理三个站点/库。
Dexter Industries的官方库托管在GitHub中。这些网址如下:
- GoPiGo3官方库(GoPiGo3 official library):https://github.com/DexterInd/GoPiGo3。该存储库不仅包含多种语言(Python、Scratch、C、Javascript、Go等)的API,而且还包含示例和完整项目,我们将在下一章中使用其中的一些案例将其扩展到ROS。
- DI传感器库(DI sensors library):https://github.com/DexterInd/DI_Sensors。该库涵盖了Dexter Industries提供的所有传感器,而不仅仅是GoPiGo3中使用的传感器。有适用于Python、Scratch、C#和Node.js的API。
- 基于网络的学习平台(Web-based learning platform):https://edu.workbencheducation.com/。这是一个为GoPiGo3设计的从零起步引导学习的训练场地。
1.5.2 DexterOS入门
通过1.4节的第1阶段和第2阶段学习后,通过在网址https://www.dexterindustries.com/dexteros/get-dexteros-operating-system-for-raspberry-pi-robotics/完成相应的步骤,在那里可以下载操作系统的镜像文件,然后按照说明来刻录到微型SD卡(https://www.balena.io/etcher/)。请按照以下步骤开始使用DexterOS:
1)将卡放入Raspberry Pi的插槽中后,打开GoPiGo板并连接到它创建的Wi-Fi网络(其SSID为GoPiGo,无密码)。
2)完成之后,打开http://mygopigo.com或http://10.10.10.10获取对机器人环境的访问权限,此时登录页面看起来如图1-20所示。可以在https://edu.workbencheducation.com/cwists/preview/26657x看到一步步的操作流程。
图 1-20
请注意,如果需要保持笔记本电脑的Internet连接(有线),则应连接到机器人IP地址http://10.10.10.10。如果需要帮助,可以访问在DexterOS论坛的https://forum.dexterindustries.com/c/DexterOS。
从此开始,如在登录页面上所看到的,可以执行以下操作:
- DRIVE:通过基本控制面板使机器人向各个方向移动。
- LEARN:按照Bloxter引导教程(选择一个语言)或使用Python Jupyter实验室笔记本。
- Code in Bloxter:基于谷歌的开源Blockly可视化编程语言(https://github.com/google/blockly)。
- Code in Python:我们将用于开发机器人技术培训的主要环境。
接下来,我们将开始使用Bloxter进行编程。
1.5.3 用Bloxter编程
在可用的编程语言中,Bloxter使得在无须键入代码情况下有机会学习机器人技术。使用可视化界面,可以排列和连接模块,并快速开发基本程序来控制GoPiGo3。让我们开始吧:
1)通过单击登录页面中的LEARN,然后单击Lessons in Bloxter,可以访问可用的课程,见图1-21。
图 1-21
2)考虑到排序的难度越来越大,请选择喜欢的一个,见图1-22。
图 1-22
我们鼓励在第2章开始前完成Bloxter的LEARN部分片段。这些课程很容易上手,并且比起简单地阅读文档,可以从中学到更多有关GoPiGo3的知识。
1.5.4 校准机器人
请按照以下步骤校准机器人:
1)回到主页http://mygopigo.com/,然后在登录页的手形图标上点击右键。将弹出一个帮助屏幕,其中有两个按钮,一个用于校准,另一个用于检查电池状态,见图1-23。
图 1-23
2)单击Check Vital Signs,检查生命体征,见图1-24。
图 1-24
3)现在,单击前一个按钮Test the precision of your robot and calibrate it。
将看到图1-25中的屏幕。
图 1-25
4)调整尺寸,使其与机器人尺寸匹配:
- 车轮直径(Wheel Diameter):在地面上标出2 m的距离,然后单击Drive 2m按钮。如果GoPiGo3刚好到达终点,则66.5 mm即可。如果没有到达,则应稍微增加直径;如果它超过终点线,则应减小。再次测试。通过反复试验,将找到最适合自己机器人的直径。
- 车轮之间的距离(Distance between wheels):此过程非常相似,唯一的不同是,在这种情况下,当按Spin a full rotation时,机器人将围绕自身旋转。如果GoPiGo3完成了完整的360°,117 mm即可。如果未完成转弯,则应缩短距离;如果旋转角度超过360°,则应增加。再次测试。通过反复试验,将能够调整该距离,就像车轮直径一样。
1.5.5 驱动机器人
要驱动机器人,请按照如下步骤操作:
1)关闭帮助窗口,然后在主页上选择DRIVE项。
2)单击此按钮,可以访问一个面板,在该面板上可以控制向前/向后移动机器人以及向右/向左旋转机器人。继续检查GoPiGo3是否按预期移动。
3)每当需要停止运动时,请按键盘的空格键,见图1-26。
图 1-26
接下来,将检查传感器。
1.5.6 检查传感器
请按照以下步骤检查传感器:
1)返回主页并单击Code in Bloxter。
2)在屏幕的右侧,将看到一个滑动窗口,可以在其中显示已连接到每个传感器的端口。就此示例而言,设置了以下配置:
- 距离传感器插入到I2C-1,GoPiGo3上左手侧上的I2C。
- 巡线跟随器的I2C-2,右侧的I2C。
- IMU传感器连接到AD1(左侧)。
3)在DexterOS中选择端口后,将会出现每个端口的下拉菜单,可进行选择,这与来自传感器的实时数据有关,见图1-27。
图 1-27
4)检查距离传感器、巡线跟随器和IMU所提供读数。在距离传感器中,可能会收到错误未知消息。不用担心,传感器没有损坏,只是软件错误。在下一章中使用Python时,肯定会获得正常的数据。
5)最后,让我们看一下更复杂的IMU传感器的数据。设置其连接到AD1之后,窗口将提示(当选择Inertial Measurement Unit或Inertial Measurement Unit(data)时):在空中旋转机器人3秒钟,以校准其方向。这样,通过结合地球的重力和磁场来获得绝对方向参考。然后,如果从下拉列表中选择Inertial Measurement Unit,将看到实时读取的欧拉角。如果它们已经正确完成校准,应该出现以下内容:
- 当GoPiGo3处于水平表面并朝东时,欧拉航向的所有三个角度(偏航、倾斜和俯仰)均为零。在这种情况下,Z轴(在传感器中绘制)指向南方。
- 在此位置,如果用手将GoPiGo3绕Z轴旋转90°,则倾斜角度将为90°,X轴将指向上方(指向中心)。
- 回到原始位置,如果用双手围绕X轴+90°旋转GoPiGo3,则俯仰角将为90°,Y轴将指向南。
图1-28显示了IMU在GoPiGo3中的物理位置。
图 1-28
当在下一章中使用Python对机器人进行编程时,将学习如何使用Pi摄像头。
1.5.7 关闭机器人
使用GoPiGo3完成第一个机器人之旅,只需长按GoPiGo红色电路板的黑色按钮。几秒钟后,红色LED指示灯将停止闪烁,表示关闭过程已完成。