资料介绍
描述
The Irrigator:人工智能驱动的灌溉机器人
Irrigator是一种自主、可持续发展的智能机器人,可以照料室内和室外植物。本演示的重点是给植物浇水,但设计和实现可以扩展到执行其他任务,例如分配肥料和杀虫剂、检测土壤中的水位、检测生病的植物。
设计
广泛的设计目标:
自主- 它在没有(或最少的)人为交互的情况下完成工作。
可持续发展——它使用太阳能为电池充电,使用雨水为水箱注水,并且尽可能使用回收材料制成(例如,我使用回收木材、金属和螺丝制作底盘)。
具体设计目标:
Nvidia Jetson Nano - 用作可以运行高级机器学习推理的中央控制单元。
Nvidia Isaac SDK - 用作机器人的编程平台。
机器人整体图及其主要模块如图1所示,实际实现如图2所示。
硬件
下面(也在这里)是这个项目中使用的材料的详细清单(木头、螺丝、胶水、电线、胶带等除外)。价格以新加坡元为单位,链接仅供参考。对于我从当地五金店购买的某些组件,我找不到链接。但是,我在下面提供了详细信息和照片。
该项目的估计成本为 459 新元(约合 330 美元)。
我没有某些组件的网络参考,因为我是从我所在地区的五金店购买的。
在图 3 中,我展示了 (1) 一块 20W 太阳能电池板,(2) 一块 7Ah 可充电铅酸电池,(3) 2 个带齿轮箱的电机,(4) 2 个轮子,(5) 2 个电机支架,以及(6)太阳能电池板充电器一个。如果你打算建造这个机器人的复制品,你可以使用不同规格的组件,但你需要注意设计目标。例如,电机应能承载至少 10kg 的负载(主要是水箱)。电池可以具有更高的容量。我不建议使用容量低于 7Ah 的电池。太阳能电池板的功率应该足以给电池充电。
图 4 和图 5 显示了带有齿轮箱的电机。这些是 12V、5000 转/分的电机,而齿轮箱将转速降低到 30 转,并使电机能够拉动超过 10 公斤。图 4 还显示了轮子。确保支撑轮(未连接到电机的)可以左右旋转。如果它们是固定的,您的机器人可能会由于高摩擦力而无法左转或右转。
控制单元
控制单元是机器人的“大脑”。图6是控制单元的原理图,图7是控制单元的接线图(我附上了Fritzing做的原理图),图8是实际实现。Irrigator的“大脑皮层”是一块Jetson Nano板,运行主控制回路和 AI 算法来检测植物和花盆。附加到它的是 Raspberry Pi Camera v2.1。
为了控制电机和读取所有传感器,我使用了两个Arduino Uno板。这些板代表灌溉器的“小脑”。Jetson Nano 和 Arduino Uno 之间的通信是通过SPI完成的。我使用 Jetson 的J41 连接器的 SPI1 和 SPI2 引脚以及对应于其SPI 接口的 Arduino Uno 的引脚 10 (SS)、11 (MOSI)、12 (MISO)、13 (SCK) 。
要在 Jetson 上启用 SPI ,您需要运行:
sudo /opt/nvidia/jetson-io/jetson-io.py
完成此步骤后,您可以使用/dev/spidev0.0和/dev/spidev1.0与两个 Arduino 板进行通信。我使用 Linux 源代码中的SPI 测试程序作为我在 Jetson Nano 上的驱动程序的起点(请参阅Github上的更多详细信息)。
控制单元读取以下传感器:
- 用于对象识别的Raspberry Pi 相机模块v2.1。
- 两个声纳 ( HC04 ) 分别放置在距地面约 5 厘米和约 50 厘米处(见图 2)。您可能想要添加更多的接近传感器以获得更高的精度。
- 两个编码器分别检测左右两个车轮的运动。目前,我使用 IR 接近传感器实现这些编码器,但它们不是很准确。
- 水箱水位传感器(YwRobot Water Level )。
- 【选配】四个电流传感器,测量不同模块的用电量。这些是ADS712基于霍尔效应的线性电流传感器。
控制单元命令:
- 使用L298 H 桥的电机。
- 打开/关闭水泵和灯的继电器 ( SRD-05VDC-SL-C )。这些继电器需要一个额外的晶体管 ( BD137 ),因为 Arduino GPIO 电流可能不足以流过继电器的线圈。
为了分配和测量这些模块使用的能量,我创建了一个自定义配电单元。请注意,某些组件使用 12V:
- 马达
- 泵(需要 ~ 3A 电流)
- 光
一些组件使用 5V:
- Jetson Nano(需要 ~3A)
- 阿杜诺
- 所有的传感器
软件
Irrigator的代码托管在 Github 上。您可以在README.md中找到有关设置的更多详细信息。
该代码有两个主要层,(1) 机器人控制和 (2) 使用 AI 进行植物检测。对于第一层,您需要使用 Arduino IDE 和 USB-B 电缆对 Arduino 板进行编程。两块板的代码在src/arduino文件夹中。
接下来,您需要在 Jetson Nano 上运行驱动程序。控制单元的主循环用C代码表示如下:
while (run_flag) {
go_forward();
if (dist1 < 100 || dist2 < 100) {
stop();
usleep(250000);
on_light();
int ret = run_ai();
if ((ret >> 8) == 1) {
printf("Plant detected!\n");
go_forward();
sleep(2);
stop();
usleep(250000);
on_pump();
sleep(5);
off_pump();
usleep(250000);
go_backwards();
sleep(2);
stop();
usleep(250000);
}
off_light();
usleep(250000);
go_left_90();
}
sleep(1);
}
上面的代码告诉机器人只要声纳没有检测到障碍物(1m 以内)就向前移动。如果检测到某些障碍物,机器人将执行以下任务:
- 停止
- 在灯上
- 拍张照片
- 运行物体检测
- 如果检测到植物或花盆,则向前移动一点,在水面上,等待几秒钟,离开水面,向后移动
- 关灯
- 向左转以避开障碍物
请注意,需要一些延迟(usleep() )以避免 Arduino 上的 SPI 消息丢失。
控制器可以通过两种方式实现。首先,编写 C 或 Python 程序来控制机器人的经典整体方式。这是在irrigator_spi.c中实现的。要运行它,请在 Jetson 上执行这些 shell 命令:
$ cd git/irrigator/src/jetson/driver
$ make
$ ./irrigator_spi
第二种方式,模块化且灵活,是使用 Nvidia 的Isaac SDK。对于这个版本的 Irrigator,我在 Github 上的src/jetson/isaac文件夹中的两个小代码 Driver 和 Detector 中实现了我的代码。Driver 处理机器人的硬件和运动,而 Detector 处理 AI 部分。他们使用 Isaac Messaging API 进行通信。
该软件的第二层包括使用 AI 对象检测的植物和盆栽检测。由于代码在 Jetson Nano 上运行,我首先考虑使用jetson-inference存储库中的教程。但是,我使用 TensorFlow Lite (TFLite) 模型获得了最佳结果。特别是,我正在使用coco_ssd_mobilenet_v1_1.0_quant_2018_06_29和 inception_resnet_v2_2018_04_27。有关更多 TFLite 模型,请参阅TFLite 托管模型。我从每个模型中获取前 3 个检测结果并搜索plant of pot关键字(参见run-all-models.sh). 目前,检测(包括拍照)需要 10-11 秒。光是拍照就需要 4 秒。
未来的工作
我计划在不久的将来进行这些优化:
- 只在晚上开灯(使用光检测传感器或模型来检测太阳升起)
- 根据图像中检测到的罐/计划的位置将软管枪(或机器人)居中
- 如果检测到多个盆/植物,使用一系列灌溉步骤使机器人居中并为每株植物浇水
- 使用 cron 作业在晚上开始灌溉,在早上为电池充电
- 2023年人工智能产业概况及应用趋势分析 6次下载
- Nindamani:基于人工智能的机械除草机器人
- 物体检测人工智能机器人
- 基于ESP32-CAM的人工智能机器人设计资料 3次下载
- 阿基米德:人工智能机器人猫头鹰
- 基于人工智能(AI)的巡线机器人
- 基于人工智能驱动的关键信息基础设施防御 4次下载
- 上肢康复机器人现状及研究分析 7次下载
- 基于DSP和PC的农业机器人控制系统 17次下载
- 人工智能的伦理智能体应用及相关研究 7次下载
- 机器人的简介和构造详细说明 12次下载
- 人工智能行业发展状况如何?人工智能行业研究报告详细资料免费下载 15次下载
- 检索式智能对话机器人开发实战案例详细资料分析概述 16次下载
- 机器人编程C语言与人工智能 0次下载
- 一种智能助行机器人的设计 3次下载
- 人工智能与机器人的区别 694次阅读
- 基于智能制造的工业机器人应用实践 820次阅读
- 发现更多机器人开发技巧 AI与边缘计算加持 638次阅读
- 什么是人工智能?人工智能的分类和应用介绍 1w次阅读
- 机器人教育是什么_机器人教育发展前景 1873次阅读
- 人工智能时代硬件和软件如何彼此影响 9948次阅读
- 盘点2018年机器人领域十大技术 3312次阅读
- 浅谈人工智能客户服务的未来 4258次阅读
- 人与机器人的自然交互 5066次阅读
- 人工智能AI在机器人运动控制领域盘点简介 6825次阅读
- 工业机器人和人工智能的区别详细概述 8074次阅读
- 一文看懂水下机器人的发展及应用 2.1w次阅读
- 人工智能时代的机器人三大法则 6583次阅读
- 3种奇葩机器人的简单介绍 5321次阅读
- 在软件测试行业中机器人和人工智能到底承担着什么重任 2364次阅读
下载排行
本周
- 1Keysight B1500A 半导体器件分析仪用户手册、说明书 (中文)
- 19.00 MB | 4次下载 | 免费
- 2使用TL431设计电源
- 0.67 MB | 2次下载 | 免费
- 3BT134双向可控硅手册
- 1.74 MB | 2次下载 | 1 积分
- 4一种新型高效率的服务器电源系统
- 0.85 MB | 1次下载 | 1 积分
- 5LabVIEW环形控件
- 0.01 MB | 1次下载 | 1 积分
- 6PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 751单片机核心板原理图
- 0.12 MB | 1次下载 | 5 积分
- 8BP2879DB支持调光调灭的非隔离低 PF LED 驱动器
- 1.44 MB | 1次下载 | 免费
本月
- 1开关电源设计原理手册
- 1.83 MB | 54次下载 | 免费
- 2FS5080E 5V升压充电两串锂电池充电管理IC中文手册
- 8.45 MB | 23次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 12次下载 | 免费
- 5ST7789V2单芯片控制器/驱动器英文手册
- 3.07 MB | 11次下载 | 1 积分
- 6TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 7STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 8基于MSP430FR6043的超声波气体流量计快速入门指南
- 2.26MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多