基于JETSON NANO的激光测距和色块识别综合代码(包括和STM32通信)


本文是基于jetson nano的激光测距和色块识别综合代码。激光采用PLS-K60高精度激光模块,摄像头采用免驱USB工业摄像头。同时代码采用多进程操作,使两个任务同步进行,互不影响。

所需库说明

导入库图片
1.numpy库作为科学计算库在某些图像处理运算中会使用到
2.cv2库即opencv库,注意版本
3.serial库即串口库,windows上将usb插上usb连接线后会出现COM口(一般情况下必须插上usb连接线才会有串口),同时可以在设备管理器中进行定义
4.threading库即线程库,经过测试与查资料,发现python有全局线程索,导致无法进行真正意义上的多线程操作,本库无用
5**.time**库,用作系统硬延时,注意使用场合
6.multiprocessing进程库,可以在python环境中实现操作系统操作,类似于时间片轮转,具体方法看下面


变量说明

可更改变量

可更改变量
1.追踪颜色阈值调节,上下HSV阈值
2.视频来源,USB摄像头一般为0
3.根据地盘距离基座的距离可以固定在摄像头视野中色块的大小,以此可以作为判断是否正对基座的标志。
4.预定义摄像头的分辨率,太大帧率太低,太小看不清楚
5.预定义两个串口所对应的字符串格式,若是使用USB串口则名字为"COMX",X为串口号,若使用jetson nano则为"/dev/ttyTHS1"
6.mode设置激光测距模式,有三种模式,具体见代码

不可更改变量

不可更改变量
1.捕捉视频流,在jetson nano上使用时,不能使用参数中的cv2.CAP_DSHOW,DSHOW是微软开发的用于视频播放的操作系统I/O接口,就类似于linux系统下的v42l,所以linux系统下当然用不DSHOW。


代码说明

自定义串口类

自定义串口类继承
1.python面向对象操作,初始化串口必须的参数,同时调用Serial库的实例化操作即self.com = serial.Serial(…),这样在使用的使用可以直接使用自己定义的类对象直接操作


根据手册编写的激光测距

测距代码

1.根据PLS-K60编写的激光测距模块代码,使用python的串口收发命令进行操作
2.注意python使用串口收发时必须使用encode()方法和decode()方法,否则无法正常进行数据收发,或者说不符合日常习惯。
3.同时注意到,激光模块的数据返回需要有一定的时间,在这个地方,可以使用self.com.in_waiting来判断串口是否接收到数据,当真正接收到时候再开始处理数据, in_waiting本身就代表缓冲区现在有的字节数。在pyserial 3.0之后改为了inwaiting()函数
4.读取数据时,这里使用read(100)即一次读取100个单位,实际测试中,一次读取较少会导致数据读取不完整,100在测试中还没有出错


连接激光串口操作

激光实例化
1.在激光的实例化代码中,会有判断操作,即会判断搜索到的串口是否与预先定义的串口相符合,相符合的话才会进行连接


连接单片机串口

mpu实例化
1.在实际的jetson nano上测试时,发现COM口与jetson nano上引出的串口存在一定的区别,即引出串口在使用serial库进行串口搜索时搜索不到,在这种情况下,直接使用Serial类方法进行实例化


色块识别代码

opencv

1.使用了白平衡算法5,即自适应的白平衡滤波,效果很好,但是帧率会略微降低。我使用的USB相机是自带白平衡的。
2.注意在python中出现两个整数相减的情况,减完得到的变量会变成带.0的值,比如:5 - 3 = 2.0 , 这种情况会导致串口发送数据的错误
3.注意在使用opencv视频流方法时,必须在末尾加上cv2.waitKey(time)方法,否则会导致处理卡死


jetson nano接线说明

串口接线
1.如图在jetson nano上存在接线为GND,10,8的三个引脚(从上方看)10为RX,8为TX


完整工程放在我的资源,自行下载

基于jetson nano的激光测距和色块识别.


jetson nano 开机自启动

看我另外一篇博客: jetson nano 开机自启动.


  • 4
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WanHeng WyattVan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值