项目摘要
一、项目背景
二、团队介绍
三、应用场景
四、产品功能
五、项目创新点
1、基于视觉表情的情绪识别分析系统
2、高精度刚柔化的仿人头机构
3、真人化情感反应交互系统
4、完备的康复评估人机交互页面
项目摘要
自闭症儿童基数大,国家重视。我国自闭症总人口已达1000万,而0到14岁自闭症儿童达200万人,并且这个数据在逐年增长。在2014年发布的《特殊教育提升计划》中,国家鼓励在现有特殊学校中设立自闭症教育康复部。目前对于自闭症的治疗几乎没有很有效的药物治疗方式,大多数的治疗水平都在食疗层次。治疗自闭症儿童最好的方式是行为干预疗法。例如美国国家自闭症中心的《National Standards Project》以及中国科学院大学的《自闭症的病因和治疗方式研究进展》等科学研究,都提出本方法。因此做一款能够与自闭症儿童互动、帮助其恢复社会能力的机器人前景广阔,且迫在眉睫。
表情机器人是近年来机器人研究领域兴起的一个新的研究热点,越来越多的研究机构及科学组织开展了对于仿人面部表情机器人的研究。研究表明:在人类情感交流中,语言占7%,语调占38%,而面部表情占55%,由此可见,在人类的情感交流中表情、语调和语言占主导地位。市面上的大部分机器人例如陪伴机器人等都不是专门针对于自闭症儿童的产品,产品不具有专一性。传统的机器人在识别自闭症儿童的情绪时准确度不高,从而出现错误的情感判断,例如可能将自闭症儿童高兴的情绪识别成悲伤的情绪。专门针对自闭症儿童的机器人大多是对自闭症儿童的情绪识别,没有互动的功能。针对上述问题我们提出了自闭症儿童视觉表情分析的交互式表情机器人系统,帮助自闭症儿童更好的康复。
一、项目背景
自闭症的发生的概率大约为1/1000,也就是说每1000人中,至少有一个是自闭症患者,且男性发病率为女性发病率的四倍。目前全球约有6700万自闭症患者,而我国自闭症总人口达到1000万人,其中包括200万的自闭症儿童,并且这个数据在逐年增长,2007年联合国大会中将每年的4月2号定为“世界自闭症关注日”。但目前对于自闭症的治疗几乎没有很有效的药物治疗方式,大多数的治疗水平都在食疗层次,因此做一款能够与自闭症儿童互动、帮助其恢复社会能力的机器人前景广阔,且迫在眉睫。
表情机器人是近年来机器人研究领域兴起的一个新的研究热点,越来越多的研究机构及科学组织开展了对于仿人面部表情机器人的研究。研究表明:在人类情感交流中,语言占7%,语调占38%,而面部表情占55%,由此可见,在人类的情感交流中表情、语调和语言占主导地位。如今市面上的大部分机器人例如陪伴机器人等都不是专门针对于自闭症儿童的产品,产品不具有专一性。传统的机器人在识别自闭症儿童的情绪时准确度不高,从而出现错误的情感判断,例如可能将自闭症儿童高兴的情绪识别成悲伤的情绪,专门针对自闭症儿童的机器人大多是对自闭症儿童的情绪识别,没有互动的功能。
针对上述问题我们结合人工智能、表情机器人技术和心理学知识为自闭症儿童设计了一款适合他们的康复方案,该方案包括表情识别系统、情感交互系统和表情机器人三部分。
二、团队介绍
ASD自闭症辅助机器人项目以学生为主导开发,指导教师协助完成。
我们的团队隶属于郑州轻工业大学梅科尔工作室,由不同学院的学生组成,分别负责不同模块的技术研发。
三、应用场景
经研究发现自闭症儿童家长集中在25到40岁,家长心智还不够成熟,他们大多数是无业或普通上班族,家庭负担沉重,会疏忽对孩子的关爱,可见自闭症儿童多出于压力较大的家庭。而自闭症儿童年龄多为2到6岁,属于性格和心智的高速发展期,因此我们就需要一款机器人来对孩子进行正确的引导。
ASD自闭症辅助机器人是一款通过识别分析自闭症儿童面部表情并进行表情、语言互动的交互式辅助康复机器人,适用范围主要是患有自闭症及携带自闭特质的儿童。通过与自闭症儿童情感上的交流,达到缓解自闭症状的目的。
四、产品功能
ASD自闭症辅助机器人是一款通过对自闭症儿童面部表情情绪识别分析并进行表情、语言互动的交互式服务机器人。该机器人通过实时捕捉自闭症儿童的面部信息,运用图像处理技术和表情识别技术对自闭症儿童的心理情绪变化进行实时分析,结合人工智能技术的语音识别、表情识别技术通过微型电脑实现对表情机器人的控制,让表情机器人做出相应的表情、语言的反馈,实现表情机器人与自闭症儿童情感上的交流,达到帮助自闭症儿童回归到正常生活的目的。本系统由基于视觉表情的情绪识别分析系统、仿人头设计、情感反应交互系统共三大部分组成。自闭症儿童视觉表情分析的交互式表情机器人采用刚性材料和柔性材料相结合,结构灵活,具备抬头、转头、眨眼、皱眉、张嘴、面部肌肉移动等功能,能够与自闭症儿童进行互动。
本团队在自闭症儿童视觉表情分析的交互式表情机器人躯体上搭载了摄像头,并且自主研发了自闭症儿童人机交互平台,能够得到患者的情感状态,生成专属康复评估报告。
产品功能描述:
1.机器人拍照并通过面部识别系统采用摄像头获得自闭症儿童的面部表情图片,同时通过眼球位置定位识别算法判断自闭症儿童的瞳孔位置来确定儿童的观看方向和位置,进而获得自闭症儿童的面部感情状态和注意力和关注点,并与正常儿童的注意力与关注点做对比获得初步判断,从而进入下一步的交互系统中。
2.实现与自闭症儿童进行互动。包含语音互动和表情互动两大方面。本机器人使用深度学习算法,该算法能不断地学习和训练,最终得到一套适合自闭症儿童的引导互动方案,从而帮助自闭症儿童逐渐恢复其社会行为能力。
3.实现仿人头机构的运动。交互式情感机器人采用刚性材料和柔性材料相结合,仿照人的肌肉和骨骼,与人类头部相似。眼部机构的俯仰范围为-32°到+32°,环视范围为-28°到+28°、眉毛机构可以实现上下旋转20°,上下平移8mm的自由度、下颚可以实现两个自由度的张合,既有旋转的自由度,又有前后的自由度,且旋转角度在0-18.5°之间,平移角度在-15mm-0之间、颈部可以实现左右70°、旋转120°的自由度。
4.实现微表情的控制。以SMA智能材料作为驱动器,利用其形状记忆特性和相变超弹性,解决了机器人微表情的不同变化的问题,利用模数转换器模拟控制加热电流,以DSP电路板为设计核心,并且运用模数转换器ADC模块采集位置信号,在PWM模块输出控制信号,对驱动电路调整加热SMA丝的时间,理论计算实现闭环控制。同时利用人脸脱模技术,复刻人脸五官细节,贴近人体面部形态,使机器人更加亲切、逼真。
针对交互功能,下面是部分代码:
# include\<Wire.h\>
\# include\<Adafruit_PWMServoDriver.h\>
char val
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver()
\# define SERVOMIN 150
\# define SERVOMAX 600
void setServoPulse(uint8_t n, double pulse)
{
double pulselength
pulselength = 1000000
pulselength /= 60
Serial.print(pulselength)
Serial.println(" us per period")
pulselength /= 4096
Serial.print(pulselength)
Serial.println(" us per bit")
pulse \*= 1000
pulse /= pulselength
Serial.println(pulse)
pwm.setPWM(n, 0, pulse)
}
void setup()
{
Serial.begin(9600)
Serial.println("请根据1\\2\\3\\4\\5来选择表情运动情况")
Serial.println("1:高兴 2:自然 3:生气 4:伤心 5:惊讶")
pwm.begin()
pwm.setPWMFreq(60)
}
void happy_()
{
pwm.setPWM(1, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(2, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(3, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(4, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(5, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(6, 45, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(7, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(8, 120, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(9, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(10, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(11, 90, pulseIn)
delayMicroseconds(1000)
}
void calm_()
{
pwm.setPWM(1, 60, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(2, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(3, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(4, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(5, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(6, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(7, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(8, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(9, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(10, 90, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(11, 90, pulseIn)
delayMicroseconds(1000)
}
void angry_()
{
pwm.setPWM(1, 15, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(2, 50, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(3, 130, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(4, 20, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(5, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(6, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(7, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(8, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(9, 180, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(10, 180, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(11, 90, pulseIn)
delayMicroseconds(1000)
}
void sad_()
{
pwm.setPWM(1, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(2, 130, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(3, 50, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(4, 20, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(5, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(6, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(7, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(8, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(9, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(10, 180, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(11, 180, pulseIn)
delayMicroseconds(1000)
}
void surprise_()
{
pwm.setPWM(1, 30, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(2, 130, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(3, 50, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(4, -20, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(5, -20, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(6, 60, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(7, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(8, 180, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(9, 180, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(10, 0, pulseIn)
delayMicroseconds(1000)
pwm.setPWM(11, 120, pulseIn)
delayMicroseconds(1000)
}
void loop()
{
val = Serial.read()
if(val == '1'){
happy_()
}
if(val == '2'){
calm_()
}
if(val == '3'){
angry_()
}
if(val == '4'){
sad_()
}
if(val == '5'){
surprise_()
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
- 174.
- 175.
- 176.
- 177.
- 178.
- 179.
- 180.
- 181.
- 182.
- 183.
- 184.
- 185.
- 186.
- 187.
- 188.
- 189.
- 190.
- 191.
- 192.
- 193.
- 194.
- 195.
- 196.
- 197.
- 198.
- 199.
- 200.
- 201.
- 202.
- 203.
- 204.
- 205.
- 206.
- 207.
- 208.
- 209.
- 210.
- 211.
- 212.
- 213.
- 214.
- 215.
- 216.
- 217.
- 218.
- 219.
- 220.
- 221.
- 222.
- 223.
- 224.
- 225.
- 226.
- 227.
- 228.
- 229.
- 230.
- 231.
- 232.
- 233.
- 234.
- 235.
- 236.
- 237.
- 238.
- 239.
- 240.
- 241.
- 242.
- 243.
- 244.
- 245.
- 246.
- 247.
- 248.
- 249.
- 250.
- 251.
- 252.
- 253.
- 254.
- 255.
- 256.
- 257.
- 258.
- 259.
- 260.
- 261.
- 262.
- 263.
- 264.
- 265.
- 266.
- 267.
- 268.
- 269.
- 270.
- 271.
- 272.
- 273.
- 274.
- 275.
- 276.
- 277.
- 278.
- 279.
- 280.
- 281.
- 282.
- 283.
- 284.
- 285.
- 286.
- 287.
- 288.
- 289.
- 290.
- 291.
- 292.
- 293.
- 294.
- 295.
- 296.
- 297.
- 298.
- 299.
- 300.
- 301.
- 302.
- 303.
- 304.
- 305.
- 306.
- 307.
- 308.
- 309.
- 310.
- 311.
- 312.
- 313.
- 314.
- 315.
- 316.
- 317.
- 318.
- 319.
- 320.
- 321.
- 322.
- 323.
- 324.
- 325.
- 326.
- 327.
- 328.
- 329.
- 330.
- 331.
- 332.
- 333.
- 334.
- 335.
- 336.
- 337.
- 338.
- 339.
- 340.
- 341.
- 342.
- 343.
- 344.
- 345.
- 346.
- 347.
- 348.
- 349.
- 350.
- 351.
- 352.
- 353.
- 354.
- 355.
- 356.
- 357.
- 358.
- 359.
- 360.
- 361.
- 362.
- 363.
- 364.
- 365.
- 366.
- 367.
- 368.
- 369.
- 370.
- 371.
- 372.
- 373.
- 374.
- 375.
- 376.
- 377.
- 378.
- 379.
- 380.
- 381.
- 382.
- 383.
- 384.
- 385.
- 386.
- 387.
- 388.
- 389.
- 390.
- 391.
- 392.
- 393.
- 394.
- 395.
- 396.
- 397.
- 398.
- 399.
- 400.
- 401.
- 402.
- 403.
- 404.
- 405.
- 406.
- 407.
- 408.
- 409.
- 410.
- 411.
- 412.
- 413.
- 414.
- 415.
- 416.
- 417.
- 418.
- 419.
- 420.
- 421.
- 422.
- 423.


五、项目创新点
1、基于视觉表情的情绪识别分析系统
采用CNN卷积神经网络来进行基于视觉表情的情绪识别。情绪识别分析系统采用摄像头获得自闭症儿童的面部表情图片,结合眼球定位识别分析系统,进行合成和基于图像的眼睛凝视数据分析,合成扫视模式的生成模型来表示来自典型非ASD个体的基线扫描路径,并将其与真实扫描路径以及其他辅助数据相结合,作为深度学习分类器的输入,再通过OpenCv对图像进行预处理,将处理后的图像和一系列注视映射馈送到卷积或递归神经网络中,并与含有一万多张照片的数据集进行对照,综合得出目前自闭症儿童的情感状态,从而进入下一步的交互系统中。此外眼动仪会记录自闭症儿童的眼球运动和瞳孔扩张的变化,可通过从 USB 网络摄像头捕获视频,实时显示在屏幕上。
2、高精度刚柔化的仿人头机构
ASD自闭症辅助机器人采用刚性材料和柔性材料相结合,仿照人的肌肉和骨骼,与人类头部相似。眼部机构的俯仰范围为-32°到+32°,环视范围为-28°到+28°、眉毛机构可以实现上下旋转20°,上下平移8mm的自由度、下颚可以实现两个自由度的张合,既有旋转的自由度,又有前后的自由度,且旋转角度在0-18.5°之间,平移角度在-15mm-0之间、颈部可以实现左右70°、旋转120°的自由度。此外由基于形状记忆合金(SMA)的进行微表情控制。以SMA智能材料作为驱动器,利用其形状记忆特性和相变超弹性,解决了机器人微表情的不同变化,利用模数转换器模拟控制加热电流,以DSP电路板为设计核心,运用模数转换器ADC模块采集位置信号,在PWM模块输出控制信号,用驱动电路调整加热SMA丝的时间,理论计算实现闭环控制。同时利用人脸脱模技术,复刻人脸五官细节,贴近人体面部形态,使机器人更加亲切、逼真。
3、真人化情感反应交互系统
如今社会上专门针对自闭症儿童的机器人大多是对自闭症儿童的情绪识别,没有互动的功能。本机器人使用深度学习算法,该算法能不断地学习和训练,最终得到一套适合自闭症儿童的引导互动方案,从而帮助自闭症儿童逐渐恢复其社会行为能力。交互系统包含语音互动和表情互动两大方面。ASD自闭症辅助机器人通过情绪识别分析系统分析得到的自闭症儿童的情感状态判断此刻的语音与表情反应,由树莓派控制,便于和自闭症儿童进行交流,为自闭症儿童的康复训练提供更好的条件。
4、完备的康复评估人机交互页面
具有完备的康复评估人机交互页面,拥有专业的患者情绪状态分析以及专属的健康评估报告。另外可以为医生提供诊断治疗方案,同时我们会将患者的情况在患者允许的情况下存入我们的大数据库中,运用大数据分析技术减少异质情况的出现,提高人机交互的准确性。可以实现患者对自闭症知识的全面搜索。还有自闭症患者的交流社区,便于患者的沟通。

【本文正在参加物联网有奖征文活动】,活动链接:https://ost.51cto.com/posts/14758