两轮自平衡机器人
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创新设计实训
设计题目:两轮双光感自平衡机器人完成日期:年 5 月
学院:机械工程学院
专业:机械工程及自动化指导老师:
小组成员:
天津理工大学机械工程学院
课程成绩评价表
学号姓名年级专业工作分工成绩
程序编写
论文撰写
程序编写
论文撰写
模型搭建
造型设计
模型搭建
造型设计
性能(70%)美观与创意(30%)整体
评价
评语:
一、问题的提出和分析
1.1 实验目标
两轮双光感自平衡机器人主要实验的目标:
能够依靠两个轮前后摆动来达到控制车体平衡的效果。
1.2 功能分析
两轮双光感自平衡机器人必须具备一些主要的功能:
小车必须在没有外部支撑点的情况下,通过两个光传感器所接收到的信息来控制小车保持平衡并且能够稳定的向前走。
二、模型的搭建
我们在初步分析了上述需要实现的功能后,开始了我们方案的选择和模型的搭建。首先,我们为了让马达的变速效果最直接的传递到轮上,所以采用直接将车轮安装在马达上的做法,然后为了实现车身中心不至于过高且过低,所以直接将两个马达横置,然后将控制器放置于其上,最后用各种大小不同的零件将这两个部件固定并合成一个两轮小车
搭建结果如图所示。
三、程序的实现
该小车的程序是通过乐高的一个名为Bricx Command Center的软件编辑的,因为该软件给马达提供了七级变速,所以便于调试马达的速度来打到控制的效果。外加该软件还有一个好处就是采用了高级语言,让编程者能够直观的看出所要执行的任务。
3.1 程序流程图
该程序是通过对小车两个轮的控制,以让小车通过自动调节重心的方法来保持平衡,通过前后两个光传感器接受外界光的读数的变化,判断现在小车车身的倾斜程度,然后以适当的功率带动车辆向倾斜方向运动适当距离使重心回复到正确位置。
3.2 程序全图。
task main()
{
int Kp;
int Ki;
int Kd;
Kp=26 ; Ki=0 ;Kd=20;
int integral;
int lasterror;
int derivative;
int Tum;
integral =0; lasterror=0; derivative=0;
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_LIGHT);
int offset;
int error;
int s;
//offset=SENSOR_1 - SENSOR_2;
//#define forwards(1,1);
//OnFwd(OUT_AC,1);
while (true)
{
error =SENSOR_1 - SENSOR_2 -2;
derivative =(2/3)*(error - lasterror);
integral =integral+error*(2/3);
lasterror = error;
Tum=Kp*error+Ki*integral+Kd*derivative;
Tum=Tum/100;
s=Tum;
//#define forwards(s,1); // OnRev("ports", "pwr");
if (s>7)
{
s=7;
}
if (s<-7)
{
s=-7;
}
if (s<0)
{ OnRev(OUT_A, -s);
OnRev(OUT_C, -s);
}
if (s=0)
{
Off(OUT_A);
}
if (s>0)
{
OnFwd(OUT_A, s);
OnFwd(OUT_B, s);
}
//OnFwd(OUT_A+OUT_C,s+1) ;
}
}
此程序中用到了一个用途很广的控制方法,叫做PID,它是通过主要控制输出与变化范围之间的比例关系,然后辅以微分和积分的调节以达到控制其平衡的效果,其中最重要的就是通过若干次的调试使其中的三个参数(KP,KI,KD)使其
系统达到最稳定状态。
四、运行结果
这次实验因为各种原因我并没有找出正确的参数来使系统打到平衡,但是我通过一次次的调试发现了,当我改动KP时,在25左右时系统比较稳定,当低于20时系统会无法产生调节重心的趋势,而当大于30时会出现小车晃动的越来越厉害。而通过调节KD,可以增加系统的反应速度,但是因为我未能找出准确的KP值,所以KD值未能正确找出,只能确定出当KD越大时,对于比例环节的调节作用就越强。
五、设计小结
在此次实验中,我懂得了两轮自平衡小车的工作原理,也懂得了如何才能让它动起来,当然,最重要的还是我学会了使用一款新的软件,因为它才是一切机器人的心脏,我以后不仅可以将它运用在这一个机器人上面,还可以延伸到其他类型的控制系统当中。而且,通过做自平衡机器人,我认识了一个新的控制方法PID,我相信它不仅可以运动到这上面,以后肯定在其他系统当中还会见到,而且,以后我用同样的方法通过改变传感器类型等还可以创造出更多类型的机器人。