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

学习笔记(11)-仰望小车+二哈识图 简单

头像 rzyzzxw 2024.02.04 433 0

2024.2.4

35f958f6de18fe21775dd5e0c461469.jpg

风传花信,雨濯春尘。

—— 今日立春。      

立春是二十四节气中的第一个节气

是春的序幕

是冬的结束

是寒到暖的桥梁

是旧岁与新生的对话

冰雪即将远行

春风踏上返程

百草回芽

春野拂绿

新岁将启

浪漫的春天正在酝酿之中

在DF社区里继续陪你

看遍一年四季

材料清单

  • 仰望小车 X1
  • 二哈识图 X1
  • DF寻线地图 X1

96b1dda9625fc844ca083ae3fb8590d.jpg

 

在去年就有这个想法,仰望和二哈结合做视觉寻线项目,因为我发现,虽然仰望小车个头比较大,可是转向灵活,转弯半径较小,所以做视觉寻线,可能在小场地上也可以跑下来。

 

现在,它来了。

步骤:

1、二哈装上小车,IIC连接扩展板,二哈要单独供电。

mind+
主控:
121b279f253b0513a6d9e880e039e5d.png
扩展板:
image.png
传感器:
5b7f81a5e95a142eec3a66787b5ec9f.png
执行器:
8dfc50346d32d7e38d2fa1344c11e77.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相对中线位置来判断小车运行动作及运行速度。
四轮方向舵小车视觉巡线的尝试-2图2

寻虚线的逻辑是,屏幕中有箭头时,沿箭头方向运动,看不到箭头时,按前面的方向和速度运动。

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

 

d81201e3e4dc74a250beeb9a13c9d3e.png

速度控制在两个TT电机驱动的后轮,直道时速度大些,弯道时速度小些,而且越弯速度越小,这样可减少脱线概率。
我用二哈识别寻线得到的箭头的终点的x坐标和中线x坐标160差的绝对值(范围0-160)的大小来确定电机速度,在四轮小车上测试后发现,比用起点坐标的X1更能准确预测方向,寻线更流畅。

 

在下面的程序中,我用了一次函数的斜率的知识来处理转向角度。

 

screenshots-仰望3+二哈.mp-1707014947447.png

 

DF小寻线地图还是有点小了,跑道的转弯半径那么小,仰望小车跑起来太勉强了。

自制的手绘跑道弯大多了,跑起来就舒服多了。

 

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

 

这里只是跑起来了,跑得好要用PID,希望愚钝的我有一天能掌握它。

 

 

评论

user-avatar