- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
成绩
中国农业大学
课程论文
(2014-2015学年秋季学期)
论文题目:机器人创新实验一实验报告
课程名称:机器人创新实验一
任课教师:吴刚
班 级:机制102
学 号:1007050418
姓 名:马玉磊
机器人创新实验一实验报告
实验名称:自动寻路机器人设计
小组成员:马玉磊
实验目的:使用机器人创意组件组装并使用TKstdio软件编写调试程序完成对自动寻路机器人动作的机械仿真
技术建议:摆动模块、转动模块、触须传感器、三轮机构、后轮驱动。
以下通过机器人要实现的功能来论述其机械结构设计:
实现前进,后退,左转,右转的轮式车身。车身采用三轮机构,采用后轮双轮驱动,前轮为自由轮。要实现此基础功能需要两个转动模块。两个转动模块需要两个圆周舵机来实现。
图1 基础功能模块机械结构
图2 基础功能模块机械结构
机器人在前进过程中在其左右方向触碰到障碍(即隧道墙壁)时,要实现自动避障,并转向相反的方向。要实现此功能,需要在基础功能模块的基础上,添加触发左右方向避障功能的两个触须传感器,安装在隧道探索车的左右两侧。特别的,为了实现探索车更好的转弯,特在车头安装飞轮装置,用来减轻探索车和墙壁的碰撞和摩擦。
图3自动调整行进路线功能模块机械结构
机器人在前进过程中遇到阻碍时,能够成功翻越并继续前进。要实现此功能,需要在基础功能模块的基础上,添加一个用于抬起前轮进行越障的摆动模块,摆动模块由标准舵机来实现;还需要添加一个触发越障功能的触须传感器,安装在前轮部位。特别的,在前轮抬起时小车需要支撑结构,故在前轮连杆结构上再固定安装一连杆结构,在前轮抬起时能够起到支撑作用,在正常行进时能够收到底盘处,不会对其正常行进产生影响。这样即实现了需求的功能,也实现了结构优化。
图4Robotway ARM7 LPC2138主控板控制接线示意图。1、2、3接口为传感器接口,接三个触须传感器;4为程序下载接口,连接USB转串口线;5、6、7、8、9为舵机接口接三个标准舵机和两个圆周舵机。舵机黑色线朝下,三针,最上针空余;10为电池接口或电源接口。
图6 控制接线示意图
程序:
用一死循环语句使程序永续执行;在循环语句中嵌套四段条件语句来实现隧道车的四种运动状态,即正常前行状态、左端触须传感器触发向右转并进行摄像、右端触须传感器触发向左转并进行摄像、前端触须传感器触发进行越障。由于正常前行为常态,而其他三种状态均为触发态、暂态。因此需引入一标志位flag来控制,flag为0时,常态;flag为1时,触发态。舵机控制用servo语句控制,触须传感器触发用Input语句控制。
程序源代码
#include config.h
#include lib_io.h
#include lib_arm.h
int main(void)
{
unsigned int flag=1;
Initial_ARM(); //初始化硬件
DelayNS(1500); //延时,确保初始化完成
while(1)
{
if(Input(1,1)==1)
{
LedIn(1,1);
LedIn(2,2);
LedIn(3,2);
LedIn(4,2);
Servo(1,120);
Servo(3,90);
Servo(4,0);
DelayNS(1500);
Servo(4,90);
flag=1;
}
else if(Input(2,1)==1)
{
LedIn(1,2);
LedIn(2,1);
LedIn(3,2);
LedIn(4,2);
Servo(3,60);
Servo(1,90);
Servo(2,180);
DelayNS(1500);
Servo(2,90);
flag=1;
}
else if(Input(3,1)==1)
{
LedIn(1,2);
LedIn(2,2);
LedIn(3,1);
LedIn(4,2);
Servo(1,60);
Servo(3,120);
DelayN
文档评论(0)