当前位置: 首页 > news >正文

企业站seo价格广州seo推广公司

企业站seo价格,广州seo推广公司,dw php网站建设视频教程,陶瓷类网站建设控制小车视觉循迹使用 OpenMV 往往是不够的。一般使用 OpenMV 对图像进行处理#xff0c;将处理过后的数据使用串口发送给STM32#xff0c;使用STM32控制小车行驶。本文主要讲解 OpenMV 模块与 STM32 间的串口通信以及两种循迹方案#xff0c;分别是划分检测区域和线性回归。…控制小车视觉循迹使用 OpenMV 往往是不够的。一般使用 OpenMV 对图像进行处理将处理过后的数据使用串口发送给STM32使用STM32控制小车行驶。本文主要讲解 OpenMV 模块与 STM32 间的串口通信以及两种循迹方案分别是划分检测区域和线性回归。 一、OpenMV模块与STM32间的串口通信 1、硬件连接 OpenMV端UART_RX—P5、UART_TX—P4 STM32端USART_TX—PA9 、USART_RX—PA10 STM32的TX接OpenMV的RX、STM32的RX接OpenMV的TX。 2、OpenMV 端串口发送数据 uart UART(3,115200,bits8, parityNone, stop1, timeout_char 1000)FH bytearray([0x2C,0x12,cx,cy,ch,ci,0x5B]) uart.write(FH) 波特率为115200 0x2C、0x12为帧头0x5B为桢尾 bytearray([ ])函数用于把十六进制数据以字节形式存放到字节数组中以便以数据帧的形式发送出去进行通信。 也可打包为函数形式 def sending_data(cx,cy,cw,ch):global uart;data ustruct.pack(bbhhhhb, 0x2C, 0x12, int(cx), int(cy), int(ch), int(ci), 0x5B)uart.write(data); #必须要传入一个字节数组sending_data(cx,cy,ch,ci) 3、STM32串口以中断方式接收数据 static u8 Cx0,Cy0,Ch0,Ci0; //USART1 全局中断服务函数 void USART1_IRQHandler(void) {u8 com_data; u8 i;static u8 RxCounter10;static u16 RxBuffer1[10]{0};static u8 RxState 0; static u8 RxFlag1 0;if( USART_GetITStatus(USART1,USART_IT_RXNE)!RESET) //接收中断 {USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志com_data USART_ReceiveData(USART1);if(RxState0com_data0x2C) //0x2c帧头{RxState1;RxBuffer1[RxCounter1]com_data;OLED_Refresh();}else if(RxState1com_data0x12) //0x12帧头{RxState2;RxBuffer1[RxCounter1]com_data;}else if(RxState2){RxBuffer1[RxCounter1]com_data;if(RxCounter110||com_data 0x5B) //RxBuffer1接受满了,接收数据结束{RxState3; RxFlag11;CxRxBuffer1[RxCounter1-5];CyRxBuffer1[RxCounter1-4];ChRxBuffer1[RxCounter1-3];CiRxBuffer1[RxCounter1-2];}}else if(RxState3) //检测是否接受到结束标志{if(RxBuffer1[RxCounter1-1] 0x5B){USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);//关闭DTSABLE中断RxFlag1 0; RxCounter1 0; RxState 0;USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);}else //接收错误{RxState 0; RxCounter10;for(i0;i10;i){RxBuffer1[i]0x00; //将存放数据数组清零}}} else //接收异常{RxState 0; RxCounter10;for(i0;i10;i){RxBuffer1[i]0x00; //将存放数据数组清零}}} } 二、视觉循迹方案一划分检测区域 该方法和一般循迹模块的原理相同。使用五个红框对图像进行分割对应五路循迹模块的五个输出。 为提高识别精度将图像二值化后再进行黑线检测。若要识别其他颜色的线则需要使用常规的设置阈值法 import pyb, sensor, image, math, time from pyb import UART import ustruct from image import SEARCH_EX, SEARCH_DS sensor.set_contrast(1) sensor.set_gainceiling(16) clock time.clock() uart UART(3,115200,bits8, parityNone, stop1, timeout_char 1000) # 划分五个区域 roi1 [(0, 40, 20, 40), # x y w h 分别对应x、y坐标框的宽度、高度(35, 40, 20, 40),(70, 40, 10, 10),(105, 40, 20, 40),(140, 40, 20, 40)] sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time2000) sensor.set_auto_whitebal(True) sensor.set_auto_gain(False) sensor.set_vflip(False) sensor.set_hmirror(False) clock time.clock()GRAYSCALE_THRESHOLD [(20,100)] low_threshold (0, 50) while(True):clock.tick()blob1Noneblob2Noneblob4Noneblob5Nonecxcycwi0img sensor.snapshot().lens_corr(strength 1.7 , zoom 1.0)img.mean(2)binary_img img.binary(GRAYSCALE_THRESHOLD) # 二值化blob1 binary_img.find_blobs([low_threshold],roiroi1[0])blob2 binary_img.find_blobs([low_threshold],roiroi1[1])blob3 binary_img.find_blobs([low_threshold],roiroi1[2])blob4 binary_img.find_blobs([low_threshold],roiroi1[3])blob5 binary_img.find_blobs([low_threshold],roiroi1[4])if blob1:cx 1if blob2:cy 1if blob3:cw 1if blob4:ch 1if blob5:ci 1FH bytearray([0x2C,0x12,cx,cy,ch,ci,0x5B])uart.write(FH)for rec in roi1:img.draw_rectangle(rec, color(255,0,0))#绘制出roi区域 实验效果 三、视觉循迹方案二线性回归 将控制线的偏移距离与角度偏差作为PID控制对象分别计算其控制输出最后相加。 下面直接附上详细注释版的代码 THRESHOLD (21, 0, -77, 5, -110, 127) #定义一个阈值元组用于图像二值化处理。这个阈值将用于将图像转换为二进制图像用于线检测。 import sensor, image, time #导入了用于图像处理的sensor、image模块以及用于时间相关操作的time模块。 from pyb import LED from pid import PID #从pid模块中导入了PID类用于实现PID控制算法。 import time from pyb import UART #从pyb模块中导入了UART类用于串口通信。 import math rho_pid PID(p0.37, i0) #创建一个PID对象rho_pid用于控制线的偏移距离。 theta_pid PID(p0.001, i0) #创建一个PID对象theta_pid用于控制线的角度偏差。 #rho 是从图像原点到直线的垂直距离 theta 是直线与垂直轴之间的角度。LED(1).on() LED(2).on() LED(3).on() uart UART(3,19200) # 创建一个UART对象uart用于串口通信波特率为19200。 sensor.reset() # 重置图像传感器 sensor.set_vflip(True) # 设置图像传感器垂直翻转即上下颠倒。 sensor.set_hmirror(True) # 设置图像传感器水平镜像即左右翻转。 sensor.set_pixformat(sensor.RGB565) # 设置图像传感器的像素格式为RGB565。 sensor.set_framesize(sensor.QQQVGA) # 设置图像传感器的帧大小为QQQVGA。 sensor.skip_frames(time 2000) # 跳过2000毫秒的图像帧使传感器稳定。 clock time.clock() # 创建一个时间对象clock用于计时。while(True):clock.tick() #记录当前时间。img sensor.snapshot().binary([THRESHOLD]) #获取图像的快照并将其转换为二值图像根据之前定义的阈值进行二值化处理。line img.get_regression([(100,100)], robust True) #在二值图像中检测线段返回一个线段对象line。#参数[(100,100)]表示检测线段时使用的区域robustTrue表示使用鲁棒回归算法进行线段拟合。if (line): #如果检测到了线段。rho_err abs(line.rho())-img.width()/2 #计算线段的偏移距离即线段的rho值减去图像宽度的一半。if line.theta()90: #如果线段的角度大于90度。theta_err line.theta()-180 #计算线段的角度偏差即线段的角度减去180度。else:theta_err line.theta() # 小于等于90度 直接将线段的角度作为角度偏差。img.draw_line(line.line(), color 127) # 在图像上绘制检测到的线段。print(rho_err,line.magnitude(),rho_err) # 打印线段的偏移距离、线段的长度和偏移距离。if line.magnitude()8: # 如果线段的长度大于8。rho_output rho_pid.get_pid(rho_err,1) #使用PID控制算法计算线段偏移距离的控制输出。theta_output theta_pid.get_pid(theta_err,1) #使用PID控制算法计算线段角度偏差的控制输出。output rho_output theta_output #将线段偏移距离和角度偏差的控制输出相加。if(output0): #控制输出小于0STM32不好处理负数所以要将计算出的负数取绝对值100#stm32通过判断其值是否大于100来判断其是否为负数。output abs(output) 100 #将控制输出取绝对值并加上100。OUTPUT str(round(output)) #将控制输出四舍五入转换为字符串。因为UART的write()只接受字符串作为参数不接受数值类型uart.write(OUTPUT) #将控制输出通过串口发送。uart.write(\r\n) #发送回车换行符。print(OUTPUT) #打印控制输出。pass pid.py 文件见OpenMV官方源码https://book.openmv.cc/project/follow-lines.html 实验效果
http://www.w-s-a.com/news/648552/

相关文章:

  • 中山小榄网站建设长沙网络营销品牌排名
  • 推广优化厂商联系方式网站推广教程优化整站
  • 为外国企业做中文网站建设网站建设单位哪家好
  • 生物制药公司网站模板有没有专业做steam创客的网站
  • 福田做棋牌网站建设找哪家效益快弄一个微信小程序多少钱
  • 成都哪家做网站建设比较好做推广赚钱的网站
  • 常州专门做网站的公司有哪些网页模板下载网站10
  • linx服务器怎么做网站做长页网站
  • 汕头网站建设sagevis服装设计公司有什么职位
  • 网站流量分析报告医院网站制作公司
  • 仿58网站怎么做邯郸网站设计多少钱
  • 广州网站制作开发wordpress中文固定连接
  • 成都网站建设公司盈利吗专门做二手手机的网站有哪些
  • 手机网站设计需要学什么wordpress读法
  • WordPress pajx天津短视频seo
  • 检察院门户网站建设情况总结深圳网站制作长沙
  • 单页导航网站模板搜索量查询
  • 如何在一个地方建设网站营销型定制网站
  • 保定网站建设方案维护动易网站中添加邮箱
  • 简易网站的html代码wordpress音乐html
  • 四川住房和城乡建设厅网站打不开海山网站建设
  • 深圳设计功能网站如何用html制作网站
  • 网络优化软件下载竞价排名和seo的区别
  • 龙华新区做网站中高端网站建设
  • 网站开发小图标大全手机网站设计开发
  • 网页设计设计一个网站口碑营销的优点
  • 枣庄建网站的公司唐山企业网络推广培训
  • 张家界建设企业网站学校资源网站建设方案
  • 网站制作教程书籍业务管理系统
  • 上传网站空间的建站程序怎么删除c 网站开发案例详解下载