【信息科技案例分享】
机器人也会社恐?
利用算法模拟社恐行为
导语
“社恐”是近年来网络流行新词,它是“社交恐惧”的缩写,又称“社交焦虑”。简单来说,患有“社恐”的人,处在社交的场合中会感到紧张不适。随着网络的普及,更多年轻人热衷于线上交流,对线下社交感到陌生,从而促使社会焦虑愈发普遍。
可如果把这种“人”具备的特性放到“机器人”的身上会产生什么效果呢?今天我们用未来板Lite和TOF模块搭建一个社恐机器人来看看效果。
材料准备
未来板 Lite*1
方糖-激光测距模块*1
ph2.0红色9g电机*2
ph2.0灰色9g舵机*2
积木若干
编程软件使用
Kittenblock1.89
功能介绍
①TOF模块没有检测到人时机器人检测周围情况
②有人靠近时机器人会后退并做出社恐表情,社恐太多次会进入“社死”状态。
③如果社交距离合适,机器人会靠近你
前期准备
先导入6张128*160的图片到未来板Lite内部,分别表示机器人开机、社恐和靠近你时的表情。
然后是接线图,注意这里的电机和舵机都是2pin接口的,激光测距模块接在哪个I2C接口都一样。建议先往下看,拼完积木再进行接线。
积木搭建
1.底部组装
准备如下积木和材料:
用一个黑色摩擦销连接电机,注意电机的摆放方向。
由于电机的十字轴比较短,用四个六孔滑轮分别连接两个轮子增加接触距离。
使用乐高积木完成电机装饰,让电机与轮子的滑轮部分连接。
2.手部组装
准备如下积木和模块。
组装舵机和激光测距模块部分。
手部组装。
3.万向轮组装
准备如下积木。
组装连接舵机和万向轮的部分。
把这部分连接到之前做好的舵机上。
组装连接舵机和未来板Lite的部分,蓝色插梢将连接未来板Lite,这里需要注意最后一副图的细节。
连接万向轮。
完成与未来板Lite的连接,注意箭头所指。
完成后的效果如图。
程序编写
1.初始化
程序初始化时,显示对应的图片,并复位舵机连接的手部位置。由于两个舵机是对称安装,所以角度也是对称的,为了同步两个舵机的角度,其中一个舵机需要使用【映射】积木来调整位置。
由于轮子较宽,且手部积木与舵机可以分离旋转所以可以用此程序复位手部角度。
2.前进、后退
即使程序里配给电机的速度相同,但是每个红色9g电机所呈现的速度也是有可能不同的。

为了弥补这个误差,需要在程序里手动调节一下。(笔者这里两个电机的误差大概有0.2左右,每个人的误差不同,需要自己测一下)此外,由于电机也是对称安装,所以想要两个电机同向行驶就必须一个正数一个负数。这里先写出在检测距离合适时的前进程序,前进时会显示开心的图片且舵机会控制积木“摆手”。
后退的程序也类似,不过机器人是左右摇摆的方式进行后退,每次后退时只有一个轮子在转动。
3.距离判断
社恐机器人是利用激光测距模块来检测是否有人靠近的。如果有人靠的太近就会触发【后退】的程序;如果距离合适,则触发【前进】的程序。如果靠近的次数太多,则会触发【社死程序】。
4.社死状态与程序复位
如果社恐的次数=3,则电机停止,显示最高等级的社恐图片,直到按下M键时才可以让程序初始化。
5.主程序
在平常状态下,社恐机器人会原地左右转动,时刻观察是否有其他人靠近。转动的时间随系统时间而定,每次向一侧转动的时间为1.5s。开机时或触发距离判断程序时,第一次转向另一侧的时间为1.5s的一半,即0.75s,转到另一侧后才恢复为1.5s。
当检测到有人靠近时效果大概是这样的(部分展示):
程序图片,大小为128*160:
【注意事项】
①由于未来板Lite连接了两个电机和两个舵机,运行程序时需保持三格及以上的电量。
②电机和舵机的接口为ph2.0接口。
③注意不要让舵机缠绕到各类模块的线,以免舵机旋转时损坏线材。
功能演示


