【Python】基于OpenMV的色块自动追踪与云台控制(代码、电赛可用、直接上手)
2020-01-14 04:37
330 查看
OpenMV的色块自动追踪与云台控制(代码)
1、代码
import sensor, image, time from pid import PID from pyb import Servo #调用库 pan_servo=Servo(1) tilt_servo=Servo(2) #阿汪先生的博客 red_threshold = (0, 98, 37, 127, -32, 89) #红色色素块 #pan_pid = PID(p=0.06,i=0.1, imax=90) #脱机运行或者禁用图像传输,使用这个PID #tilt_pid = PID(p=0.05,i=0.05, imax=90) #脱机运行或者禁用图像传输,使用这个PID pan_pid = PID(p=0.06,d=0.01,i=0.02, imax=100)#在线调试使用这个PID tilt_pid = PID(p=0.07,d=0.01,i=0.02, imax=75)#在线调试使用这个PID #由于openmv脱机运行帧率会提高,运行性能会有所改变,所以需要设置“在线联机调试”和“脱机运行”的两个参数 sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # use RGB565. sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed. sensor.skip_frames(10) # Let new settings take affect. sensor.set_auto_whitebal(False) # turn this off. clock = time.clock() # Tracks FPS. #基本参数设置 def find_max(blobs): max_size=0 for blob in blobs: if blob[2]*blob[3] > max_size: max_blob=blob max_size = blob[2]*blob[3] return max_blob #找到视野中的最大色素块 while(True): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. blobs = img.find_blobs([red_threshold]) #biob函数的详细内容可去星瞳科技的官网查询 if blobs: max_blob = find_max(blobs) # pan_error = max_blob.cx()-img.width()/2 # tilt_error = max_blob.cy()-img.height()/2 pan_error = img.width()/2-max_blob.cx() # 横轴方向上的修正参数 tilt_error = img.height()/2-max_blob.cy() # 纵轴方向上的修正参数 # pan_error = 80+max_blob.cx() # tilt_error = 60+max_blob.cy() print("pan_error: ", pan_error) #在参数调试窗口打印色块中心坐标与视野中心坐标的偏离值,便于调试与修正 img.draw_rectangle(max_blob.rect()) # rect #在色块外围四周处画框 img.draw_cross(max_blob.cx(), max_blob.cy()) # cx, cy #色块中心坐标处画十字 pan_output=pan_pid.get_pid(pan_error,1)/2 tilt_output=tilt_pid.get_pid(tilt_error,1)/2 print("pan_output",pan_output) #在参数调试窗口打印坐标值,便于调试与修正 pan_servo.angle(pan_servo.angle()+pan_output) #输出横轴方向上的PWM波控制云台追踪色块标志 #openmv上P7为控制云台上舵机的输出引脚(摄像头上下移动) tilt_servo.angle(tilt_servo.angle()-tilt_output) #输出纵轴方向上的PWM波控制云台追踪色块标志 #openmv上P7为控制云台下舵机的输出引脚(摄像头左右移动) ############## //阿汪先生的博客.ws ##############
pid.py文件可到星瞳科技的官网下载。
2、实物图
3、演示视频:https://pan.baidu.com/s/17x10UiIe-iVjh9RSfSzBzw.
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- python基于秒速赛 车平台出 租自动下拉git代码并重启程序模块。
- 基于python实现jenkins自动发布代码平台 推荐
- 一个简单的导弹自动追踪以及实时图片旋转算法,Python-pygame代码实现
- python基于json文件实现的gearman任务自动重启代码实例
- 基于jQuery的可以控制左右滚动及自动滚动效果的代码
- 基于python实现jenkins自动发布代码平台
- 基于linux vim环境python代码自动补全
- 基于selenium与itchat模块的自动打卡签到签出python代码示例
- 快速上手生成对抗生成网络生成手写数字集(直接上代码以及详细注释,亲测可用)
- 5.Selenium2 自动化测试实战-基于Python语言-控制浏览器后退、前进
- 安装vscode 编辑python代码,需要的常用插件安装配置步骤,格式yapf 自动提示错误flake8
- vim 安装自动补全python代码功能
- 基于python的PC文件自动同步系统
- python获取控制浏览器02 2048游戏自动进行
- 自动下载解压的python logging download os ,一份比较好的python下载解压代码
- [ python3 ] 基于zabbix 自动抓取每天监控数据
- 《肆 基于python的几种代码排列,判断,应用。
- 使用基于Spring boot的guns快速构建自动生成代码的后台管理系统
- Python实现控制台中的进度条功能代码
- selenium 基于python 自动发送企业邮件