机器人课程设计报告
更新时间:2023-10-02 22:14:01 阅读量: 综合文库 文档下载
智能机器人课程设计
总结报告
姓 名: 组 员:
指导老师: 时 间:
一、课程设计设计目的
了解机器人技术的基本知识以及有关电工电子学、单片机、机械设计、传感器等相关技术。初步掌握机器人的运动学原理、基于智能机器人的控制理论,并应用于实践。 通过学习,具体掌握智能机器人的控制技术,并使机器人能独立执行一定的任务。
基本要求:要求设计一个能走迷宫(迷宫为立体迷宫)的机器人。要求设计机器人的行走机构,控制系统、传感器类型的选择及排列布局。要有走迷宫的策略(软件流程图)。对于走迷宫小车控制系统设计主要有几个方面:控制电路设计,传感器选择以及安放位置设计,程序设计
二、总体方案
2.1 机器人的寻路算法选择
将迷宫看成一个m*n的网络,机器人通过传感器反馈的信息感知迷宫的形状,并将各个节点的与周围节点的联通性信息存储于存储器中,再根据已经构建好的地图搜索离开迷宫的路径。这里可选择回溯算法。对每个网格从左到右,每个网格具有4个方向,分别定义。并规定机器人行进过程中不停探测前方是否有障碍物,同时探测时按左侧规则,进入新网格后优先探测当前方向的左侧方向。探测过程中记录每个网格的四个方向上的状态:通路、不通或未知,探测得到不同状态后记记录,同时记录当前网格的四个方向是否已被探测过。若某网格四个方向全部探测过则利用标志位表示该网格已访问。为了寻找到从起点到终点的最佳路径,记录当前网格在四个方向上的邻接网格序号,由此最后可在机器人已探测过的网格中利用Dijkstra算法找到最佳路径。并为计算方便,记录网格所在迷宫中行号、列号。并机器人探索过程中设置一个回溯网格栈记录机器人经过的迷宫网格序号及方向,此方向是从一个迷宫网格到下一个迷宫网格经过的方向。设置一个方向队列记录机器人在某网格内探测方向的顺序。设置一个回溯路径数组记录需要回溯时从回溯起点到回溯终点的迷宫网格序号及方向。
考虑到迷宫比较简单,且主要为纵横方向的直线,可采用让小车在路口始终左转或者始终右转的方法走迷宫,也就是让小车沿迷宫的边沿走。这样最终也能走出迷宫。本次课程设计采用此方法。即控制策略为机器人左侧有缺口时,向左进入缺口,当机器人前方有障碍是,向右旋转180°,其余情况保持前进。 2.2 传感器的选择
由于需要检测机器人左侧和前方是否有通路,采用红外传感器对机器人行进方向和左侧进行感知。红外避障传感器是依据红外线的反射来工作的。当遇到障碍物时,发出的红外线被反射面反射回来,被传感器接收到,信号输出引脚就会给出低电平提示信号。本机器人系统的红外避障信号采用直接检测的方式进行,直接读取引脚电平。传感器感应障碍物的距离阈值可以通过调节传感器上的变阻器来改变。
行进过程中,机器人可能会偏绿迷宫的横轴或纵轴的方向。碰触传感器利用外力的作用传递给单片机信息,当碰触传感器碰到迷宫墙壁后,传感器检测到信号就可以判断小车碰壁。经过电路处理后,信号输出接口输出数字信号送给控制器,从而让控制器进行决策调整小车姿态。本机器人系统共使用了2个碰触传感器,分别安装在小车的左前方和右前方,使得机器人在偏离航向撞击迷宫侧面后可以立即对航向进行修正。
四个传感器一共占用四个外部中断。
3.3 总体结构设计
红外避障传感器 直流电机 STM32 电机驱动模块 碰撞开关 电源模块 三、具体实现
3.1 芯片选择
最小系统已经设计好,本次课程设计采用的控制芯片为STM32F103RBT6
它是32位的Cortex-M3内盒的控制芯片, 主频达到72MHz, 拥有128kB 闪存, 20kB SRAM,
锁相环,内置 8MHz and 32kHz时钟电路,具有PWM模块,方便电机转速的控制。 3.2 控制电路设计 (1)电机驱动:
电机驱动电路原理图如图所示,采用BTS7960芯片驱动电机,以控制机器人的两个驱动轮,利用PWM控制方法,通过改变PWM波的占空比,达到调节电机转速的目的,实现机器人的前进,后退,转向,刹车等功能。每个电机都由一个H桥电路驱动,由两个输入信号共同
控制。两个电机共由4路PWM波进行控制,结合上述的电机驱动原理,小车运动方式可以通过如下方式实现:四个控制信号均为低电平时,电机停转,小车停止;电机的左右轮电机同向等速运行时,可以实现前行或后退的动作;小车的左右转向通过两轮差速来实现。在本机器人的设计中,需要实现的90°角度转弯,是通过电机定速运动和延时的配合完成的,通过不断调试确定出最佳的旋转时间。 (2)电源模块:
采用电池供电,可行的供电方案原理图如下
(3)引脚(外部中断)分配:
PA0,PA4,PA5,PA15为中断输入引脚。PA0引脚对应的外部中断由机器人前向红外传感器触发,PA4,PA5分别连接机器人前进方向的左侧和右侧的碰撞开关,PA4,PA5的上升沿信号代表机器人与迷宫的左,右侧发生碰撞,触发相应地终端服务程序,调整航向。PA15接收左侧红外传感器产生的触发信号,当机器人左侧出现缺口时,触发中断服务程序,机器人向左转向进入缺口。
} delay_ms(1000); }
EXTI->PR=1<<15;
}//PA15出现下降沿,代表机器人前进方向的左侧出现了缺口,应当执行向左转向的操作。
注:中断程序中部分变量的宏定义如下 #define KEY0 PAin(0) #define KEY4 PAin(4) #define KEY5 PAin(5) #define KEY15 PAin(15) (3)主程序设计:
首先进行初始化,调用实现写好的函数使能相关时钟,配置相关引脚的功能,使得PWM模块能正常工作,对NVIC进行设置,使得四个由传感器触发外部中断能共正常工作。
进行初始化后,在没有碰撞开关,机器人前方没有障碍,左侧没有缺口的情况下,外部中断都不触发,机器人应该保持向前行走的状态,程序如下:
#include \
int flag=0; u8 mode='0'; float distance=0; int main(void) {
Stm32_Clock_Init(9); delay_init(72); uart_init(72,9600); PWM_Init(10000,0); EXTIX_Init(); led_int(); while(1) { go_forward; } }
(4)程序流程图说明:
附件:程序
////////////////主程序 #include \
#define KEY0 PAin(0) #define KEY4 PAin(4) #define KEY5 PAin(5) #define KEY15 PAin(15)
#define LED2 PCout(11)// PA8 板子上的红灯,上面的 #define LED1 PCout(12)// PD2
int main(void) {
Stm32_Clock_Init(9); //主频72M delay_init(72); //延时初始化
uart_init(72,9600); //初始化串口1(PA9,PA10)、串口2(PA2,PA3)、串口3(PB10,PB11) PWM_Init(10000,0); EXTIX_Init(); led_int(); while(1) { go_forward; } }
//////////////////////中断程序 #include\
//外部中断初始化程序
//初始化PA0,PA4,PA5,PA15为中断输入. voidEXTIX_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD GPIOA->CRL&=0XFF00FFF0;//PA0,4,5设置成输入 GPIOA->CRL|=0X00880008; GPIOA->CRH&=0X0FFFFFFF;//PA15设置成输入 GPIOA->CRH|=0X80000000; GPIOA->ODR|=(1<<0); //PA0,4上拉 Ex_NVIC_Config(GPIO_A,0,FTIR);//下降沿触发,反转 Ex_NVIC_Config(GPIO_A,4,RTIR);//上升沿触发,左转
}
//外部中断0服务程序 PA.0 PB.0 PC.0.......PG.0都对应到中断线0 void EXTI0_IRQHandler(void) {
delay_ms(100);//消抖
if(KEY0==0) //按键2 { LED1=0; //指示灯亮起 LED2=0; go_back; delay_ms(800); turn_back_right; }
LED1=1; LED2=1;
EXTI->PR=1<<0; //清除LINE0上的中断标志位 }
void EXTI4_IRQHandler(void) {
delay_ms(100);//消抖 if(KEY4==1) //按键2 {
LED1=0; go_back;delay_ms(400); turn_left;delay_ms(400); }
LED1=1;
EXTI->PR=1<<4; //清除LINE0上的中断标志位 }
void EXTI9_5_IRQHandler(void) {
delay_ms(100);//消抖 if(KEY5==1) //按键2 {
Ex_NVIC_Config(GPIO_A,5,RTIR);//上升沿触发,右转 Ex_NVIC_Config(GPIO_A,15,RTIR);//上升沿触发,缺口
MY_NVIC_Init(2,1,EXTI0_IRQChannel,4);//抢占2,子优先级1,组4 MY_NVIC_Init(3,1,EXTI4_IRQChannel,4); MY_NVIC_Init(4,1,EXTI9_5_IRQChannel,4); MY_NVIC_Init(1,1,EXTI15_10_IRQChannel,4);
LED2=0; go_back;delay_ms(400); turn_right;delay_ms(400); }
LED2=1;
EXTI->PR=1<<5; //清除LINE0上的中断标志位 }
void EXTI15_10_IRQHandler(void) {
delay_ms(100);//消抖
if(KEY15==1) //按键2 { turn_left_90; while(KEY0==1) { go_forward; delay_ms(100); } go_back; delay_ms(600); turn_left_60; while(KEY15==1) { if(KEY5==1) { go_back;delay_ms(400); turn_right;delay_ms(400); } if (KEY4==1) { go_back;delay_ms(400); turn_left;delay_ms(400); } else {go_forward;} delay_ms(100); } delay_ms(1000); }
EXTI->PR=1<<15; //清除LINE0上的中断标志位 }
正在阅读:
机器人课程设计报告10-02
计算机二级复习题06-08
常用单位换算09-22
石家庄市2013信息技术中考选择题汇编04-25
《计算机绘图》期末考试复习10-11
固体物理导论部分考前复习试题01-07
2014-2019年中国干散货运输产业市场竞争力分析及投资价值预测报告07-22
关于执法文书填写中的常见错误问题01-26
《计算机接口技术》练习题A09-09
SS4G与SS9电力机车主电路分析05-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 机器人
- 课程
- 报告
- 设计
- XX红色旅游暨革命文化旅游服务区建设项目可行性研究报告 - 图文
- 4.1.12塔式起重机月度安全检查表
- 人行道按钮控制信号灯
- 浅谈中国饮食文化的民族传统
- 土方量计算方法与精度分析 测绘工程毕业论文
- 成都市土地使用和建筑规划管理技术规定 - 图文
- 调兵山市地税局认真做好财务收支内审存在问题的整改工作
- 财务管理与成本管理的关系
- 2016-2022年中国环烷酸行业市场行情动态研究报告 - 图文
- 各名校小升初择校文学常识真题汇总
- 《太阳和月亮》
- 2017年名校自主招生18院校考试真题(三)
- 基础会计实用计算题(2)
- 触发器实验报告
- 约投挂号操作手册 - 图文
- 在接受捐赠仪式上校长的欢迎词
- 两会保电工作总结
- 不包括以南区块2016年庄市街道绿化养护工程(最终版)
- O1V型自动变速箱的检修1
- 五四话剧 - 五四风雷