开发背景
农业扶贫项目—— 开发一款适用于猕猴桃果园的跟随碎枝机器人。
在猕猴桃的种植培育过程中,一项非常重要的环节便是剪枝,通常有冬剪和夏剪。以往果农剪完枝条后要将散落于地的枝条归拢后统一粉碎还田。这需要专门收集地面上的枝条并将其归拢到固定点(粉碎机旁边),待所有枝条粉碎后再将碎末撒在果园里用以还田。
我们要做的便是针对果园剪枝阶段,设计一款可以自主跟随作业的碎枝机器人,通过识别与定位技术主动跟随人物前进,并在距人适当位置停车并启动碎枝作业电机。此时果农将剪下的枝条顺手放进粉碎机入口完成碎枝还田。果农前进时当检测到距离超过死区范围,停止碎枝电机,并主动前进跟随果农。
由于本人对机械和电路了解不多,这篇文章只对软件设计实现部分做介绍,电路部分和机械部分不做介绍哈~
开发环境
ROS2 Humble、Ubuntu22.04
履带式自走碎枝机器人
技术实现
1. 通过UWB 定位跟随模块实现定位定向
主要利用AOA模块基站利用uwb定位定向技术确定标签距离方向。
基站输出的结果波动较大,且易受干扰,当人遮挡主标签时,干扰非常明显,会有十几到几十度的误差,如果不做处理,单纯依赖基站的输出值进行方向控制,会出现明显的车辆来回摆动现象,也很难停车在理想位置。需要滤波处理,本人采用简单的移动均值滤波,该方式能有效剧烈波动带来的震荡,使数据趋于平缓,但其结果也有明显的滞后性。好在我们跟随应用在实际作业中行驶速度较慢(与人步行速度相当),在20HZ以上的控制指令计算频率下也可以快速摆到期望方向。
2. 运动控制
方向控制采用PID控制,适当调节Kp参数,可以较灵敏的响应方向变化,调节响应参数使朝向尽快收敛到目标朝向上。
速度采用线性控制,未避免出现急停、急走带来的晃动,采用线性关系调节速度变化
3. 避障功能
采用激光雷达、毫米波、超声波测距 检测周围障碍物信息
通过分析周边障碍物,调整车辆朝向
4. 行为控制
使用状态机切换来满足跟随与碎枝功能的切换与控制
也可使用行为树控制,但本身此功能逻辑相对简单,使用有限状态机可以快速直观的实现功能逻辑
5. 人体与手势识别功能
此功能在完善中,通过对前置RGB摄像头采集的图像进行分析处理,通过骨骼节点识别可以分辨前方是否有人,这可以作为跟随前进的辅助判断
同时通过手势识别算法,根据手势动作实现功能控制。比如对着碎纸机招手,便可以控制车辆往人方向靠近;伸开手掌便可停车等
硬件选型:
地平线旭日X3派
UWB跟随定位基站与标签(NLoop AOA模块)
思岚单线激光雷达(S2)
RGB摄像头
毫米波避障雷达(纳雷科技)
4路超声波测距雷达
最后放几张图片吧