回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

K10方向舵小车+二哈视觉寻线 简单

头像 rzyzzxw 2025.02.06 16 0

通过这个作业,我复习了二哈视觉寻线的知识。

好在是自己以前学习过然后写过帖子,重读之后很快就回想到当时写程序及测试的想法。

3bddea928a3d5170cd745c437d0e4c0d.jpg

即使这样,程序框架还是以前的,也花了我好一阵子时间来调试。

1、二哈的倾角对采集的数据会有影响。

2、地图的转弯半径不能太小,因为是四轮小车,车身较长。

3、二哈要单独供电,否则电力不足会导致程序重启。

4、主电池要电力充足,两个电机+舵机还是比较费电。

5、程序中舵机角度随线路的调整是关键,这也是程序的主要部分。

6、小车速度和线路弯度反相关,角度大时,速度要慢点。

材料清单

  • 二哈 X1
  • 四轮方向舵小车 X1
  • 电池 X2

步骤:
1、二哈装上小车,IIC连接扩展板,二哈要单独供电。
mind+
主控:

image.png

扩展板:

image.png

传感器:

image.png

执行器:

image.png

二哈用IIC与掌控板通信,请在二哈中设置协议为IIC。

2、编写程序

HUSKYLENS 巡线实现逻辑
如何让小车在白底黑线的巡线地图上循着黑线运动呢?其实我们只需要知道小车相对黑线是什么位置,分下面三种情况:
1、当小车在黑线的偏右位置时,控制小车向左转弯;
2、当小车与黑线相对居中时,控制直行;
3、当小车在黑线的偏左位置时,控制小车向右转弯。
具体应该怎么实现呢?我们将 HuskyLens 在巡线过程中屏幕上显示的信息剥离出来,抽象成下图的几何数学模型。HuskyLens屏幕的分辨率是 320×240,屏幕左上角的O点为屏幕的坐标原点(0, 0),水平向右方向为 X 轴正方向,竖直向下方向为 Y 轴正方向,因此屏幕右下角的坐标为(320, 240)。上图中橙色虚线为屏幕的中轴线,这条线的横坐标值为160。上图屏幕中黑色的线,是 HuskyLens 摄像头“看到”的巡线地图线条,蓝色箭头为 HuskyLens 计算出来的线条方向,蓝色箭头的起点坐标为(x1, y1),终点坐标为(x2, y2)。我们用终点x坐标x2相对中线位置来判断小车运行动作及运行速度。

寻虚线的逻辑是,屏幕中有箭头时,沿箭头方向运动,看不到箭头时,按前面的方向和速度运动。
方向舵四轮小车的转向是由舵机来控制的,直行、左转和右转都是通过舵机的角度调节来完成。
按照我的小车的舵机安装方式,90度为直行,小于90度右转,大于90度左转。
方向舵机的角度应该随二哈识别中测试出的转向预测箭头的终点坐标x2偏离中线x=160的大小动态调整,偏离中线x=160越大,舵机的转向角度也应该越大。


速度控制在两个TT电机驱动的后轮,直道时速度大些,弯道时速度小些,而且越弯速度越小,这样可减少脱线概率。

 

在下面的程序编写中,我用二哈识别寻线得到的箭头的终点的x坐标和中线x坐标160差的绝对值(范围0-160)的大小来确定电机速度,在四轮小车上测试后发现,比用起点坐标的X1更能准确预测方向,寻线更流畅。

 

在下面的程序中,我主要用了一次函数的斜率的知识来处理二哈识别到的数据计算转向角度和速度。

image.png
提醒一下:不同的光照条件,不同的地图,要让二哈学习一下线路环境。

image.png
上面部分是重点,寻线主要是找到线路,再决定舵机的转向角度,同时角度越大,速度越慢。

image.png

小结:

1、自制跑道弯大多了,跑起来就舒服多了,所以不要太为难小车,老脱线的地方就修改地图,胶带吗,也不贵哈。

 

2、另外,要根据地图情况调整二哈的角度,合适的路线识别视野可以使小车寻线更流畅。

评论

user-avatar