水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人

Posted 花有重开日,人无再少年啊。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人相关的知识,希望对你有一定的参考价值。


前言

笔者今年参加了工程训练比赛(现在已经迈入了linux下驱动开发的大坑中)。在最近学习linux驱动的同时突然想着做一个长期博客,算是一个教程吧也就当对我自己所学习STM32的经历做一个总结回顾,会将我代码的实现过程做个罗列。大神看到有说错的地方可以留言哈。刚入门的小白看到有什么不懂的地方也可以留言看到就回复。


硬件选择

提示:笔者上位机采用书梅派4b使用Python来进行处理图像识别,下位机采用STM32f103单片机。树梅派4b的处理这么多数据也算是勉勉强强,若是想用性能更强一些的可以试试rk3399的板子,相对来说性能上比4b要强一些,尤其是做视觉处理一定要注意板子的性能能不能跟的上特别实在一些实时性要求比较高的要求下。

一、下位机所需要实现的功能

1.LED部分

需要使用多个led来代表所识别的多边形黑色附着物所以我们需要定义两到三个点亮led的驱动,这部分很简单。
看LED部分代码点我:(已更新)

2.PWM部分

我们需要控制多个无刷电机,三个悬浮电机,两个驱动电机,TIM3定时器提供了四个,再加上TIM1的一个,也可以全部使用TIM1定时器来提供所需要的5路PWM,TIM1能提供多少个PWM我忘记了。需要的花可以查阅相关资料。
看定时器部分代码点我:(已更新)

3.无刷电机部分

无刷电机不同以我们平常所见的普通直流电机,他需要配合电子调速器来使用就是我们俗称的电调,想要驱动无刷电机要看自己买的电调说明书,一般都有频率限制一般50hz—400hz最高是500hz。频率的计算有个公式能算,这里先不说明后面具体用到了再详细说明。
驱动无刷电机部分:(没更新别点)

4.串口部分

串口很重要,想要实现上位机和下位机之间的相互通信就需要串口这个功能。配置好串口之外还需要自己写一个数据帧,如果不对数据进行规定会出现很多接受错误,影响后面的指令。(串口的状态很重要)
串口和协议:(没更新别点)

5.I2c驱动部分

STM32官方有硬件I2c不过很多人都说不好用,好象是专利问题吧,我所采用得是模拟I2c,难点在于I2c的时序部分,时序部分很容易出错当时也花了不少时间调试时许,当然现在网上也有很多模拟i2c的代码基本上都是可以用的,需要在意的是延时,延时过长或者过短mcu也是接收不到的。
I2c驱动部分:(没更新别点)

6.MPU6050配置相关寄存器部分

这一部分主要就是通过I2c的读写函数对6050内部寄存器进行配置,比较简单如果你的I2c没有问题的话。
MPU6050寄存器部分:(没更新别点)

7.解析姿态角,PID算法和EKF(滤波)

PID不多说了很经典也很简单但是调节参数你得有点东西,先说说为什么需要滤波算法,我们通过6050能解算出角度(通过加速度原始数据和角速度原始数据),但是这不能直接拿来用,额你可以直接用加速度数据如果你不在意这个数据的大范围跳一枚轻喷。动,如果我们要获得相对稳定可用的数据我们就需要卡尔曼滤波(EFK),也有其他方法例如四元素奈何实在看不懂四元素不理解。简单来说经过EKF之后的数据我们差不多就可以直接拿来用了。
姿态解算和滤波:(没更新别点)

二、上位机所需要实现的功能

1.串口发送部分

Python实现串口发送还是很简单的别忘了装CH340驱动,然后安装PYserial库。代码讲到了再说。
上位机串口和协议:(没更新别点)

2.opencv部分

这部分我当初以为很难,接触了Opencv后又觉得很简单不是很难,但是当你慢慢的代码要处理的数据越来越多,如果有异常或者判断语句没处理到位的话,BUG就来了,我当时遇到过一个BUG在一些特定的环境下程序会出现假死的状态,后来花了两天
,慢慢排查原因出现在了try语句。。。很低级的错误。
图像识别部分:(没更新别点)

总结以及成品展示

总的来说,经过了几个月的不解努力,没有白费力气不管结果如何,这都是宝贵的经验。在这里插入图片描述

在这里插入图片描述
opencv上位机效果展示 没有录上位机画面凑活者看下效果
在这里插入图片描述

以上是关于水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人的主要内容,如果未能解决你的问题,请参考以下文章

水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人

上位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人

上位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人

上位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人

上位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人

下位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人