论文部分内容阅读
在国家大力提倡“大众创业,万众创新”的环境下,创客运动犹如雨后春笋般涌现,笔者所在学校也创建了创客社团,小创客们正以初生牛犊的探索精神为学校的多元发展注入更多新鲜的活力。下面,笔者以小创客们制作的智能龙舟为例,分享他们的探索创作过程。
● 案例背景
2019年5月,学校创客社团的小创客们受邀组队参加一个创客活动,活动要求围绕以下主题进行人工智能作品创作。
作品主题:十九大报告中提到,要“坚定文化自信,推动社会主义文化繁荣兴盛”,“深入挖掘中华优秀传统文化蕴含的思想观念、人文精神、道德规范,结合时代要求继承创新,让中华文化展现出永久魅力和时代风采”。民间艺术是中华优秀传统文化的重要体现,继承和发扬民间艺术是我们的历史使命。你的家乡有哪些民间艺术?它背后的文化是什么?在人工智能飞速发展的今天,想一想如何结合人工智能让家乡的民间艺术更具有时代的特征,从而被更多人了解,让其更有生命力地传承下去。
● 初步设想
在接到活动的通知后,学生们开始自行组队并提出自己的设想,结合学生现有的技术水平、各种可利用的资源和可行性分析,经过筛选,最终确定了智能龙舟创作方向。端午节是我国的传统节日,在这一传统节日里很多地方都有赛龙舟的习俗,传统意义上的龙舟都是通过人力进行驱动的,智能龙舟的设想是在保留传统龙舟外形的基础上进行人工智能的升级改造,使其更加智能和更具时代气息,与本次活动的主题要求也极为匹配。
经过研究讨论,学生提出创作的智能龙舟作品应具有以下功能:①通过声音指令控制船桨的划行快慢程度;②自动检测行进的前方是否有障碍物,保障船的安全;③能自行检测船身的震动,并反馈信息,确保船的平稳行驶;④给龙舟增加声控动力助推器,使龙舟在赛道上更加如鱼得水;⑤语音交互介绍播报。
● 项目分析
要实现以上的创作设想,必须有相关的硬件和软件支持。硬件部分主要包括龙舟的船身和零部件,还有具有语音识别功能的主控板和各种探测传感器等。其中,龙舟的船身和零部件没有现成的模型可以使用,只能根据需求来制作,考虑到学校可以供学生们使用的各种加工器械有限,于是决定选择目前较为流行的3D打印技术来完成龙舟船体的制作。笔者所在学校在建设创客实验室时购置了多台3D打印机,这次的龙舟船体制作正好可以利用3D打印机这一资源。
软件则需要能具备语音识别的程序编写平台。经过对比和测试,这次智能龙舟案例的创作选择了“创造栗”,“创造栗”是一款针对中小学人工智能科普教育解决方案的产品,包含有人工智能开源硬件和人工智能编程软件平台,可实现人工智能的语音识别、图形图像识别和人机交互等功能,具有图形化的编程界面,这非常有利于低年级学生的操作使用。
● 实践创作
1.利用3D one软件进行船体的设计
(1)船身主体
在进行智能龙舟的船体设计时,需保留传统的龙舟外形,同时也需在设计上预留出足够的空间来装载主控板和传感器等元器件,还需要注意在船身的合适位置预留开口,用作带动轴等零部件的安装。在船身主体的设计上,先是利用3D one软件中的草图绘制功能,根据尺寸大小按比例绘制出船身的轮廓,再利用特征造型模块中的拉伸功能将船身的平面轮廓变为立体图形,然后利用组合编辑命令中的减运算,将船体中不需要保留的部分进行掏空处理,经过多次的掏空处理和调整后,龙舟的船体大致可以达到预期的效果,下一步的工作就是利用3D打印机进行打印,输出实体模型。
(2)船桨
船桨需足够轻便,能被转轴带动,方便安装和固定,基于以上考虑,在3D one软件设计时,船桨采用六面体和圆柱体组合而成。为了能与转轴更好地连接,还在船桨的中间部位掏空一个三角形状的缺口,同时,将带动轴的两端也设计成大小相当的三角形状,使其与船桨能完美连接,有效解决了后续的安装和固定的问题。
(3)齿轮
在3D one软件中,先用圆柱体绘制出尺寸大小合适的圆盘,再通过草图绘制拉伸的方法制作出其中一个齿轮的凸角,通过基本编辑中的圆形阵列功能绘制出48个相同的凸角,再整合成一个完整的48齿的齿轮,最后用减运算的方法将齿轮的中心位置预留出用于与转轴衔接的开口。
模型制作好后,要用3D打印机配套的切片软件对三維模型的数据进行处理,因为3D打印机只能读取和打印其配套的切片软件打开的STL文件,因此学生将以上设计好的.Z1文件分别转化为STL格式文件,再用3D打印机配套的切片软件进行实物打印输出。
2.人工智能程序编写
这次智能龙舟的程序是利用“创造栗”产品所配套的在线编程软件进行编写的,需要使用到的核心功能是人工智能模块中的语音识别。
(1)搭建具有语音识别的程序
设置程序初始化,从人工智能模块库中依次调出人工智能初始化和所需使用的语言,目前该编程平台支持中文和英文两种语言,为了让安装在龙舟上的主控板能学习和识别某项语音指令,需添加对应的语句和识别号,按照对应的识别号1~8,分别输入“qi dong”“kuai dian”“fei su”“guan bi”等语音指令。接着添加“创建声学模型”“创建发音字典”“创建语言模型”和“创建解码器”四个模块的程序,“创建声学模型”的作用是协助解码器分析声波特征,将声音识别为连续的音素;“创建发音字典”模块能将音素生成最大概率的文字;“创建语言模型”则是将最大概率的文字生成词组或句子;“创建解码器”这个模块是语音识别的引擎,作用是将声波解码成语句,但需要汇入声学模型、发音字典和语言模型。最后加上设置灵敏度大小、扬声器音量和麦克风音量三个模块语句,这三个模块的取值范围均为0~255。通过实际测试发现,设置灵敏度的值越高,主控板对声音的反应就越灵敏,但这样极容易受到周围环境的影响,会影响到具体指令的接收,为了避免这种情况的发生,将本次程序的灵敏度的值设置为100。 以上语音识别的初始化程序基本搭建完成,但为了能更清楚地知道语音初始化程序执行的情况,学生还在初始化的程序后面加入了语音播放文本的语句:“您好!欢迎来到中国智能龙舟邀请赛现场,精彩比赛马上开始。”这样,初始化是否完成了,就会心中有数。
(2)搭建语音指令的执行程序
通过if语句与“侦测到声音”模块的组合,检测是否有人说话的声音,执行“声波分帧并提取特征向量”和“解码器{声学模型、发音字典、语言模型}”模块,目的是把侦测到的声波进行分帧处理,然后提取特征向量,再把特征向量导入到解码器中,通过声学模型、发音字典和语言模型进行解码,比对出与发音最为接近的字音。
在初始化程序中定义一个名为“result”的整数变量,并在语音执行程序中将“读取识别号”赋值为“result”,在其后加入switch语句将“result”的值与case中的数值进行比对,符合即可执行相应部分的程序。根据智能龙舟的最初设想,将执行的程序编写如下:
①当说出“qi dong”时,执行播报语音“说”这一模块,播报文本“智能龙舟系统已准备就绪”,同时增加“写入数字管脚2状态高”,使船身的LED灯同时亮起来。
②当说出“jie shao long zhou”时,通过“说”模块播报智能龙舟的介绍语音,需要提前在“说”程序中输入相关的介绍文本。
③当说出“kai shi bi sai”时,需要让船桨按一定的节奏摆动起来,这一动作需要借助舵机进行旋转角度来带动。为了使整体程序更加简化和有条理,在处理舵机的程序上,专门针对舵机的摆动角度创建了一个函数,并将这个函数命名为“duo ji”,在“duo ji”里分别加入“转动舵机管脚7角度为0”和“转动舵机管脚7角度为20”的程序模块,在这两个模块之间增加延时模块控制舵机转角停留的时间,从而达到控制舵机带动船桨摆动快慢的目的。最后,只需将“duo ji”这个函数的简化模块加到执行程序里即可,极大地简化了程序的编写篇幅。
④当说出“kuai dian”时,需要让船桨划动的速度加快,这一功能就可以参照前面“duo ji”中的程序,只需将“duo ji”函数中的延时模块时间间隔缩短即可,在这里延时设置为300毫秒。
⑤当说出“fei su”时,需要将安装在船身尾部位置的助推器打开,学生选择了减速电机作为船的助推器,在程序编写时,加入了“说”模块,让主控板在接收到指令后,播放语音“好的,明白,马上开启飞速模式”,同时增加“写入脉冲宽度调制管脚~3赋值为255”,让输出的电频信号为最大值,使电机的转速达到最快。同理,如果想要关闭助推器,说出“guan bi”时,在对应的执行程序加上“写入脉冲宽度调制管脚~3赋值为0”即可使电机停止转动,也就是关闭了助推器。
⑥当检测到船的前方有障碍物时,需要发出提示声,程序中需用到“如果…执行…”的模块,在如果后加入条件判断模块“红外线动作感测器管脚5触发条件有动作”,执行“说:注意,注意,前方有障碍物”模块。
⑦当船身下沉幅度过大,说明此时船的承载重量较大,需发出提示声,通过与滑杆配件的结合,在程序中继续使用“如果…执行…”模块,如果后面加入“读取模拟管脚A0>500”语句,执行后面加入“说:注意!注意!船载超重!”。
⑧当风浪过大,影响船身颠簸震动时,需发出提示声,为了解决这一问题,学生用倾斜开关来处理,在程序上使用“如果 ‘读取数字管脚11=真’,执行 说‘注意!注意!当前风浪较大船体容易震动,小心行驶’”。
3.整体拼装及测试
龙舟的船体、零部件和程序准备好之后,就可以进行作品的整体拼装和测试了。学生先将各元器件逐一固定在船体相应的位置上,再参考编写的程序脚本,用杜邦线分别将各元器件与主控板上的数字接口、模拟接口连接起来。由于这次智能龙舟作品所用到的元器件比较多,而创造栗主控板上可供使用的接口明显不够,所以借助了面包板的辦法来解决接线的问题。元器件安装好后,再将3D打印机打印出来的齿轮、带动轴、船桨逐个安装到预留的位置上。
经过学生的努力,智能龙舟的作品制作完成,通过后期的测试,基本达到了预期目标。这次智能龙舟的制作,是笔者所在学校小创客们一次成功的创作实践,今后会有越来越多的新技术、新产品出现,希望小创客们能紧跟时代的步伐,积极进取、勇于探索,用自己的聪明才智带来更多的创意和惊喜。
● 案例背景
2019年5月,学校创客社团的小创客们受邀组队参加一个创客活动,活动要求围绕以下主题进行人工智能作品创作。
作品主题:十九大报告中提到,要“坚定文化自信,推动社会主义文化繁荣兴盛”,“深入挖掘中华优秀传统文化蕴含的思想观念、人文精神、道德规范,结合时代要求继承创新,让中华文化展现出永久魅力和时代风采”。民间艺术是中华优秀传统文化的重要体现,继承和发扬民间艺术是我们的历史使命。你的家乡有哪些民间艺术?它背后的文化是什么?在人工智能飞速发展的今天,想一想如何结合人工智能让家乡的民间艺术更具有时代的特征,从而被更多人了解,让其更有生命力地传承下去。
● 初步设想
在接到活动的通知后,学生们开始自行组队并提出自己的设想,结合学生现有的技术水平、各种可利用的资源和可行性分析,经过筛选,最终确定了智能龙舟创作方向。端午节是我国的传统节日,在这一传统节日里很多地方都有赛龙舟的习俗,传统意义上的龙舟都是通过人力进行驱动的,智能龙舟的设想是在保留传统龙舟外形的基础上进行人工智能的升级改造,使其更加智能和更具时代气息,与本次活动的主题要求也极为匹配。
经过研究讨论,学生提出创作的智能龙舟作品应具有以下功能:①通过声音指令控制船桨的划行快慢程度;②自动检测行进的前方是否有障碍物,保障船的安全;③能自行检测船身的震动,并反馈信息,确保船的平稳行驶;④给龙舟增加声控动力助推器,使龙舟在赛道上更加如鱼得水;⑤语音交互介绍播报。
● 项目分析
要实现以上的创作设想,必须有相关的硬件和软件支持。硬件部分主要包括龙舟的船身和零部件,还有具有语音识别功能的主控板和各种探测传感器等。其中,龙舟的船身和零部件没有现成的模型可以使用,只能根据需求来制作,考虑到学校可以供学生们使用的各种加工器械有限,于是决定选择目前较为流行的3D打印技术来完成龙舟船体的制作。笔者所在学校在建设创客实验室时购置了多台3D打印机,这次的龙舟船体制作正好可以利用3D打印机这一资源。
软件则需要能具备语音识别的程序编写平台。经过对比和测试,这次智能龙舟案例的创作选择了“创造栗”,“创造栗”是一款针对中小学人工智能科普教育解决方案的产品,包含有人工智能开源硬件和人工智能编程软件平台,可实现人工智能的语音识别、图形图像识别和人机交互等功能,具有图形化的编程界面,这非常有利于低年级学生的操作使用。
● 实践创作
1.利用3D one软件进行船体的设计
(1)船身主体
在进行智能龙舟的船体设计时,需保留传统的龙舟外形,同时也需在设计上预留出足够的空间来装载主控板和传感器等元器件,还需要注意在船身的合适位置预留开口,用作带动轴等零部件的安装。在船身主体的设计上,先是利用3D one软件中的草图绘制功能,根据尺寸大小按比例绘制出船身的轮廓,再利用特征造型模块中的拉伸功能将船身的平面轮廓变为立体图形,然后利用组合编辑命令中的减运算,将船体中不需要保留的部分进行掏空处理,经过多次的掏空处理和调整后,龙舟的船体大致可以达到预期的效果,下一步的工作就是利用3D打印机进行打印,输出实体模型。
(2)船桨
船桨需足够轻便,能被转轴带动,方便安装和固定,基于以上考虑,在3D one软件设计时,船桨采用六面体和圆柱体组合而成。为了能与转轴更好地连接,还在船桨的中间部位掏空一个三角形状的缺口,同时,将带动轴的两端也设计成大小相当的三角形状,使其与船桨能完美连接,有效解决了后续的安装和固定的问题。
(3)齿轮
在3D one软件中,先用圆柱体绘制出尺寸大小合适的圆盘,再通过草图绘制拉伸的方法制作出其中一个齿轮的凸角,通过基本编辑中的圆形阵列功能绘制出48个相同的凸角,再整合成一个完整的48齿的齿轮,最后用减运算的方法将齿轮的中心位置预留出用于与转轴衔接的开口。
模型制作好后,要用3D打印机配套的切片软件对三維模型的数据进行处理,因为3D打印机只能读取和打印其配套的切片软件打开的STL文件,因此学生将以上设计好的.Z1文件分别转化为STL格式文件,再用3D打印机配套的切片软件进行实物打印输出。
2.人工智能程序编写
这次智能龙舟的程序是利用“创造栗”产品所配套的在线编程软件进行编写的,需要使用到的核心功能是人工智能模块中的语音识别。
(1)搭建具有语音识别的程序
设置程序初始化,从人工智能模块库中依次调出人工智能初始化和所需使用的语言,目前该编程平台支持中文和英文两种语言,为了让安装在龙舟上的主控板能学习和识别某项语音指令,需添加对应的语句和识别号,按照对应的识别号1~8,分别输入“qi dong”“kuai dian”“fei su”“guan bi”等语音指令。接着添加“创建声学模型”“创建发音字典”“创建语言模型”和“创建解码器”四个模块的程序,“创建声学模型”的作用是协助解码器分析声波特征,将声音识别为连续的音素;“创建发音字典”模块能将音素生成最大概率的文字;“创建语言模型”则是将最大概率的文字生成词组或句子;“创建解码器”这个模块是语音识别的引擎,作用是将声波解码成语句,但需要汇入声学模型、发音字典和语言模型。最后加上设置灵敏度大小、扬声器音量和麦克风音量三个模块语句,这三个模块的取值范围均为0~255。通过实际测试发现,设置灵敏度的值越高,主控板对声音的反应就越灵敏,但这样极容易受到周围环境的影响,会影响到具体指令的接收,为了避免这种情况的发生,将本次程序的灵敏度的值设置为100。 以上语音识别的初始化程序基本搭建完成,但为了能更清楚地知道语音初始化程序执行的情况,学生还在初始化的程序后面加入了语音播放文本的语句:“您好!欢迎来到中国智能龙舟邀请赛现场,精彩比赛马上开始。”这样,初始化是否完成了,就会心中有数。
(2)搭建语音指令的执行程序
通过if语句与“侦测到声音”模块的组合,检测是否有人说话的声音,执行“声波分帧并提取特征向量”和“解码器{声学模型、发音字典、语言模型}”模块,目的是把侦测到的声波进行分帧处理,然后提取特征向量,再把特征向量导入到解码器中,通过声学模型、发音字典和语言模型进行解码,比对出与发音最为接近的字音。
在初始化程序中定义一个名为“result”的整数变量,并在语音执行程序中将“读取识别号”赋值为“result”,在其后加入switch语句将“result”的值与case中的数值进行比对,符合即可执行相应部分的程序。根据智能龙舟的最初设想,将执行的程序编写如下:
①当说出“qi dong”时,执行播报语音“说”这一模块,播报文本“智能龙舟系统已准备就绪”,同时增加“写入数字管脚2状态高”,使船身的LED灯同时亮起来。
②当说出“jie shao long zhou”时,通过“说”模块播报智能龙舟的介绍语音,需要提前在“说”程序中输入相关的介绍文本。
③当说出“kai shi bi sai”时,需要让船桨按一定的节奏摆动起来,这一动作需要借助舵机进行旋转角度来带动。为了使整体程序更加简化和有条理,在处理舵机的程序上,专门针对舵机的摆动角度创建了一个函数,并将这个函数命名为“duo ji”,在“duo ji”里分别加入“转动舵机管脚7角度为0”和“转动舵机管脚7角度为20”的程序模块,在这两个模块之间增加延时模块控制舵机转角停留的时间,从而达到控制舵机带动船桨摆动快慢的目的。最后,只需将“duo ji”这个函数的简化模块加到执行程序里即可,极大地简化了程序的编写篇幅。
④当说出“kuai dian”时,需要让船桨划动的速度加快,这一功能就可以参照前面“duo ji”中的程序,只需将“duo ji”函数中的延时模块时间间隔缩短即可,在这里延时设置为300毫秒。
⑤当说出“fei su”时,需要将安装在船身尾部位置的助推器打开,学生选择了减速电机作为船的助推器,在程序编写时,加入了“说”模块,让主控板在接收到指令后,播放语音“好的,明白,马上开启飞速模式”,同时增加“写入脉冲宽度调制管脚~3赋值为255”,让输出的电频信号为最大值,使电机的转速达到最快。同理,如果想要关闭助推器,说出“guan bi”时,在对应的执行程序加上“写入脉冲宽度调制管脚~3赋值为0”即可使电机停止转动,也就是关闭了助推器。
⑥当检测到船的前方有障碍物时,需要发出提示声,程序中需用到“如果…执行…”的模块,在如果后加入条件判断模块“红外线动作感测器管脚5触发条件有动作”,执行“说:注意,注意,前方有障碍物”模块。
⑦当船身下沉幅度过大,说明此时船的承载重量较大,需发出提示声,通过与滑杆配件的结合,在程序中继续使用“如果…执行…”模块,如果后面加入“读取模拟管脚A0>500”语句,执行后面加入“说:注意!注意!船载超重!”。
⑧当风浪过大,影响船身颠簸震动时,需发出提示声,为了解决这一问题,学生用倾斜开关来处理,在程序上使用“如果 ‘读取数字管脚11=真’,执行 说‘注意!注意!当前风浪较大船体容易震动,小心行驶’”。
3.整体拼装及测试
龙舟的船体、零部件和程序准备好之后,就可以进行作品的整体拼装和测试了。学生先将各元器件逐一固定在船体相应的位置上,再参考编写的程序脚本,用杜邦线分别将各元器件与主控板上的数字接口、模拟接口连接起来。由于这次智能龙舟作品所用到的元器件比较多,而创造栗主控板上可供使用的接口明显不够,所以借助了面包板的辦法来解决接线的问题。元器件安装好后,再将3D打印机打印出来的齿轮、带动轴、船桨逐个安装到预留的位置上。
经过学生的努力,智能龙舟的作品制作完成,通过后期的测试,基本达到了预期目标。这次智能龙舟的制作,是笔者所在学校小创客们一次成功的创作实践,今后会有越来越多的新技术、新产品出现,希望小创客们能紧跟时代的步伐,积极进取、勇于探索,用自己的聪明才智带来更多的创意和惊喜。