机器人组装大赛设计方案
本次设计提出了以ATmega128为核心控制元件,设计一个简易的拾捡乒乓球机器人。方案以ATmega128单片机为主控核心,采用CMOS摄像头作为检测装置来获取乒乓球的位置,运用舵机和直流电机作为执行装置来调整机器人位置,并利用舵机构成旋转的机械臂来拾捡乒乓球。
CMOS摄像头
ATmega
128
核心控制器
机械臂的两路舵机
调整机器人位置
轮子舵机和直流电机
光电开关
调整机器人位置
拾捡乒乓球
自动避障
获取乒乓球位置
图1 总体设计功能模式图
一、 总体方案设计思路
1.机器人动作设计:自动避障、拾捡乒乓球。
2.机器人工作过程设计:
(1)自动避障过程:机器人会通过两个光电开关来判断其前方是否有障碍物,如果有障碍物机器人会采取相应的策略自动避障,直到调整好位置。
(2)其次通过CMOS摄像头采集机器人正前方的环境信息,判断乒乓球是否在机器人的正前方,如果乒乓球在正前方则返回信息给主控制卡,并启动机械臂拾捡乒乓球,接着再次开始检测,否则根据设定好的策略调整机器人的位置,左移、右移、前进或者后退,直到扫描完整个设定的移动区域。
二、 系统各功能模块详细设计
(1) 避障部分
(光电开关传感器)
控制中心
(AVR单片机)
执行机构
(直流电机、舵机)
定位部分
(CMOS摄像头)
电源
(提供5.2V,足够大的电流)
系统框图
(2) 模块说明
图3 控制电路板原理图
①控制中心:采用机器人套件MultiFlex控制板,控制芯片采用atmega128,控制板电路原理图如下: ②定位部分:CMOS摄像头
通过安装在机器人前部的CMOS摄像头,得到由橙色乒乓球和白色路面组成的图像,乒乓球和路面之间的色差体现在其灰度值的大小差异上,摄像头中的图像传感器芯片将各点处图像的灰度转换成与灰度一一对应的电压值通过视频信号端分场逐行输出,利用控制器采样图像中各点的电压值,就可以判断出乒乓球是否在机器人的正前方。
图4 乒乓球定位图
③电源部分:电源部分非常重要,需提供5.2伏的电压以及足够大的电流,有机器人适配器提供。
④避障部分:光电开关传感器
光电开关可以检测20CM左右的障碍物,当检测到障碍物时,其信号输出端(SIG引脚)会输出低电平,否则会输出高电平,因此利用控制卡的输入/输出端子来检测这个信号,并调整机器人位置,达到自动避障的目的。在机器人前部放置两个光电开关,通过两个开关返回的值进行处理,判断左移还是右移。
⑤执行机构:4路直流电机和6路舵机
(a)4路直流电机由2片L298驱动,通过给予L298相应的数字量控制模拟量,驱动直流电机转动,并根据实际情况控制转速,以此来控制机器人车轮转动,达到前进或者后退的目的。
(b)4路舵机控制机器人的转向
(c)2路舵机控制机械臂的转动,起降
(d)机械臂的构造
机械臂由方筒朔料组成,方筒上部是开口的,下部拉两条橡皮筋,在机械臂降落时和地面产生挤压,把乒乓球挤入方筒朔料,升起机械臂后,乒乓球从方筒上部倒入贮藏盒。
三、 程序设计
(1)总体程序设计流程
是否返回0
开始
CMOS摄像头数据采集
启动机械臂
自动避障
光电开关
数据采集
初始化
摄像头判断有无乒乓球
Y
N
N
Y
根据设定的策略调整位置
根据设定的策略
扫描整个区域
(2)初始姿态子程序
开始
驱动4路舵机调整车轮位置
驱动2路舵机使机械臂立起
(3)自动避障子程序Y
N
N
N
Y
启动光电传感器
a=0?
左、右光强传感器采集数据a,b
Y
b=0?
后退5CM
并左转
b=0?
后退5CM
并左转
后退5CM
并右转
保持
(4)扫描定位乒乓球子程序
依照此策略扫描50×50cm区域
CMOS摄像头数据采集m
N
N
Y
Y
前进5CM j++
flag=!flag
设初值i=j=1
flag=0
m>Max?
启动机械臂
N
Y
flag=1右移5cm flag=0左移i++
i≤10
j≤10
停止
50cm
50cm
四、 设计总结
1、本设计通过现阶段实际的安装调试表明,可实现自动避障,起降机械臂拾取乒乓球,大致能完成系统总体设计中预期的各项功能。
2、通过在实物搭构的过程中,发现朔料材质强度不够,机械臂容易晃动,在执行拾取乒乓球的过程中显得不够牢固。
3、CMOS摄像头定位乒乓球可能定位精度不够,可能导致有时拾取乒乓球失败。
4、本设计的难点在于利用CMOS摄像头准确定位乒乓球,并调整机器人车身位置,使乒乓球正好处于机器人前方位置,以便于机械臂拾获乒乓球。
五、参考文献
《创意之星—模块化机器人教学套件实验指导书》第三版 博创科技