MaixCAM MaixPy 小车巡线
2024-05-09
更新历史
日期 | 版本 | 作者 | 更新内容 |
---|---|---|---|
2024-05-09 | 1.0.0 | lxowalle | 初版文档 |
阅读本文前,确保已经知晓如何开发MaixCAM,详情请阅读快速开始
简介
本文将介绍如何使用MaixPy实现寻线小车
如何使用MaixPy实现寻线小车
- 准备MaixCAM与小车
- 实现寻线功能
- 实现小车控制功能
准备MaixCAM与小车
TODO
实现寻线功能
使用image
模块的get_regression
可以快速寻找到直线,详情见寻找直线
代码实现:
from maix import camera, display, image
cam = camera.Camera(320, 240)
disp = display.Display()
# thresholds = [[0, 80, 40, 80, 10, 80]] # red
thresholds = [[0, 80, -120, -10, 0, 30]] # green
# thresholds = [[0, 80, 30, 100, -120, -60]] # blue
while 1:
img = cam.read()
lines = img.get_regression(thresholds, area_threshold = 100)
for a in lines:
img.draw_line(a.x1(), a.y1(), a.x2(), a.y2(), image.COLOR_GREEN, 2)
theta = a.theta()
rho = a.rho()
if theta > 90:
theta = 270 - theta
else:
theta = 90 - theta
img.draw_string(0, 0, "theta: " + str(theta) + ", rho: " + str(rho), image.COLOR_BLUE)
disp.show(img)
上述代码实现了寻线功能, 上述参数中需注意:
- 设置合适的thresholds值来寻找到对应的直线
- 设置合适的area_threshold值来过滤环境干扰,可以过滤一些面积小的直线
- 使用
a.theta()
获取直线的角度 - 使用
a.rho()
获取直线与原点(原点在左上角)的距离
根据实际环境调试好寻线参数后, 就可以利用a.theta()
和a.rho()
控制小车方向了。
实现小车控制功能
TODO