通过地磁进行智能系统导航控制的方法,通过地磁传感器获得智能系统的行驶状态,并对地磁导航角进行误差校正。
无人驾驶采用人工智能算法来完成转向任务,简而言之,无人驾驶汽车就是不断的学习和模仿人们的开车姿势从而达到自主开车的目的。人们在开车时,面对不同大小的弯道,人们总是可以凭借经验来转动方向盘从而通过弯道,而对于无人驾驶汽车来说,我们会定义一个成本函数,用于确定对于待达成的特定转向率的成本,成本函数可以包括一个或者多个个体成本函数,用于计算一个或者多个个体。
而无人驾驶汽车学习的目的,就是使得它的转向率尽可能地接近于人类的水平,也即使得这个成本函数尽可能的小。如上图所示,传感器系统依旧用于采集车辆的各种状态信息,控制系统则用于控制车辆状态。
针对于不同的路况,决策模块决定了如何通过这些不同的路况,决策模块可以根据诸如驾驶或者交通规则来做出此类决定,这些规则就存储在永久性存储装置中。有了这些硬件和软件的基础,无人驾驶车辆就可以完成转向任务了。
如上如所示是用于 *** 作自动驾驶车辆的转向的过程,通过软件以及硬件的组合来完成这个流程。
首先,处理逻辑确定用于自动驾驶车辆的若干转向率候选选项,这里用到了多个成本函数,以便于计算转向率对于自动驾驶车辆的不同影响。
其次,通过不同的成本函数来确定控制转向率的总成本,在候选转向率的选项中选择具有最低总成本的转向率作为自动驾驶车辆的转向率。
最后,通过目标转向率生成转向控制命令用于控制无人驾驶车辆的方向盘,这里需要软件和硬件的配合,才能完成一次车辆的正确转弯。
扩展资料
指被配置为处于自动驾驶模式下的车辆,这种车辆在极少或者没有驾驶员干预的情况下通过导航来行驶。尤其是在面对各种弯道时,更加要求车辆能够及时、迅速的拐弯,这就对于无人驾驶车辆的转弯系统提出了很大的要求。
其实早在17年的5月24日,百度就申请了一项名为“动态调整自动驾驶汽车的转向率的方法”的发明专利(申请号为:201780003089 .9),申请人为百度(美国)有限责任公司。
#include<reg52.h>#define uint unsigned int
#define uchar unsigned char
uint count
uchar jd
sbit le1=P1^0//*光电传感器*//
sbit PWM=P3^5//舵机pwm//
init()
{
TMOD=0x01//设定定时器
TH0 = 0xFE
TL0 = 0x0c//设定定时初始值
EA=1
ET0=1
TR0=1
}
void delay(uint z) //延时
{
uint x,y
for(x=zx>0x--)
for(y=125y>0y--)
}
void timer0() interrupt 1 //产生pwm信号控制舵机,周期20ms
{
TH0 = 0xFE
TL0 = 0x0c //设定定时初始值
if(count<jd) //判断0.5ms次数是否小于角度标识
{
PWM=1 //确定小于,pwm输出高电平
// delay(180) //延时一会,可以减慢舵机转速
}
else
PWM=0 //大于则输出低电平
count=count+1 //0.5ms次数加1
count=count%40 //次数始终保持为40即保持周期为20ms
}
void xunji()//循迹函数,读取光电管状态
{
if(le1!=0)
{
delay(10)
if(le1==0)
{
jd++
count=0
while(le1==0)
}
} //分析光电管状态,看你的电路检测到黑线输出1或者是0
else
{
count=0
jd=3 //舵机归中
}
}
void main()
{
jd=3 //角度初始化90°: 1=0.5ms 舵机为0° 2=1ms 舵机为45°3、4、5、同上
count=0 //初始化赋值零
init() //定时器初始化
while(1)
{
xunji() //舵机检测
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)