RoboGame参赛总结-1

写在前面

Robogame是USTC内部举办的一个很有意思的比赛,参赛队伍由学生自由组成,竞技组每年会有一个主题,围绕这一主题,参赛队伍需要在规定时间内设计出能够完赛的机器人,通过三次审核和预选赛之后便有机会参加最终的决赛。
我也有幸作为其中一支队伍的队长参加了这次比赛,虽然留下了诸多遗憾,但我希望能分享我们的参赛历程,总结我们这次参赛的亮点和不足。

机械设计思路

参赛规则

2020年的设计主题是 共抗疫情 其实就是要设计一个机器人能够识别物体然后正确转移,相对往年需要考虑动力可靠性等问题,今年的设计对动力几乎没有太高的要求,主要是需要抓取的物块大得离谱,因此抓取方式需要很好的设计。

简单来说,规则要求车子一次只能爪两个人,两个黄色小人放到放舱医院,并能正确跳过占位小黄人;红色小人抓取后放到方舱医院并盖上面罩就完赛。
听起来很简单对吧,其实真正的设计过程真的有太多太多的问题了。

主体设计

上一张设计的概念图:
在这里插入图片描述
想法是很美好的,用两个爪子分别抓取后收回,使用RFID识别小人身上的RFID标记,然后尽量使用云台的转移代替车体姿态的调整来减少完赛时间。
在这里插入图片描述
选择了很激进的放弃黑线红外循迹,单纯依靠PID对行进进行控制(最后证明虽然可以实现,但预算有限的情况下无法保证加工精度,可靠性并不理想)。
是的,也许你注意到了我们甚至还设计了减震,但最后是被取消了,同样是预算有限实在无法定制一些精细的零件,反而起到了反作用。
轮子使用的是麦克纳姆轮,事实证明在这种比赛中全向轮更为合理,因为低速状态下,小直径麦轮颠簸异常严重,没有避震情况下对电机的结构损伤很严重。

控制设计思路

识别

识别当然是最重要的了,我们同时进行了RFID和视觉识别的验证,最后是选择了视觉识别,但事实证明视觉识别受灯光影响实在是太大了,单纯的色块查找可靠性不高,特别是在舞台那种复杂的灯光条件下。如果想用视觉识别,当然一般是使用树莓派,而树莓派在对其他元件的控制,特别是PWM控制方面并不擅长,而且视觉识别占用的计算资源实在太夸张了,因此通过串口通信和一块STM32f103zet6连接,STM32负责其他模块的调用和逻辑控制,树莓派通过串口返回识别颜色就完事了。

控制

贴一段main函数代码:

#include "stm32f10x.h"
#include "PWM_set.h"
#include "delay.h"
#include "Engine_Init.h"
#include "Engine_Control.h"
#include "pushrod.h"
#include "pca9685.h"
#include "communicate.h"

> int main(void){	
	delay_init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	uart_init(115200);
	Drive_PID_Init();
	Irsensor_Init();
	RFID_Init();
	Encoder_Init(299, 7199);
	Engine_Init(4999,71, 0);
	Sterengine_Init();
	ObjectSearchNode->mirror_direction = 1; //决定场地选边
	
	Grab_Init();
	Pushrod_Init();
	
	Control_WaitStart();
	Pushrod_Stop();
	
	//等待开始
	//初始化任务结构
	
	Drive_Control(Go, 4, HighSpeed);
	Control_MirrorMove(INSIDE, 3);
	Drive_SetSpeed(100);
	Drive_Control(Go, 25, HighSpeed);
	ObjectSearchNode->IRsensor_en = 1;
	//到达预抓取位置
	ObjectSearchNode->line_index = 0;
	//清空黑线计数器
	
	ObjectSearchNode->vedio_en  = 1;
	FindYellow();
	PlaceYellow();
	FindRed();

如果可以的话有时间我会详细介绍一下有关函数功能和设计思路(真的遇到了超多问题QAQ)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值