雷竞技注册
项目

C-饼干:系统集成和测试

2016年11月28日经过罗伯特·凯

最后,我们拥有功能机器人所需的一切。让我们把这些作品放在一起,看看C-Biscuit Demo Bot可以做些什么。

最后,我们拥有功能机器人所需的一切。让我们把这些作品放在一起,看看C-Biscuit Demo Bot可以做些什么。

C-BISCUIT系列

  1. C-Biscuit:黑客和爱好者的机器人平台
  2. C-Biscuit:设计选择和理由
  3. c -饼干电源:5V 3A降压调节器为棒板
  4. C-BISCUIT电源:撬棍保护电路,用于5V调节器
  5. C-饼干:操作的大脑
  6. C-BISCUIT电源:调节器和撬棍电路的组装和测试
  7. C-Biscuit:监控机器人的健康状况
  8. C-饼干:机器人系统架构
  9. C-饼干:RCB微控制器,电机控制器的原理图设计
  10. C-饼干:RCB功率,步进的原理图设计
  11. C-BISCUIT:机器人控制板的布局和装配
  12. C-饼干:系统集成和测试

支持信息

与魔杖一起,用pi

雷竞技最新app电子项目,就像生活中的许多其他事情一样,并不总是以我们期望的方式制定。C-Biscuit Demo Bot绝对是这种情况,这已经采取了一些曲折,然后转向成为一个功能系统。当我们决定消除羽阳板并用覆盆子PI 3替换时,最终发生的最大扭曲/转弯。

这种变化的主导原因非常简单 - 羽鹬已经成为我们主要设计目标的障碍,即通过Wi-Fi将从机器人的实时视频传输到计算机。在初步尝试失败后,C-Biscuit团队上没有人知道如何完成这一点。It was one of those situations where we expected the third-party software environment to handle the details of the video transmission and, when it became clear that this was not exactly the case—well, let’s just say that the Wandboard quickly fell out of favor.

幸运的是,帕特里克提出了搁架羽鹬和使用a的优秀主意覆盆子PI.反而。这也意味着使用覆盆子PI相机而不是魔杖摄像头,因为我们当然不能期望一个魔杖板摄像头和树莓派无缝连接(无缝是我们想要的——也许有某种方法可以让魔杖摄像头和Pi对话,但我们更愿意再花30美元买一个这样的摄像头只是作品)。

为什么π?

Raspberry PI拥有比羽筒板更完全开发的软件支持,并让我们可以访问更大的经验(来自AAC贡献者和更广泛的RPI社区)。它也比羽鹬更小,更便宜。对于我们希望C饼干支持的一些图像处理任务,PI可能足够强大,但我们可以稍后担心。目前,我们只需要无线视频馈送和一些基本的串行通信,并且RPI 3肯定可以提供该功能。

我们肯定对使用PI相机(版本2)没有遗憾。该模块确实毫不费力地接口RPI,它提供高分辨率(800万像素)以及各种有用的功能(可定制的输出分辨率和帧速率,图像旋转,亮度和对比度调整等)。

现在你知道为什么C-BISCUIT最后是Pi而不是Wand;以下是更新后的框图:

幸运的是,RPi可以使用最初为Wandboard设计的相同的5 V电源和UART连接,所以我们不需要对机器人控制板(RCB)做任何修改。万岁!

硬件

让我们来看看机器人的组装方式,然后我们将介绍有关视频和通信接口的一些细节。

因此,电池和RCB位于上层,RPI下面关闭。将相机插入到RCB前边缘附近的双行标题中;我在后排销钉周围缠绕了一些电气胶带,使得它们在相机PCB的背面上没有清除任何内容(胶带也确保贴合贴合)。

这种安排对于崎岖的地形不足,但初始测试和演示应该是很好的。以下是一些装配详情:

  • 当12v被送到RCB时,机器人就被启用,当两个电源连接器配对并关闭电源开关时,12v被送到RCB。

  • RPI通过其USB连接器供电。我只切掉了标准微USB电缆的一端,然后将电源和接地线连接到RCB上的5 V和GND螺钉端子。事实证明,红线是电源,黑线是地面,我可能敢于假设所有电缆制造商都遵循这种相当良好的彩色码定制;尽管如此,始终突破您的万用表,并找到一种方法可以在插入所有内容并翻转交换机之前仔细检查引脚。
  • 串行通信通过两条线从RPi的UART Tx和Rx引脚到RCB的UART Rx和Tx信号。不需要地线,因为电源连接确保RCB和RPi具有相同的接地电位。地面要包括一个专门为UART接口如果我们担心信号的完整性,但在这种情况下我们不会将任何界限我们使用的是3.3 V逻辑以惊人的速度9600波特,和UART行像样的物理分离从嘈杂的汽车。
  • 请注意我如何在一本书上搁置机器人,以便坦克胎面不与表面接触。这是一种简单而非常有效的方法,可以防止您的机器人在遇到固件故障或意外敲击电源开关或者不敲击后的噩梦场景。

世界上最好的RPi视频软件

好吧,好吧,我只尝试了两种技术;第一个没有工作,第二个做了。但是在羽阳板困难之后,通过第一个RPI尝试产生的卷积失败,看看第二种解决方案有多令人印象深刻。软件包称为RPI CAM Web界面,您可以阅读所有信息在这里

我将跳过细节,因为很广泛维基有你需要知道的一切开始。整个过程如下:将RPi连接到您的网络,可以通过电缆或Wi-Fi。在RPi上安装软件并运行。然后你只需打开你最喜欢的浏览器,在地址栏中输入“http://RPi_IP_address:port/subfolder”就可以连接到视频流(详情请参阅wiki)。你看到的是:

低延迟视频出现在浏览器窗口,你也可以捕捉图像或视频和修改摄像头设置:

这不是一个自主机器人

如果机器人能做的只是绕圈移动或向前行驶,直到撞到墙,那么它就不是很有用。因此,我们需要一种方便的方式来控制它的移动,而这正是下面的Python脚本提供的:

导入串行Ser =序列号“输入命令:”)如果响应==“转发”:ser.write(“转发\ r”.encode())elif response ==“反向”:ser.write(“反向\ r”.encode())elif response ==“go”:ser.write(“go \ r”.encode())elif response ==“stop”:ser.write(“stop \ r”.encode())elif response ==“s“:ser.write(”stop \ r“.encode())elif not响应:ser.write(”stop \ r“.encode())elif response ==”旋转r“:ser.write(”旋转r\ r“.encode())Elif response ==”旋转l“:ser.write(”旋转l \ r“.encode())Elif响应==”低速“:Ser.write(”低速\ r“.encode())elif response ==”高速“:ser.write(”高速\ r“.encode())elif响应==”非常高速“:ser.write(”非常高速\ r“.encode())Elif Response ==”电池电压?“:Ser.Write(”电池电压?\ R“.encode())打印(Ser.read(23))Elif响应==”禁用电池保护“:SER.WRITE(”禁用电池保护\ R“.encode())Elif Response ==”启用电池保护“:SER.WRITE(”启用电池保护\ R“.encode())Elif Response ==”出口“:休息

CBISCUIT_RobotControlScript.zip

脚本本身是不言自明的。它要求输入,然后查看用户输入的字符串,以便在UART上确定应传输哪些(如果有的话)ASCII消息。RCB上的EFM8微控制器然后接收消息并相应地控制电机。

但是如果我们没有直接访问RPI,我们如何使用脚本?这就是SSH进来的地方。(点击在这里有关通过SSH控制树莓派的更多信息。)我们已经有了Wi-Fi网络连接,所以我们只需SSH进入RPi,然后通过控制台运行脚本。

您可能会注意到Python脚本中有三个停止命令。除了“stop”,我们还有“s”和一个空字符串。这是一个重要的功能,因为它确保你将能够快速停止机器人,即使在压力下。

让我们说你已经分心了一分钟,然后你所知道的下一件事,你的机器人即将摔倒楼梯,或以高速跑到一扇门,或者敲打你最喜欢的室内植物。您可能没有时间键入“停止”,这就是为什么脚本旨在将“s”解释为“stop” - 您有时间击中一个字母,然后是输入键。

但是,有最糟糕的情况:你的机器人处于严重的危险和恐慌。也许你不记得停止命令,或者也许你在试图发送“s”命令时,你会在错误的钥匙上击中错误的钥匙。好吧,你也在这里覆盖,因为你必须做的就是停止机器人是按ENTER键!如果您只按了输入的内容,RAW_INPUT()函数的返回字符串将为空,并且脚本将空字符串解释为stop命令。

此屏幕截图为您提供了遵循的视频中显示的机器人移动的命令序列:

固件

固件非常简单。有一个简单的UART接口,用于与RPI通信,可编程计数器阵列(PCA)用于生成PWM电机驱动信号。您可以使用以下链接下载所有源和项目文件。代码使用描述性标识符并进行了彻底的评论,因此您不应该有很多麻烦了解细节。

cbiscuit_robotcontrolfirmware.zip.zip.

你会注意到的一件事是USB通信的附加文件和代码。您现在可以忽略这个,因为USB功能没有在演示机器人固件中实现。

结论

我们现在有了一个功能齐全的C-BISCUIT演示机器人,这意味着本系列文章已经完成。但是,请记住,C-BISCUIT不是一个单一的机器人,而是一个机器人项目的平台。换句话说,这个演示机器人只是一个开始!