关于机器人“菲洛索特罗”的构建与运行
扫描二维码
随时随地手机看文章
在过去的 250 年里,我们在自动化方面取得了巨大的进步。这为我们带来了远超我们想象的更多舒适与便利。很快,我们甚至还会创造出音乐、食物、娱乐、战争和爱情。目前还有一项工作尚未着手:哲学。
于是便出现了“菲洛斯托克”机器人,来处理这一极其棘手的问题。它位于一扇窗户旁,会发出一些含义模糊的讯息,这些讯息会被人们误解并争论数百年之久。
数据流
1. Raspberry Pi 通过一个芯片来控制伺服电机,使其移动到任意位置(可选)。
2. 相机拍摄一张照片,并将其传回给树莓派。
3. 这张图片通过他们的应用程序接口传给了“月之梦想”公司。
4. 它会简短地描述所看到的内容,并以一张图片配文的形式作出回复。
5. 这段说明文字与最新存储的想法相结合,然后将被传递给“吉姆尼特”API。
6. 一个新的智慧片段被生成并传送回来。
7. 这个想法以及相关的图片会本地保存下来。
8. 用于查看时,会显示一个本地网站。
树莓派设置
我们选择的是无桌面环境的配置方案。这意味着它不会配备桌面系统,也不会运行任何图形界面组件。这里有关于如何使用 Raspberry Pi 的入门指南,还有关于远程访问的优质教程。
设置远程访问是可选的,桌面版也很不错。我通常会选择无显示设置,因为我更喜欢通过笔记本电脑进行工作,这样就不需要另外配备显示器、鼠标和键盘了。
一旦 MicroSD 卡写入完成并准备就绪,我们就可以将这张卡插入指定的插槽中,接通电源,然后树莓派就会启动运行了。
更新、升级、自动删除和清理
一旦硬件准备就绪,并且我们能够直接访问或通过 SSH 进行操作,我们就执行以下命令,确保一切处于最新状态且干净无误:
相机设置
我们的“智者”设备的图像将由一个 USB 摄像头提供。我们只需将其插入我们的树莓派的 USB 接口即可。完成连接后,我们可以通过运行以下命令来检查其是否已连接:
如您所见,我们的网络摄像头已被注册为 USB 设备 004 。
云台调节(可选)
此步骤完全是可选的。如果您希望设置更简单些,可以将摄像头保持静止状态,并使用标准电源为树莓派供电。
云台部件
你所看到的一切,决定了你的现实。为了让我们的导师能够有不同的视角,我们使用了汤米·张设计的这个 3D 打印的云台装置,在每次拍摄前将摄像机移动到不同的位置。
这种设置使用了两台 MG996R 180 度伺服电机用于移动,一个 PCA9685 芯片用于电源供应和对这些伺服电机的控制,还有一个 LM2596S 降压转换器。该转换器会将来自 V88 电池的 12 伏电压调整至 6.4 伏,并将其输入到伺服控制芯片(PCA9685)的电源端。要将该芯片连接到我们的树莓派上,您可以参考 Adafruit 提供的这个教程。
为了将网络摄像头安装到云台装置上,我们在底板和摄像头底部都粘贴了一些魔术贴(见图)。这样我们就能轻松地拆卸和调整摄像头的位置。它足够坚固,能够固定好所有部件,同时又足够灵活,便于进行校准,而且还有一个额外的好处,就是能够减轻伺服系统带来的部分震动。
由于我们已经有了伏塔克 V88 电池来为云台装置供电,那么我们不妨也用它来为树莓派本身供电。我们只需用一根 USB-C 线将电池与树莓派连接起来,一切就都准备好了。这还有一个额外的好处,那就是能让机器人变得完全便携。
中心控制伺服系统
一旦完成设置,我们就可以运行校准脚本,将两个伺服器调整到默认位置(90 度),这是它们活动范围内的中心点。然后我们拧紧水平旋转部件,并对倾斜部件也进行同样的操作。这样可以确保整个设置看起来是笔直向前且完全居中的。如果不这样做,移动伺服器可能会使其撞到自己或者看起来偏向一侧太远。
“盒子”
为了保持一切井井有条,我们选择将电子设备装在一个精致的纸板箱里。摄像机装置安装在箱盖上,电线从两侧的开口处穿过,而电子元件则被放置在箱内。
为了将相机固定在盖子上,并管理内部的电子设备,我们使用的是可粘贴的魔术贴贴纸。这些贴纸结实、小巧,能确保所有部件都固定到位。
观察
安装好摄像头后,我们就可以开始观察这个世界了。我们使用一个 Python 脚本和 opencv 库来连接摄像头并拍摄照片。
然后这张图片会被发送至“月梦”API,该API会为我们提供图片的简短描述。“月梦”有一个免费版本,每月会赠送 5 美元用于试验使用,这对于这个项目来说已经足够了。
如果全景旋转装置是机器人的一部分,我们还会添加一些代码来初始化控制芯片,并在每次拍摄照片之前将伺服电机移动到随机位置,从而动态地改变拍摄场景。
深度分析
有了这个简短的描述,我们现在会收集之前的思考内容,将它们整合起来,并将其发送给外部大脑进行处理。通过包含之前的思考内容,我们构建了一个相互关联的思想链,这在某种程度上类似于意识流。
这种思维能力是由谷歌人工智能工作室提供的。他们提供了一个免费版本,但每天的总请求量非常有限(只有 12 次),所以我选择了升级。如果全天 24 小时运行,每天的费用将不到 2 美分。免费版本已经足够了,但大约 24 分钟后就会用完。
我们这位深度思考者的“核心”在于我们给予它的指令。我们引导毕格尼利用图像的描述以及之前的陈词滥调,将它们结合起来,形成新的见解,具体方法如下:
网站
如果能以一种用户友好的方式浏览 Philosotrons 的流程和考量因素,那将会非常不错。因此,为了摆脱 JSON 文件和文件夹结构,我们正在构建一个小型本地网站来获取所有相关数据,并将其清晰地展示出来。为此,我们将使用 Flask 作为后端框架,使用 Tailwind 作为前端框架。
这个前端界面将起到档案的作用,设有日期选择器和时间顺序列表,以突出我们这位伟大思想家的连贯逻辑。
完整代码及安装步骤
环境创建与库安装
以下是创建环境并安装所需所有组件所需的命令。
API 密钥
在附带的代码(codeBaseClean.py)中,我们使用 API 密钥来访问 Moondream 和 Google AI 工作室。您需要将这些密钥替换为您自己的,您可以按照 Google AI 工作室快速入门指南以及本 Moondream 快速入门指南来创建这些密钥。
一旦完成配置,您就可以将这些代码行中的“XXX”替换为相应的键值:
文件传输
设置好密钥并保存后,我们现在将 codeBaseClean.py 文件转移到新创建的文件夹中。这里有一篇关于如何使用 FileZilla 转移文件的教程。
一切准备就绪后,我们可以使用以下命令来启动它:
档案库
在“Philosotron”文件夹内创建一个名为“templates”的新文件夹:
下载“index.html”文件,并将其移动到“templates”文件夹中。
我们可以使用以下命令来运行后端和网站:
接下来,我们使用网络浏览器访问我们树莓派的 IP 地址,并在地址后加上端口 5500。对于我而言,其形式如下:
192.168.1.5:550
重要提示:Flask 只会识别位于名为“templates”的文件夹内的网站。您的文件夹应如下所示:Philosotron > templates > index.html 。
结果
注释与注意事项
易折断的胳膊
在处理 3D 打印的伺服臂的过程中,我弄坏了不少,所以你们得注意了。
最初的想法
在 codeBaseClean.py 文件的第 66 行有如下一行代码:
这样一来,如果之前没有设定任何想法,它就会使用默认值,即“”。您可以通过将初始想法设置为您喜欢的内容来引导思考过程。
网络摄像头缓冲区
在 codeBaseClean.py 文件的第 140 行有如下一行代码:
网络摄像头通常会有一个缓冲区,用于存储旧图像。我们会快速读取摄像头 60 次,以清除旧帧,这样“菲洛斯托克”系统就能看到当前正在发生的情况,而不是 2 秒前发生的事情。
VPN(虚拟专用网络)
默认情况下,Raspberry Pi 只能通过本地网络进行访问,您可能需要关闭您的虚拟专用网络(VPN)。
代码
本文编译自hackster.io





