果园自主跟随碎枝机器人

开发背景

农业扶贫项目—— 开发一款适用于猕猴桃果园的跟随碎枝机器人。

在猕猴桃的种植培育过程中,一项非常重要的环节便是剪枝,通常有冬剪和夏剪。以往果农剪完枝条后要将散落于地的枝条归拢后统一粉碎还田。这需要专门收集地面上的枝条并将其归拢到固定点(粉碎机旁边),待所有枝条粉碎后再将碎末撒在果园里用以还田。

我们要做的便是针对果园剪枝阶段,设计一款可以自主跟随作业的碎枝机器人,通过识别与定位技术主动跟随人物前进,并在距人适当位置停车并启动碎枝作业电机。此时果农将剪下的枝条顺手放进粉碎机入口完成碎枝还田。果农前进时当检测到距离超过死区范围,停止碎枝电机,并主动前进跟随果农。

由于本人对机械和电路了解不多,这篇文章只对软件设计实现部分做介绍,电路部分和机械部分不做介绍哈~ 

开发环境

ROS2 Humble、Ubuntu22.04 

履带式自走碎枝机器人

技术实现

1. 通过UWB 定位跟随模块实现定位定向

主要利用AOA模块基站利用uwb定位定向技术确定标签距离方向。

基站输出的结果波动较大,且易受干扰,当人遮挡主标签时,干扰非常明显,会有十几到几十度的误差,如果不做处理,单纯依赖基站的输出值进行方向控制,会出现明显的车辆来回摆动现象,也很难停车在理想位置。需要滤波处理,本人采用简单的移动均值滤波,该方式能有效剧烈波动带来的震荡,使数据趋于平缓,但其结果也有明显的滞后性。好在我们跟随应用在实际作业中行驶速度较慢(与人步行速度相当),在20HZ以上的控制指令计算频率下也可以快速摆到期望方向。

2. 运动控制

方向控制采用PID控制,适当调节Kp参数,可以较灵敏的响应方向变化,调节响应参数使朝向尽快收敛到目标朝向上。

速度采用线性控制,未避免出现急停、急走带来的晃动,采用线性关系调节速度变化

3. 避障功能

采用激光雷达、毫米波、超声波测距 检测周围障碍物信息

通过分析周边障碍物,调整车辆朝向

4. 行为控制

使用状态机切换来满足跟随与碎枝功能的切换与控制

也可使用行为树控制,但本身此功能逻辑相对简单,使用有限状态机可以快速直观的实现功能逻辑

5. 人体与手势识别功能

此功能在完善中,通过对前置RGB摄像头采集的图像进行分析处理,通过骨骼节点识别可以分辨前方是否有人,这可以作为跟随前进的辅助判断

同时通过手势识别算法,根据手势动作实现功能控制。比如对着碎纸机招手,便可以控制车辆往人方向靠近;伸开手掌便可停车等

硬件选型:

地平线旭日X3派

UWB跟随定位基站与标签(NLoop AOA模块)

思岚单线激光雷达(S2)

RGB摄像头

毫米波避障雷达(纳雷科技)

4路超声波测距雷达

最后放几张图片吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/179044.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自由曲线与曲面 -计算机图形学

目录 自由曲线与曲面 函数的连续性 (1)参数连续性 (2)几何连续性 bezier 曲线 Bernstein基函数 *公式看不懂,带几个数进去看看,你就更好地可以看到这个公式的本质了 凸包性质 仿射不变性 …

van-dialog弹窗异步关闭-校验表单

van-dialog弹窗异步关闭 有时候我们需要通过弹窗去处理表单数据,在原生微信小程序配合vant组件中有多种方式实现,其中UI美观度最高的就是通过van-dialog嵌套表单实现。 通常表单涉及到是否必填,在van-dialog的确认事件中直接return是无法阻止…

【电路】MOS管开关电路

目录 简介: MOS管导通特性 应用实例: MOS管的作用-开关 更好的理解方式: 仿真: 简介: MOS管也就是常说的场效应管(FET),有结型场效应管、绝缘栅型场效应管(又分为…

day17_多线程基础

今日内容 零、 复习昨日 一、作业 二、进程与线程 三、创建线程 四、线程的API 一、复习 IO流的分类 方向: 输入,输出类型: 字节(XxxStream),字符(XxxReader,XxxWriter)字节输入流类名: FileInputStream字节输出流类名: FileOutputStream字符输入流类名: FileReader字符输出流类…

最长上升子序列模型 笔记

首先附上模板&#xff1a; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; typedef long long ll;const int N 100010;int n; int a[N], q[N];int main()…

【Ubuntu·系统·的Linux环境变量配置方法最全】

文章目录 概要读取环境变量的方法小技巧 概要 在Linux环境中&#xff0c;配置环境变量是一种常见的操作&#xff0c;用于指定系统或用户环境中可执行程序的搜索路径。 读取环境变量的方法 在Linux中&#xff0c;可以使用以下两个命令来读取环境变量&#xff1a; export 命令…

【自然语言处理(NLP)实战】LSTM网络实现中文文本情感分析(手把手与教学超详细)

目录 引言&#xff1a; 1.所有文件展示&#xff1a; 1.中文停用词数据&#xff08;hit_stopwords.txt)来源于&#xff1a; 2.其中data数据集为chinese_text_cnn-master.zip提取出的文件。点击链接进入github&#xff0c;点击Code、Download ZIP即可下载。 2.安装依赖库&am…

<C++> 优先级队列

目录 前言 一、priority_queue的使用 1. 成员函数 2. 例题 二、仿函数 三、模拟实现 1. 迭代器区间构造函数 && AdjustDown 2. pop 3. push && AdjustUp 4. top 5. size 6. empty 四、完整实现 总结 前言 优先级队列以及前面的双端队列基本上已经脱离了队列定…

场景图形管理 - (2)

裁剪平面示例(二) 裁剪平面(osg::Scissor)示例(二)的代码如程序清单8-2所示 // 裁剪平面测试&#xff08;2&#xff09; void scissor_8_2(const string strDataFolder) { osg::ref_ptr<osgViewer::Viewer> viewer new osgViewer::Viewer(); osg::ref_ptr<osg::Gra…

原力CEO赵锐:ToDesk是国内唯一适合高精远程办公需求的解决方案

随着数字办公在各行业的渗透&#xff0c;远程办公也逐渐成为一种常态。2000多名艺术家员工遍布全球各地的江苏原力数字科技股份有限公司&#xff08;下称&#xff1a;原力&#xff09;&#xff0c;是一家国内业务范围、规模均遥遥领先的数字业务内容提供商。一直以来&#xff0…

在webstorm中配置sass编译环境

1.下载ruby 下载地址&#xff1a;ruby下载 2.安装ruby 下载之后&#xff0c;有一个exe安装包 双击exe文件 &#xff0c;并选择自己的安装位置&#xff08;这个位置一定要记得&#xff0c;需要在webstorm中使用&#xff09;。其他的步骤默认安装即可。 3.安装sass ruby安装成功后…

【MATLAB源码-第75期】基于模拟退火算法(SA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 模拟退火算法是一种启发式优化算法&#xff0c;通常用于解决组合优化问题&#xff0c;例如旅行商问题和图着色问题。它模拟了固体材料在退火过程中逐渐冷却达到稳定状态的行为&#xff0c;以寻找问题的全局最优解。 以下是模…