我是打算参加我们学校举办的教育机器人大赛,比赛有两种,一是高铁游中国,二是搬运码垛,因为个人事情比较多,所以我就打算选择比较简单的高铁游中国了。
比赛介绍
它的规则就是有一张地图,上面有36个城市节点.我们需要游览15个城市,有10个是必须经过的城市,还有5个是比赛前抽签决定的城市。2019年的必游城市是: 长春、 北京、 济南、 郑州、 合肥、 成都、 上海、 长沙、广州和昆明,其它5个城市在赛前抽签决定, 5个城市只在兰州、呼和浩特、西安、 武汉、贵阳、 徐州、 厦门和哈尔滨等8个城市中抽取。地图大概长下面这个样子。
我们可以选择C51或者STM32芯片来进行比赛,我可能会选择stm32,毕竟我也学了一段时间了,学过的东西总是要拿来实际运用的,虽然不知道做不做的出来。
传感器
先来看下读卡器把。这个东西我们只需要接上串口和读卡天线就可以正常读卡了。
读卡天线就长这个样子。
这个东西因为已经集成好了,所以只要接触到卡(比赛时会放在城市中心那个白点出),然后就会从串口输出数据,输出的是16进制的数字,后面我们可以自己通过输出的数据来判断城市。输出格式如下
实际中我们获取中间那10位数据就 可以了,但是为了防止误读,我们还可以看一下校验位,判断数据是否传输正确。卡号以及对应的关系:
城市编号
城市名 | (x,y)坐标 | 标签卡 编号 | 城市名 | (x,y)坐标 | 标签卡 编号 |
哈尔滨 | (200.09,16.2) | A1 | 长春 | (198.98,36.37) | A2 |
沈阳 | (193.24,57.90) | A3 | 大连 | (188.23,86.80) | A3 |
天津 | (155.18,87.65) | A5 | 北京 | (129.16,76.72) | A6 |
呼和浩特 | (88.23,68.02) | A7 | 银川 | (47.73,98.36) | A8 |
太原 | (88.36,102.66) | A9 | 石家庄 | (114.06,99.08) | A10 |
济南 | (148.53,122.20) | A11 | 青岛 | (181.23,120.78) | A12 |
兰州 | (41.68,139.02) | A13 | 西安 | (81.81,144.93) | A14 |
郑州 | (112.04,142.89) | A15 | 徐州 | (155.79,149.27) | A16 |
蚌埠 | (164.22,162.24) | A17 | 成都 | (58.74,187.01) | A18 |
重庆 | (88.30,204.94) | A19 | 武汉 | (128.91,197.61) | A20 |
合肥 | (156.27,183.77) | A21 | 南京 | (183.65,178.50) | A22 |
上海 | (204.31,198.07) | A23 | 昆明 | (46.63,237.30) | A24 |
贵阳 | (86.286,242.57) | A25 | 长沙 | (131.81,234.84) | A26 |
南昌 | (155.36,229.42) | A27 | 杭州 | (190.89,216.59) | A28 |
宁波 | (214.54,222.31) | A29 | 北海 | (33.49,285.75) | A30 |
南宁 | (63.05,269.92) | A31 | 广州 | (138.46,278.92) | A32 |
深圳 | (152.08,284.36) | A33 | 厦门 | (180.12,273.44) | A34 |
福州 | (202.57,252.47) | A35 | 佛山 | (124.15,277.01) | A36 |
QIT线跟踪传感器
资料找了半天没找到只是找到了安装示意图。。。
找到原理了,还挺简单的。
WT588D语言芯片
我们到了一个城市就要使用喇叭把城市播放出来。不过我之前买过一个TTL语音合成芯片,所以就可以直接参考我之前那个芯片的资料。
不过还是说一下这个芯片把。这个东西可以mp3控制模式,按键控制机,3*8按键控制,并口控制,一线串口控制,三线串口控制。
我看了下说明,里面采用3线控制的方式来实现的。
其实就类似于IIC通信。后面实际比赛的时候在详细说明一下吧
算法:向量分析法
这个算法是整个机器人高铁游中国的最关键部分。下面是改算法的步骤:
1.首先我们先把这些城市的坐标记录下来。
我们这里用到了两个数组M存储城市坐标和标签卡信息,N用来存储机器人的移动路径。
2.机器人通过qit循线到达一个城市,然后通过RFID读卡器获取到当前城市的信息。然后找到对应坐标,然后通过N来获取上一个和下一个城市的信息.我们这里记做A和C。最后我们通过这三个城市来获取机器人需要转动的角度就可以旋转机器人进入下一个城市的轨道,并巡线前往下一个城市移动。
这里我们把B作为当前的城市,我们上一次经过的城市为A,然后通过向量的坐标计算就可以得出需要旋转的角度了。
这里我们是通过高中学的向量计算公式来计算的,所以还算比较简单。
当然光计算角度是不行的,我们还得知道下一步我们要去的城市是在自己运动方向的左边还是右边
这里我们加了一条Z轴来进行判断
比如我们站在这个点上,如果我们从脚都到的方向和Z轴方向一致,那么C就在我们的右边。如果相反就是直接反过来的,这时C点在左侧。
如果你听不懂,那么就可以直接使用公式来计算。
(上面这个计算公式我也没怎么看懂。。。,反正大概就是这个意思把)