今天小编给大家带来的是来自B-AROL-O团队带来的基于的四足喷水,该机器人可以在农场环境中自主导航,识别需要浇水的植物并自动浇水,视觉系统采用的是 Luxonis 的 OAK-D-Lite相机,可以在专用上运行,从而不会消耗树莓派控制机器人运动的计算资源。
材料清单
硬件列表:
Mini Pupper 2 机器狗套装
OAK-D Lite 相机
Raspberry 4 Model B
TL-MR3220 路由器
软件列表:
Open CV
LearnOpenCV
Roboflow
其他工具
3D打印机
应用场景
我们原计划使用葡萄园作为我们的测试场地,与我们的名字 FREISA 保持一致。然而,这种选择带来了一定的挑战。首先,藤蔓叶子生长在离地面至少 40 厘米的高度,明显高于我们计划使用的狗机器人的预期高度。其次,通常种植葡萄树的地形,特别是在意大利,往往不平坦,给机器人带来导航困难。
考虑到所有因素,我们选择了一个更“可控”的环境——一个种有番茄植物的家庭花园。尽管如此,这一决定并不排除继续我们的项目的可能性,并可能在未来将我们的MiniPupper引入葡萄园!
FREISA 是什么?
该项目的目标是创建一个利用计算机视觉给植物浇水的狗机器人原型。
四足平台
在选择MiniPupper 2之前, 我们探索了机器人系统的各种其他选项。选择MiniPupper 2机器人也是出于我们团队中一名成员对MiniPupper项目的熟悉程度以及开源社区对该项目的兴趣。
摄像头系统
我们在实现中使用的相机是 Luxonis 的 OAK-D-Lite,它允许我们在专用硬件上运行计算机视觉管道,而不会消耗控制机器人运动的 Raspberry Pi 的资源。这需要考虑到 MiniPupper 2 和 3D 打印定制支架支撑的额外重量开销。按照这种方法,机器人可以独立于任何外部基础设施,例如用于执行“更重”任务的专用计算机。
我们考虑的唯一另一种选择是 Raspam V2,但这需要我们在 Raspberry Pi 上运行推理,从而导致计算开销和整体系统速度变慢。
喷水和瞄准系统
讨论较多的方面之一是洒水器的位置及其机制。我们最终将洒水器放置在骨盆位置,储水器正上方,因为所有其他替代方案在重量分布或物理设计方面都存在问题。
导航系统
我们决定开发一种FSM来控制机器人的运动。这种方法非常适合与提供推理结果的相机一起工作,并允许我们定义相机观察特定目标时的状态变化。
另一种选择是集成用于机器人导航的 SLAM工具箱,这需要在集成应用程序的不同部分方面进行额外的工作。
FREISA 系统架构
FREISA 作为不同的软件和硬件组件进行。在对整体体系结构进行详细说明后,本节将讨论所有这些组件。
该架构已使用Eclipse Capella准备的SysML图进行记录。
下图显示了系统的主要参与者:
导航系统(OS)
迷你 Pupper 2
视觉系统(OAK-D-Lite)
洒水器
各设备实体之间的连接
在此图中,显示了操作实体之间的不同互连:Mini Pupper 必须有一个在本地 Raspberry Pi 4 上运行的导航系统,以便在竞技场周围移动并识别目标,一个视觉系统(通过 连接的摄像头)来查看不同的目标,以及一个通过 Raspberry Pi 的 GPIO 控制的喷水器, 给需要它的目标浇水。
系统需要执行的活动如下:
目标识别(通过计算机视觉)
检查数据
配置
识别目标的位置(解释CV结果)
对外沟通
喷水(决定激活洒水器)
喷头控制(驱动)
机器狗的运动控制
逻辑架构
如上所述,我们在项目中使用了 Raspberry Pi、Docker 和不同的 OAK-D-Lite 相机。以下是系统的一般逻辑体系结构,以及它必须执行的功能:
检查数据:外部用户可以查看HTTP服务器和其他部分代码的结果,以检查系统是否正常工作。
配置:代码可以由外部用户配置,使其适应不同种类的植物。
小狗的运动控制:运动控制对于确保木偶的良好工作非常重要。
识别目标:通过视觉和导航系统,小狗必须在竞技场上走动,并识别他需要照顾的植物。
识别目标的位置:一旦发现目标,它必须识别目标的位置,以便更有效地浇水。
喷头的控制:如果植物被识别为“有需要”,小狗将移动喷头喷水。
喷水:通过洒水,如果他注意到目标需要,它会浇水。
外部通信:通过或 或 Raspberry Pi 上可用的任何其他协议,小狗可以通知其主人植物已被稀释。
物理架构
下图详细介绍了 FREISA 项目的主要物理组件。
迷你Pupper
FREISA团队认为,四足腿平台非常适合各种非结构化的户外应用,因为它能够在复杂的地形中导航。下表列出了移动平台的优势和劣势。
四足平台的最小电机数量(旨在作为自由度 – DoF)为 8 DoF,以实现四足运动。至少需要 12 个自由度才能实现完整的四足运动,从而允许在身体上实现横滚轴以及各种侧向运动。
简单的四足机器人有一个简单的开环,可以设置的角度。这种控制器总是有腿在移动,障碍物清除和运动精度很差。
动态闭环控制器非常复杂,因为它需要释放腿式平台的障碍清除能力,能够感觉到不同表面的打滑、跌落和干扰,并做出相应的补偿。
对于这个项目,我们坚持使用开环控制器,但我们正在探索在MiniPupper中集成适当的闭环控制器的方法。
与其他平台相比,这种复杂性阻碍了四足机器人的使用,目前正在机器人领域探索许多军事、和开源四足设计。
对于这个项目的范围,我们有一系列的要求:
负担成本(< 500 美元)
开源
12 自由度
带反馈的高品质
树莓派
2的
至少 10 分钟的电池续航时间
足够的有效载荷间隙来安装附件
我们的一位团队成员对使用常规 PPM 开环电机的 MiniPupper 平台的第一个版本有经验,第二个版本将电机升级为具有位置反馈的数字版本。
平台的选择
MiniPupper 2 附带一个 Ubuntu (22.04) 映像和一个基于 UDP 的编排器,该映像用于为本次比赛范围构建应用程序。MiniPupper 2 还有一个 ROS2 映像,作者计划将其用于未来的应用。
市场上有更便宜的四足平台,但据我们所知,它们通过削减自由度、伺服质量、反馈或移除板载 SBC 来实现其价格点。
按照组装说明 https://www.youtube.com/watch?v=-TDyncSvzI8
仔细映射具有正确 ID 的电机,并确保它们处于空档位置。500Kb 链路,来自FeeTech的SCS(控制伺服)协议。
通过 USB-C 通过 SSH 串口 115200 波特连接到 。通过 WiFi 对 ESP32 固件进行 OTA 更新。ESP 现在列出了所有 12 个伺服器。
MiniPupper的完成组装
校准和测试
执行校准工具,目标是使电机接近其中立位置,并使 Mini Pupper 与地形平行。请记住按住箭头键以移动电机,因为这是一个小而精确的运动。如果电机太接近极端,请拆下支腿,将电机置于中立位置并重新安装支腿。
在以下语言中执行测试程序:/demos
display
haptic_demo:拉动右前腿应该让其他腿做相反的动作。它告诉您校准正常,电机 ID 正常
按照说明安装 Web 控制器。
转到,您应该会看到通过 UDP 命令控制机器人的 MiniPupper Web 控制器。http://IP_DRESS:8080
激活控制器和电机。在“跳舞”页面中设置机器人的高度。现在,步行页面中的滑块应该可以工作了。检查MiniPupper的步行步态。
迷你Pupper成年体
简而言之,FREISA 狗与 MiniPupper 的区别有两件事:第一是视力强
安装 OAK-D-Lite
为了添加 OAK-D-Lite 相机,我们 3D 打印了一个定制的支撑支架。
需要使用适当长度的高带宽、直角 USB-A 转 USB-C 数据线将相机连接到树莓派 4。
相机需要大量带宽,因此低质量的电缆可能无法工作。
freisa-sprinker的设计
FREISA 团队感谢Gianfranco Poncini,他是 freisa 喷头机械设计背后的思想家。
所有必需部件的 STL 文件以及有关如何将部件组合在一起的一些说明可在 https://github.com/B-AROL-O/FREISA 下找到。
添加喷水灭火轴
我们的应用需要一个额外的轴来控制喷头。有许多选项可以添加更多轴:
在 ESP32 上使用 PPM 通道:需要 ESP32 的固件升级和其他命令
向 GPIO 添加一个 PPM 通道:可能的路由,GPIO 上有有限的可用 IO,限制了 PPM 控制的质量
在伺服总线上增加第 13 个通道:不可能,通道的带宽需要用于伺服的位置、位置反馈和扭矩反馈
为GPIO的第13通道添加新的SCS伺服总线:最佳解决方案,Pupper具有映射到GPIO的串行端口,并且易于访问/dev/ttyAMA1
我们在RPi GPIO上创建了一个额外的伺服总线,作为最具前瞻性的选择。它可以轻松向平台添加多个附加轴,而无需额外的工作。
中的测试程序允许通过仅实现设置位置命令来测试第 13 轴,以便于使用。/demos
3D打印和喷水灭火装置
我们对设计进行了几次迭代,这需要改进伺服电机的支撑和活塞 O-RIng 的密封性。
3D打印后,使用烙铁将螺母和滚珠轴承嵌入塑料中,然后更换原来的背板。
为软件开发做好准备
MiniPupper 2 基础组件、基础软件和自定义硬件扩展已完成并经过测试。接下来是 Vision 和 Demo 软件组件的开发。
计算机视觉
本节介绍了应用程序的“视觉”部分,该部分为机器人提供了有关其周围环境的。
该应用组件控制 OAK-D-Lite 相机,可以在该相机上部署预先训练的计算机视觉模型(基于深度)来定位目标植物并分析叶子的状况。
计算机视觉模型
该组件的基础是两个神经网络,允许定位植物(执行树干分割),并叶子并将其分类为健康或不健康。这两个模型都基于YOLOv8架构,并在我们上传到Roboflow的自定义数据集上进行了训练。
番茄树干分割
番茄叶健康检测
训练模型
可以在 Roboflow 的服务器上进行模型训练。然而,我们选择在本地训练我们的神经网络,因为免费的 Roboflow 计划只提供有限数量的“积分”,用于在我们自己的计算机上训练和试验框架。
我们的设置包括一台运行 Ubuntu 23.04( Ryzen 2600X CPU、48 GB 和 NVidia GTX 1660 super )的台式计算机,使用显卡通过带有 JupyterLab 的容器进行远程访问。
借助 Roboflow API,导出数据集非常容易,并且可以轻松地在远程硬件上进行训练。
这两个神经网络分别经过了 200 个时期的训练,最终模型已被保存以备后用 OAK-D-Lite 相机使用。
OAK-D-Lite 模块
一旦神经网络经过训练,就必须将它们部署到OAK-D-Lite相机上。
本节介绍执行这些操作的软件。源代码在 GitHub 上公开提供,网址为https://github.com/B-AROL-O/FREISA/tree/main/code
视觉控制器
第一个软件是,这是一个 类,用于通过提供加载模型、启动管道和收集结果的方法来控制相机。这些操作是使用 Luxonis 的 DepthAI 库执行的,该库允许定义管道,通过这些管道使用自定义神经网络处理来自 OAK-D-Lite 中摄像机的信息,最重要的是,通过 USB 连接以直接的方式检索这些信息。VisionController
要供 OAK-D-Lite 相机使用,需要将模型从 YOLOv8 转换为 ,以及一个包含实例化视觉管道所需的设置信息的 JSON 文件。此步骤是使用 Luxonis 提供的转换工具执行的。.blob
VisionWeb服务器
为了提供对这些方法的访问,我们实现了一个 HTTP 服务器,该服务器提供标准 (REST) API 来通过端口 9090 控制相机。这样,其他应用程序组件只需执行 HTTP 请求即可在相机上执行操作。VisionController
Docker容器
REST API 定义的另一个重要优点是 OAK-D-Lite 模块可以作为 Docker 容器独立于其他组件运行。
事实上,我们还提供了定义映像(基于映像)的 Dockeile,该映像可用于将整个模块作为容器运行,前提是它可以访问 USB 总线以便能够与相机通信。python:3.10-bullseye
可能的后续行动
由于我们的可用时间有限,我们不得不在选择上做出妥协。然而,该项目的开源性质允许外部贡献者进行大量增强。
最初要解决的主要挑战是选择一个替代设置,称为“竞技场”来放置机器人。
计算机视觉模块的设计使相机能够利用正确格式化的模型在各种目标上发挥作用。这种能力扩展了机器人在处理各种类型植物方面的多功能性。
选择不同竞技场的困难主要与潜在的地形条件有关。这个问题可以通过实现一个更复杂的框架来控制机器人的运动来解决,例如ROS Nav2(SLAM),或者通过将网格导航与Move Base Flex结合使用。这些框架还可以提供其他好处,例如环境映射。
提高应用程序性能的另一种途径是利用 OAK-D-Lite 的立体摄像头来估计目标的距离。这些数据可用于为运动提供更精确的指令,从而实现更快、更准确的操作。
审核编辑:汤梓红
- TB62734FMG 白光 LED 升压型 DC-DC 转换器的典型应用
- 具有 5V、3.3V、2.5V、1.8V 同步四路输出的 LT3692AHUH 降压转换器的典型应用电路
- AX8052F143 SoC 超低功耗射频微控制器的 TCXO 典型应用,射频载波频率范围为 27 - 1050 MHz
- 使用HVLED001A准谐振反激控制器和STF10LN80K5的18 W灯管更换零纹波LED驱动器
- EVAL-RS485FDEBZ,用于 ADM489A 全双工 RS-485 收发器的评估板,采用 14 引脚 SOIC 封装
- 适用于STM32L452RE MCU的STM32 Nucleo-64开发板,支持Arduino和ST morpho连接
- 具有热降额功能的 LT3756IMSE 30W 白光 LED 前照灯驱动器的典型应用电路
- LTC3642IDD-3.3 正负降压转换器的典型应用电路
- 最小系统板的扩展板
- ADP2126 超薄型、500 mA、6 MHz、同步、降压、直流至直流转换器的典型应用