1. 首页
  2. 养车用车
  3. “来拒去留”基于Openmv测距识物,并保持恒定距离的小车

“来拒去留”基于Openmv测距识物,并保持恒定距离的小车

简介:关于“来拒去留”基于Openmv测距识物,并保持恒定距离的小车的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于养车用车技术大全及相关资讯,可以多多关注茶馆百科网。

最近,我的一个同学来找我,因为他的毕业设计即将完成。他的项目是制造一辆可以识别二维码并实现距离测量的汽车。同时,他也希望汽车和二维码之间保持恒定的距离。即二维码离车近,车在后,二维码离车远,车在前。(有点欲擒故纵)

为了实现这个功能,我做了下面的教程供大家参考,源代码在文中。

Part1

所需材料和模块:L298n电机,2个L298n电机驱动板(这个实用,便宜,功能强大),一个Openmv,一个McNamm轮,一个arduino和一个扩展板,一个12v电源),几根杜邦线

方案如下

1. 驱动电机,汽车就能行走

2.Openmv不断地与Apriltag测距和感知距离

3.Openmv通过串口将感知到的距离与arduino进行通信,arduino进行判断

4. arduino判断后,对电机下达指令。如果距离小,汽车会向后移动;如果距离较大,汽车就会向前行驶

你想起来容易吗?

Part2

背景:AprilTag是一个视觉参考系统,可用于各种任务,包括AR,机器人和相机校准。标签可以直接从打印机打印,AprilTag检测器计算相对于相机的精确3D位置、方向和id。这对OpenMV特别有用!它看起来是这样的:

为了防止自动识别,这里是一个马赛克,类似于一个二维码

简单来说,Openmv可以识别Apriltag的x, y, z坐标,以及角度旋转量,这是一个非常了不起的标签。设置如下:Openmv是原点的中心,所以一般来说,z总是负的。(因为Openmv是面向前方的)

正式的代码

在官方代码中,最终打印出标签的x、y、z坐标,同时也打印出Rx、Ry、Rz的旋转角度。对于这个项目,因为我们不需要知道角度,只有x,y和z与我们相关。汽车是向前还是向后移动,我们只需要关心在z轴方向上的距离是否改变。因此,x和y与这个项目无关。我们只需要注意z轴上的距离。

所以在我给出的最后一个代码中,我只在串行端口上打印了z坐标。当我和串口通信时,我只传输z坐标。

Openmv代码如下

由于我们通过标记派生的数据,在此代码中对数据格式进行了多次更改。Z_translations函数是float类型,它首先转换为int以便于转换为字符串,然后转换为字符串以便于转换为json数据格式以便于数据传输。

但是由于浮点型被转换成整型,它有一些误差,但是很小。要获得高精度,请尝试将float直接转换为string。(注:在这种情况下,会有大量的数据传输、通信延迟。)

两种方案都会有延迟,如果只有在生效后,才可以直接传输整数类型。

Arduino部分代码

注意我在这里写了一个电机驱动程序库,所以在函数中,经过我的距离判断,我直接使用了库中的函数,没有导入库,没有办法编译成功。因为b百度网盘暂时登录,你需要库,你可以私信我。

Part3

总之,要注意

1. 传输数据时,打上标签。z_translations返回一个浮点变量,如7.238493,我将其转换为int,即7。这会产生一个误差,但误差很小,不会超过1。这将节省我的串行通信时间,例如,我发送7,我只需要发送它。然而,如果你传输7.238493,你需要传递它,这是json数据格式的限制。最后,这让我的判断变得不方便。

2. 在接收到arduino的数据后,我使用a型int来接收string类型的数据。s[1]应该是7 8 9 10的数量级。

本文主要介绍了关于“来拒去留”基于Openmv测距识物,并保持恒定距离的小车的相关养殖或种植技术,养车用车栏目还介绍了该行业生产经营方式及经营管理,关注养车用车发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解养车用车技术怎么管理的要点,是您养车用车致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1674986.html