2019研电赛记录

  • 第一部分:作品相关

  • 想法由来:
    我们做的研电赛的作品名字叫做基于ROS的智能购物机器人。其实当初有报名研电赛想法的时候完全就是因为想在研究生阶段在尝试紧张刺激的四天三夜,虽然后来知道并不是四天三夜而且是自主命题,当时导师买了两台turtlebot机器人,于是就报了人工智能方向,至于做什么不知道。老师没有提议我们做什么,就是自己去乱搞,至于组内分工,压根就没有。主要干活的就两个人,后期要不是有还有涛哥仍然想干,估计就放弃了,因为太累(论文,PPT ,调程序)。有一次在油管上看到了一个自平衡车,就是人踩着跑的那种,在需要作为代步工具时,他就是一个平衡车,当人下来自己走步的时候它会跟着人走路,并可以根据使用人的不同手势完成不同的功能,有拍照,原地候命等等。当时就有些想法,可以做一个人体跟踪的机器人,于是就开始找资料,开干活。后来做到一半的时候要思考他的背景,这期间我老爸给我打过一次电话,问我之前弄的扫码枪适合哪些超市仓储系统(本科时候我爸搞了一个扫码枪,想给我家超市加上仓储系统,我当时弄了弄,后来家里又用不上了),当时解答完我爸的问题,就突然冒出一个想法,就做超市购物机器人吧,可以跟踪顾客,可以自主结账,但是是未来那种大型的无人超市。因为当时是在turtlebot平台上做,在机器人操作系统上做,所以就取了基于ROS的智能购物机器人名字。

  • 系统组成:
    人体跟踪:
    人体跟踪部分参考了德国亚琛工业大学的论文,利用kinect得到的深度图像将三维点投影到一个估计的平面上,在平面图像上取ROI,一开始取很多ROI,然后传递给检测器,检测器将之前学习的模板滑动到ROI上,通过模板与覆盖的标准化深度图像之间的欧式距离计算距离矩阵。利用距离矩阵上的最小滤波器,得到上体边界框检测。再利用基于模板的IoU剔除多余部分,最后经过一次非极大值抑制,得到最好的检测ROI,圈出来就是人的范围。除了用到这个方法外,还用了HOG检测,这个必然用到,这个是国外pepper机器人上用的算法,直接拿来用了,他们改进HOG后的方法叫Groud_HOG,我们就是利用这两个方法,得到了人体检测区域,从而得到Kinect到人体的距离,以及人在图像中的左右位置,通过距离和偏移量就可以控制机器人的线速度和角速度,从而保持一定距离,进行人体跟踪。
    看着很简单,其实中间有很多问题。
    第一,以上两种方法有视角上的限制。首先是高度问题,Kinect如果放的太低,要想看到人体上身并检测到人体,需要人距离机器人有较远的位置,而我们还要利用机器人的建图导航功能(后面细说),因此需要找一个恰当的高度来同时满足两个方面的功能。其实一开始想从算法上去改,发现有点难,于是就调节硬件了,可以权衡得不错。
    第二,距离视角限制。当机器人距离人体较近的时候,Kinect就不会看到完整人体,只会看到一个屁股或者大腿,一开始想了很久,后来利用kinect红外信息,得到距离人体的距离,这个其实也有弊端,如果人体恰好拐弯,拐弯后恰好是一面墙,那么Kinect仍然会检测到距离,也就是说他就是检测距离前方障碍物的距离。这种情况暂时没想到特别好的解决办法,加上一个丢失视角后的延时检测会好一些。忘记说了,这个地方其实是将Kinect的深度信息转换成雷达信息,我们将前方的720个雷达数据分成3组,根据每个组的平均值,根据人体所在方向,进行近距离的方向调节。
    第三,移植老外算法。将老外的算法移植到自己电脑上,调试Kinect接口,弄了好久,他们的配置文件太多太多,这个地方主要是费了好多时间。
    第四,硬件差。i7-7700,8G内存(后来扩到16G),跑的时候总会卡死,这个地方一直没找到好的解决办法,卡死节点后重启节点会影响检测连续性。这个太难了,影响也是最大的,后来想的办法是卡死后保留上几帧的图像,从而计算这几帧图像人体的变化趋势,将机器人的控制量减小,根据人体运动趋势去运行,直到节点重启,这种曲线救国的方法还算好用。

建图导航
这个系统仍然用到了建图和导航,想法是购物机器人在仓库待命,如果有顾客呼叫,就会根据事先建立好的地图来到顾客参身边,从而进行跟踪服务。建图这部分用的Gmapping建图,导航用的也是功能包,除了修改一些更适合小型地图构建的参数外,对于主要建图导航功能没有太多的改进。这个部分花费时间的地方是目标点的设定,因为目标点很多,一定要找好来来回回的目标点导航。

语音交互
采用科大讯飞语音。这部分的想法是每当购物机器人完成相关操作,导航完成,扫码完成,结账完成等等都进行中文语音提示。后来加上了询问导航功能,顾客不知道某些商品在哪个区域的时候,可以对机器人进行提问,语音识别后可以根据内容进行回答。这里要注意的是科大讯飞只能在线识别,因此需要连接有网络接入的局域网。这里的难点就是操作科大讯飞语音包,改成自己想要的,并同时进行听写操作。

自主扫码枪和蓝牙通信
搞了一个手动扫码枪,就是那种按一下亮一下的那种,上面装了一个舵机和红外传感器,红外检测到东西的时候舵机就按一下,效果不错。至于为什么没直接用那种一直亮着的扫码机就不说了(贵还不太好用,不便携,主要是贵)。这些外设使用树莓派3B驱动的,因为树莓派可以装ROS,可以将检测到的信息发送到topic流上,机器人控制器和主机控制端都可以在局域网下共享消息。此外树莓派还有一个大作用,就是蓝牙。由于人手短缺,就直接用蓝牙了,比较简单。树莓派连接手机蓝牙,之后就可以通过手机控制整个智能购物机器人系统。

手机app
没学过java,更别提安卓了。用的是appinventor写的,简单的学了学就开始搞了,实际上也没啥东西。选择蓝牙列表,加上几个按键,发送数据,加上几个标签,接收树莓派发来的消息。因为最后要显示账单功能嘛,按键有呼叫机器人,询问导购,开始跟踪,结账,打包几个按键,再加上几张个性化的图片,就齐活了。

仓储系统
再就是写了一个简单的仓储系统,能够进行快速商品录入,查询当前商品剩余量等等,这里没深度开发,因为简单,而且暂时不重要。

  • 总结
    以上大概就是想法由来和整个购物机器人的控制流程了。其中要改进的有很多很多。这个部分最后贴上我们答辩时的标语:
    2019研电赛记录_第1张图片

  • 第二部分:比赛相关

  • 准备阶段
    去比赛前大概十天左右,组委会会要求提交论文,答辩ppt,作品简介,易拉宝图片等等。这里强调一下易拉宝需要自己制作,并带到现场去,答辩ppt一旦提交就不可以再修改。

  • 第一天
    2019年研究生电赛8月15日在南京信息工程大学开始进行。我们早上七点半的飞机在大连起飞,如果涉及到电池,一定要查看电池的瓦时参数,一般不超过100Wh是可以带上飞机的(Wh是指电池一个小时能输出的瓦数,能量单位)。
    大概中午到达南信大,安排好住宿后开始去场馆组装机器人,开始调试,现场的人是真的多,建立地图都费劲,一直可以调到晚上十点。这个期间,傍晚进行一次抽签,决定答辩顺序,再就是确认ppt是否可以正常播放。此外就是一直调,我们一直调的不好,一度想放弃0.0

  • 第二天
    第二天一早上去开幕式,然后集体合影,然后就开始作品展示。一共分成20组左右,每组有17,18个队,这个分组是按照作品类型分的,也就是你的同组做的内容和你做的类似。作品展示是专家评委们挨个看,看完会给成绩。到我们组的时候,因为我们部分功能没展示出来,有很大影响,但是评委老师仍然耐心询问。后来得知我们组很多都出了很多毛病,我们组都是机器人,大老远运来的都有鲁棒性的问题,其实重组机械结构会有变化的。上午展示完后,下午一点左右就开始进行答辩,按照第一天的抽签顺序,每组答辩有6分钟时间,4分钟问题提问。我们组答辩很顺利。第二天过后就没啥事了,就等着出成绩和top10竞演。

  • 关于top10
    top10竞演,我从头看到尾,我的感受就是他们的实验室第一有传承,每个作品都是4、5年的传承,好几代的样机,第二有钱,受很多项目的支持。再就是他们的作品都是和医疗,通信,电网相关,切实落实到人的生活中,不是提升人们体验的作品(例如我们组做机器人的,没有上去的)而是增加社会保障的作品。也可能这届是这样子吧。

  • 第三部分:关于这个比赛的一些感受

其实这里写了很多list item,但是都删掉了,很多事情自己知道就行了,自己选择的跪着也要过去。

你可能感兴趣的:(ros)