正如GoPiGo的官方文档(https://www.dexterindustries.com/GoPiGo/learning/technical-specifications-for-the-gopigo-raspberry-pi-robotics-kit/)所描述的,GoPiGo3机器人的规格如下:
这只是1.2.1节中介绍内容的概要。在本节中,我们将重点介绍连接GoPiGo3板的设备。
安装到GoPiGo3上的传感器可以实现机器人的顶级任务,那就是运动规划导航,同时保持低成本。这些传感器如下:
在使用巡线跟随器的情况下,由于机器人将沿着地板上的标记路径(通常涂成黑色)行进,因此可以跳过运动规划部分,并且导航会更加容易。如果路径上有障碍物,则必须应用一种算法来绕过障碍物并返回路径,也就是说,将巡线跟随器传感器再次置于黑线上方。
现在,应该花些时间了解每个传感器提供的信息。在本书的后续章节中将学习导航问题以及可用于解决该问题的算法。
简单的距离传感器使机器人能够测量其与前方物体的距离。它具备一个小型激光器,可以测量到物体的距离。传感器采用飞行时间(time of flight,tof)方法非常快速和准确地测定距离。产品页面可在https://www.dexterindustries.com/product/distance-sensor/浏览,见图1-7。
图 1-7
图片来自Dexter Industries:https://shop.dexterindustries.com/media/catalog/product/cache/4/image/1800x2400/9df78eab33525d08d6e5fb8d27136e95/d/e/dexter-industries-raspberry-pi-robot-distance-sensor-for-robots-front-of-sensor-1.jpg
可以将距离传感器连接到2个I2C端口中的任何一个。请注意,GoPiGo3软件库不会要求指定使用2个端口中的某一个,这将被自动检测到。
可以将传感器安装到伺服软件包上用于扫描约180°的广角。伺服电动机可以连接到伺服端口1或端口2。该产品页面可在https://www.dexterindustries.com/product/servo-package/浏览,见图1-8。
图 1-8
图片来自Modular Robotics:https://www.dexterindustries.com/wp-content/uploads/2019/09/GoPiGo3-Molded-Servo-Frontal-300x200.jpg
在第2章中,可以使用机器人进行特定测试以检查该单元是否正常工作。
GoPiGo3的巡线跟随器由6对LED光电晶体管组成。当将传感器放在前面读取字母时,LED发射器是每对中最右边的部分。可以在图1-9中的照片中看到,这是有源传感器的图片,尽管仍然看不到LED光束。
图 1-9
为什么在图片中看不到它们?由于LED发出红外光,因此眼睛无法察觉。但是,可以通过手机摄像头将其显示出来(默认情况下,这些摄像头的光学系统不包含红外滤镜)。因此,如果之后发现巡线跟随器工作不正常,则必须检查的第一件事就是硬件。为此,只需使用智能手机所带的摄像头应用程序拍照即可。
在图1-10中,传感器视图被故意模糊了,以便可以看到光线并确认光束来自LED光电晶体管的右侧。接收部分(即光电晶体管)是用于检测是否存在来自LED发射器的反射光的组件。此组件的产品页面可在https://www.dexterindustries.com/product/line-follower-sensor/浏览,见图1-10。
图 1-10
现在,可以了解巡线跟随器传感器的工作原理:
反射使传感器电子设备反馈接近1(白色表面)的信号,而吸收则提供接近0(黑色表面)的值。但是,如果传感器远离地面或不面对地面怎么办?好吧,从传感器的角度来看,吸收等于没有反射。因此,报告的信号接近于零。此属性使GoPiGo3不仅可以沿着地面上的黑色路径行走,还可以沿着边缘行走,避免可能损坏机器人的本体的掉落。
由于有6对传感器,因此有6个信号,每个信号报告0或1。这6个数字将使我们推断出机器人在黑线上居中的程度。传感器的规格如下:
图1-11是发射器-接收器的底视图。该传感器表面必须在地板上方几毫米处,以确保正确接收LED的发射。
图 1-11
图片来自Modular Robotics:https://shop.dexterindustries.com/media/catalog/product/cache/4/thumbnail/1800x2400/9df78eab33525d08d6e5fb8d27136e95/l/i/linefollower_bottom.jpg
图1-12显示了在适当位置(即在地面上方)安装在GoPiGo3上的巡线跟随器传感器。
图 1-12
图片来自Modular Robotics:http://www.dexterindustries.com/wp-content/uploads/2019/03/linefollowerinaction.jpg
有关如何组装和校准传感器的说明,查阅网址https://www.dexterindustries.com/GoPiGo/line-follower-v2-black-board-getting-started/。可以选择巡线跟随器传感器上的这2种I2C接口之一进行连接。请注意,距离传感器也将使用其中一个接口。
如果使用Raspbian,巡线跟随器也可以连接AD端口之一。对于机器人(https://www.dexterindustries.com/raspberry-pi-robot-software/)。它提供了更高级的使用,此设置的代码略有不同。
对于引入机器人的目的,我们将很容易通过传感器连接到一个I2C端口,并使用更友好的DexterOS(https://www.dexterindustries.com/dexteros/)。在第2章中,将介绍可以与机器人一起运行的特定测试以检查该单元是否正常运行。
IMU传感器使我们能够测量机器人的方位,并获得其移动位置的估计值。Dexter Industries IMU的产品页面见https://www.dexterindustries.com/product/imu-sensor/。这个传感器的参数可以从图1-13得到。
图 1-13
图片来自Dexter Industries:https://shop.dexterindustries.com/media/catalog/product/cache/4/thumbnail/1800x2400/9df78eab33525d08d6e5fb8d27136e95/i/m/imu-sensor_mount2-800x800.jpg
在图1-14中,可以看到它已安装在GoPiGo3上。要连接到机器人,只需将其插入GoPiGo板上的AD1或AD2。
图 1-14
图片来自Dexter Industries:https://shop.dexterindustries.com/media/catalog/product/cache/4/thumbnail/1800x2400/9df78eab33525d08d6e5fb8d27136e95/i/m/imu-sensor_gpg3_3.jpg
该IMU具有九个 自由度 (degree of freedom,DOF),以及温度测量功能。让我们介绍一下IMU的每个传感器以及它们提供什么样的数据:
六自由度IMU是结合了加速度计(三个自由度)和陀螺仪(三个自由度)的IMU:
通过组合来自加速度计和陀螺仪的6个值,可以获得更好的方向测量。由欧拉方式表达角度 α 、 β 、 γ 见图1-15。
图 1-15
图片来自https://commons.wikimedia.org/wiki/File:Euler_angles_zxz_int%2Baxes.png,许可证CC BY-SA 4.0
比欧拉角更常用的是泰特-布赖恩(Tait-Bryan)版本或导航角,倾斜-俯仰-偏航,其定义见图1-16。
图 1-16
图片来自https://es.m.wikipedia.org/wiki/Archivo:Flight_dynamics_with_text.png,许可证CC BY-SA 3.0
这些角度是通过将特殊的滤波器(称为 互补滤波器 ,complimentary filter)应用于传感器的信号而获得的。滤波器是这样工作的:
数学上,互补滤波器表示如下:
θ = A ·( θ prev + θ gyro )+ B · θ accel
此处, A 和 B 相加必须为1。这些常数由传感器的校准确定,典型值包括 A =0.98, B =0.02。互补滤波器提供的结果与卡尔曼滤波器非常相似,后者是 最佳线性(无偏)估计器 (Best Linear Estimator,BLE),但计算量更大。
现在,我们有三个(绕 X 、 Y 、 Z 轴)的旋转量,但是它们还不是绝对角度:
因此,通过6+3=9自由度IMU,我们具有了机器人的绝对方向,作为重力和磁场向量的参考。在第2章中,我们全面对机器人进行了特定测试,检查该单元是否正常工作。
Pi摄像头是具有 摄像头串行接口 (Camera Serial Interface,CSI)的定制2D摄像头。图1-17显示了两个物理部件,即摄像头的电子板和带状线缆:
图 1-17
图片来自https://commons.wikimedia.org/wiki/File:Raspberry_Pi_Camera_Module_v2_with_ribbon.jpg,许可证CC BY-SA 4.0
在图1-18中,我们可以看到摄像头功能区如何连接到Raspberry Pi的CSI端口:
图 1-18
图片来自https://www.flickr.com/photos/nez/9398354549/in/photostream(作者:Andrew),许可证CC BY-SA 2.0
Pi摄像头能够提供帧速率高达30帧/秒(Frames Per Second,FPS)的高清分辨率(1920×1080像素)。可以在https://picamera.readthedocs.io/en/release-1.12/fov.html.的文档中找到配置说明文档。在第2章中,我们将进行一个特定的测试,可以用机器人运行,检查本机是否工作正常。