🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
📑上期文章:『【Pepper机器人开发与应用】一、教你如何使用图形化开发软件高效开发pepper机器人(Pepper SDK for LabVIEW)』
🍻本文由virobotics(仪酷智能)原创🥳欢迎大家关注✌点赞👍收藏⭐留言📝订阅专栏
文章目录
- 🧩前言
- 一、传感器
- 1.1 NAOqi SDK for NI LabVIEW
- 1.2 更多传感器
- 二、视觉控制
- 2.1 摄像头图像采集范例
- 2.2 人脸与情感识别
- 三、语音控制
- 3.1 播放音阶
- 3.2 录音与回放
- 3.3 机器人说话
- 3.4 语音识别
- 四、运动控制
- 4.1 运动控制基础范例
- 4.2 角度编辑
- 4.3姿态控制
- 4.4 手臂控制
- 五、行为控制
- 六、智慧医疗与养老工具包
- 6.1 智能导诊
- 6.2 病房助手
- 6.3 心理疏导
- 6.4 体征检测
- 6.5 脑机接口
- 6.6 影像分析
- 工具包获取
- 🎯总结
🧩前言
Hello,大家好,我是你们的virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。
今天给大家介绍使用Pepper SDK for LabVIEW 实现Pepper机器人图形化开发以及再医疗服务机器人上的程序设计,我们在下载安装Pepper SDK for LabVIEW之后,可以分门别类的很看很多范例和内容,下面我将按模块为大家介绍各个内容并介绍机器人在医疗服务上的应用。
一、传感器
Pepper带有多种传感器,如触碰传感器、声纳传感器、激光传感器、红外传感器、保险杠传感器、陀螺仪传感器等。所有传感器均可通过LabVIEW软件进行数据的采集及控制,并结合LabVIEW中强大的信号处理函数对信号进行分析。
1.1 NAOqi SDK for NI LabVIEW
NAOqi SDK for NI LabVIEW,无缝支持Pepper机器人传感器应用程序开发,Pepper机器人集成了多种传感器,如:姿态陀螺仪、压力传感器、触碰传感器、超声波传感器、红外传感器、LED等。所有的传感器都有其相应的调用函数。用户使用LabVIEW即可轻松地获取这些数据,并借助强大的LabVIEW信号处理模块对各种类型的传感器数据进行分析,由于获取传感器数据需要输入指令,而机器人的传感器数量达100个,因此对于用户来说记住指令是非常麻烦的事。因此,工具包中同样利用了Express VI技术,用户可轻松获取所希望得到的传感器数据,配置完用户所需要的传感器后,软件会自动生成Express VI以及while循环,该VI可在while循环中反复调用。
程序由三部分的函数构成:利用Memory采集姿态数据、利用Motion采集关节角度数据。最后将所有数据捆绑在一起,输入至3D Express的Move Object.vi中,同步三维机器人模型的运动。
1.2 更多传感器
范例:Sensor.vi
路径:Sensor\Sensor.vi
作用:最基本的获取传感器数据的范例。用户只要根据说明书上的指令,即可获取自己所需要的机器人传感器上的数据。
除了上述的传感器外,其他传感器也可用MemoryProxy_getData.vi或MemoryProxy_getListData.vi读取。具体命令请参考Pepper机器人官方说明书。
亦可借助传感器的Express VI:PepperSensor,即可快速选择传感器型号进行数据采集,并自动生成代码。如图3.5所示。
图3.5 PepperSensor的软件面板,可选择任意一个或多个传感器进行采集
生成后的代码如图3.6所示
图3.6 PepperSensor生成的代码
二、视觉控制
Pepper机器人共有2个2D摄像头,1个3D摄像头,同时也提供了丰富的图像处理工具包,用户可以使用现成的工具包进行人脸识别、图像识别、红球识别、录像等,同时也可以将Pepper机器人摄像头所获视频数据实时传输到上位机,利用LabVIEW Vision模块进行更高级的视觉分析,像素最高可达1280*960。
此外,LabVIEW中也提供了丰富的视觉控制VI,如图4.2所示:
图4.2 函数选板中的视觉函数
用户可以利用这些VI去控制摄像头的图像采集、人脸识别、录像、红球识别,已经结合LabVIEW图像处理工具包实现更高级的图像处理。
2.1 摄像头图像采集范例
路径:Vision\Video Device.vi
作用:利用VideoDevice系列VI,将机器人摄像头的数据实时传至PC端口,并利用LabVIEW的图片控件显示获取的图像以及图像的数据。(包括颜色深度,长和宽,每个像素点的值等)。其程序框图如图4.3所示:
图4.3 VideDevice.vi的程序框图
图中视频采集前首先要运行VideoDeviceProxy_subscribe.vi。它有如下输入参数:
Resolution:图像的分辨率。0为160\*120,1为320\*240,2为640\*480,3为1280\*960。
ColorSpace:图像数据格式。目前LabVIEW仅支持RGB格式,值为11。
Fps:采样速率,单位为帧/秒。
2.2 人脸与情感识别
基于Pepper自带的人脸识别引擎,或者第三方互联网API,实现面部特征识别功能。
使用LabVIEW即可快速调用该系列引擎。
peopleperception.vi是一个典型的视频采集——人脸定位——人脸情感特征识别的范例。用户需注意的是使用该范例前需首先将naocamera.vi烧录进机器人中运行。图4.4和4.5是程序范例的界面:
图4.4 范例中可检测到笑脸,并显示微笑指数和心情指数
相关的程序代码如图4.5所示:
图4.5 peoplepercption中的程序片段,使用多态VI:getData(包含AgeProperties、SmileProperties等函数,即可获取用户需要的人脸信息)
三、语音控制
Pepper机器人有不少于四个麦克风和一个语音合成器。同时也提供了丰富的声音及语音函数。
用户可以利用这些VI控制机器人的语音设备进行声音播放、录音、生源定位、声音识别、语音识别、说话。目前支持中英文等六种语言。
3.1 播放音阶
图5.2 音阶播放.vi前面板输入IP、
路径:Audio\ Play music.vi
作用:利用Pepper机器人内部的正弦波 播放器播放七个音阶。音阶的频率由LabVIEW计算所得。所用的函数为AudioPlayerProxy_playSine.vi。如图6.2所示:
图5.3音阶播放.vi程序框图
3.2 录音与回放
路径:Audio\Record.vi
作用:利用Pepper的录音功能将外部的声音录至机器人的硬盘中,然后进行回放。如图5.3所示:
图5.3 Record.vi
该程序中,先利用AudioRecorder函数将麦克风获取的声音录制进Pepper的硬盘中,路径为:/home/nao/test.wav。录音的长度为5秒。然后利用AudioPlayer函数播放该声音。
3.3 机器人说话
路径:Audio\Speak.vi
作用:利用Pepper的语音合成功能控制Pepper机器人说话。目前所支持英文、中文等六种语音,同时也可以控制Pepper的语音语调。
利用该范例可以设置机器人的语音语调、声音响度、回音等参数。
TextToSpeechProxy_setVoice.vi:设置语音语调,输入端必须为内存中的语音语调名称。
TextToSpeechProxy_setLanguage.vi:设置机器人说话语言。
TextToSpeechProxy_setParameter.vi:设置更多参数,如:doubleVoice(声道设置,1或者2,doubleVoiceTimeShift(两个声道时间漂移),doubleVoiceLevel()等。
程序框图如图5.5所示:
图5.4 speak.vi前面板
图5.5 Speak.vi的程序框图
3.4 语音识别
路径:Audio\ SpeechRecognition.vi
作用:控制Pepper进行语音识别。首先输入一些机器人需要听懂的词汇库。当机器人听到该词汇时,界面上即可显示它所听到的词汇以及相似度。
该程序的程序框图如图5.6所示:
图5.6 SpeechRecognition.vi
进行声音识别时,首先设置好语言(例如English),输入词汇表(字符串数组),然后开始采集声音。采集声音的时候,将用到Memory中的GetData,输入的命令为WordRecognized。
声音识别的结果将显示在前面板的Words heard控件上。每一个词汇均有其相似度(如果机器人听到的词汇与词汇表的某个词汇差别很大,相似度小于特定值,将不会显示在控件上)。一般相似度大于0.4即可认为机器人听懂了特定的词汇。如图5.7所示:
图5.7 听到的词汇及其相似度,本例中听到的单词为Hello,匹配度为0.5373
四、运动控制
包括各关节角度控制、各部件位置和变形控制、行走控制、避障控制等。用户也可以利用SDK提供的丰富的接口设计出更多富有新意的动作,为了方便用户设计复杂动作(比如一个舞蹈),软件中利用了Express VI技术特设了一个运动控制插件: MotionEditor。MotionEditor结合了仪酷自研的LabVIEW三维仿真软件所导出的机器人Pepper模型,用户可通过该插件轻松实现复杂运动的编辑、实时同步、仿真,可采取多种运动拟合方式(如Bezier、三次样条等)生成曲线,并将编辑的动作序列自动生成LabVIEW代码。
运动控制是机器人中最重要的一套函数。其中包括:
-
关节控制(Joint)
-
刚度控制(Stiffness)
-
位置控制(Cartesian)
-
移动控制(Locomotion)
-
跌倒控制(Fall Manager)
-
碰撞避免(Self-collision avoid)
-
全身控制(Whole body control)
关于每一个VI的使用方式,请参考help文档。本文将对一些范例做详细说明。
4.1 运动控制基础范例
文件路径:范例查找器\Pepperexample\Motion\Motion Control.vi。
作用:运动控制综合范例,能实现多种功能。
使用方式:打开该VI,输入机器人的IP地址,点击“运行”即可。
整个VI采用While循环+事件结构。当有按钮按下时,会触发事件执行相应动作。程序框图如图6.1所示。
图6.1 Motion Control.vi的程序框图
该范例分五个选项卡。
选项卡1:关节刚度控制(Stiffness)。用户可使用该系列接口获取每一个关节当前的刚度,也可以分别或同时设置每一个关节的刚度(固定还是松开)、持续多少时间等。如图6.2所示:
图6.2 关节刚度控制
选项卡2:角度控制(Angle)。用户可以使用该系列接口获取每一个关节的当前角度,也可以控制每一个关节转动至什么角度、速度是多少。如图6.3所示:
图6.3 关节角度控制
选项卡3:移动(Movement)。用户可以使用该系列接口控制机器人以恒定的速度和角速度行走和停止,同时也可以指定机器人移动到一个或多个位置。行走的姿势也可以由用户决定。如图6.4所示
图6.4移动控制
选项卡4:位置控制(Position)。用户可以使用该系列接口控制机器人头部、手部、身体、腿部等各个部位的具体位置。可以在三中参照系中任选其一进行控制。同时也能够获取机器人的部位目前处于哪个位置。如图6.5所示:
图6.5 位置控制
选项卡5:变形(Transform)。用户可以获取机器人每一个部位的变形矩阵,同时也可以输入该矩阵对机器人每一个部位的位置进行控制。如图6.6所示:
图6.6 变形控制
4.2 角度编辑
文件路径:Motion\Angle Interpolation.vi
作用:获取已经编辑好的一段动作序列,并通过MotionProxy_angleInterpolationBezier.vi将它部署至机器人中控制她实施该动作。同时,所有的动作序列数据均可以显示在波形图上,用户也可以利用MotionProxy_angleInterpolationBezier.vi的输入端,实现自己所设计的动作。
MotionProxy_angleInterpolationBezier.vi输入端的数据类型如图6.7所示:
图6.7 MotionProxy_angleInterpolationBezier.vi的输入端数据
该数据类型是一个簇组成的数组,数组中的每个元素代表某一时间段内该关节的所有角度变化。
- Names: 可选择任意一个关节的名称,如:HeadPitch、LHipRoll等。但不能选不是关节的那些名称,如Body,不然程序会报错。
-
Time: 时间,单位为秒。表示执行该动作的精确时间。
-
Angle:该关节在当前时间的角度,单位为弧度。
-
Handle1:在time时间点前的角度曲线拟合方式。
-
Handle2:在time时间点后的角度曲线拟合方式。
所有的动作均可在Choregraphe中的动作编辑器进行,将导出的c++代码文件导入read movements.vi转换成图3.7中的簇数组。
6.7中的簇数组可以通过read movements_to XY graph.vi,将数据显示在XY图上,横轴为时间,纵轴为弧度。
整个界面如图6.8所示:
图6.8 Angle Interpolation
此外,LabVIEW中提供了编辑复杂动作的Express VI。用户可以通过该Express VI的界面编辑动作,并自动生成代码。编辑复杂动作的Experss VI界面如图6.9:
图6.9 MotionEditor Express VI的界面
使用MotionEditor,可以:
-
导入choregraphe生成的动作序列;
-
连接Pepper机器人并进入Animated Mode,手动扳动机器人关节,并记录动作;
-
仿真已经编辑完成的动作序列;
-
点击“OK”即可保存动作序列,自动生成动作序列代码。
4.3姿态控制
文件路径:Motion\ Posture Control.vi
作用:用户可以使用姿态控制接口获取已存在机器人大脑中的所有固定姿态,同时也可以根据输入的姿态名控制机器人做出相应的姿态。
4.4 手臂控制
手臂控制实验Arm control.vi,如下图所示手臂(本实验已右手臂为例,不含手)的5个关节的定义:
RShoulderPitch
RShoulderRoll
RElbowYaw
RElbowRoll
RWristYaw
6.11 手臂个关节运动示意图
5个关节的定义和范围如下表所示:
命令参数大小中以弧度为单位。
范例界面如下图所示,程序中的图片展示了每个关节的定义,左侧包含了五个滑杆输入控件以及其数值显示,分别可对图中的5个关节进行控制,其中maxSpeedFraction是对关节运动的速度进行设置,其值范围从0~1.
6.12 Arm control.vi前面板
下图为该范例的程序框图,本范例选用了事件结构,事件结构可以实时检测并响应面板上所触发的事件,因此本范例中,一旦5个关节中任何一个设置参数有变动时,对应机器人手臂的关节就会及时响应。程序中分别包含了以下事件: ShoulderPitch值改变、ShoulderRoll值改变、ElbowYaw值改变、ElbowRoll值改变、WristYaw值改变、超时、Stop值改变(控制程序的退出)。
范例中主要用到的几个函数及功能:
-
Motion Initial.vi 创建连接及Motion引用
-
MotionProxy_setAngles.vi 设置关节角度及名称,根据设置参数控制硬件
-
RobotPosture Proxy_CreatProxy.vi 创建连接及Posture引用
-
RobotPosture Proxy_goToPosture.vi 姿态设置函数,关节控制前,先将机器人设置到一个初始状态。
6.13 Arm control.vi程序框图
五、行为控制
机器人内核中有一套行为管理器,用于存储由Choregraphe编写的脚本程序。用户也可以使用LabVIEW获取行为管理器中所有行为的名称,并调用或停止这些脚本程序。
路径:Behavior\Behavior example.vi
作用:获取已经下载至机器人大脑中所有行为的名称,并执行某个特定的行为。程序框图如图7.1所示:
图7.1 Behavior example.vi的程序框图
另外,高级用户也可以利用Behavior提供的接口,将LabVIEW编写的脚本直接下载至机器人内核中,作为新的行为供其他用户调用。
六、智慧医疗与养老工具包
-
支持跟踪人类的面部表情。手机患者在互动中微笑的百分比,同时密切观察人们的肢体语言,并利用这些信息提出改善健康问题的建议。
-
支持测量老年人完成任务的表现、参与度和情感反应。向老年人展示如何进行体育锻炼,协助治疗,以恢复和维持老年人的认知能力,如记忆力、定向力和沟通能力。
-
使用它们的老年人(两周内使用时间长达 18 小时)心理健康状况得到了改善, 用户的孤独感有所减轻。陪同老年人进行锻炼、卡拉OK和游戏等。
6.1 智能导诊
病人可通过语音或平板的文字输入,告知pepper机器人自己的症状,机器人会给你初步的预诊结果和就医建议。
6.2 病房助手
机器人在病房层面作为护士助手,监控住院病人。病人也可以与机器人语音对话,告知机器人自己想去的房间(如洗手间、茶水间、护士办公室等)机器人通过自主导航部件带领病人去指定地点。
6.3 心理疏导
Pepper 不仅能够以先进的科技及时监测反馈老年人的身体状态,更能够以独特且富有情感的方式进行沟通交流,加强与人的情感联系,提升用户体验。它能够收集更多的信息,甚至可以跟踪人类的面部表情。Pepper 可以告诉医生患者在互动中微笑的百分比,同时密切观察人们的肢体语言,并利用这些信息提出改善健康问题的建议。
6.4 体征检测
1、对接传感器:体温计、心率血氧探头、血压计
2、指导操作
2、播报结果
4、记录健康档案
6.5 脑机接口
通过脑电信号,指导Pepper机器人完成动作。
分析脑电波成分,判断用户的注意力是否集中,并触发相应的互动。
6.6 影像分析
机器人扫描二维码,向云服务下载数据,获取诊断信息,向患者播报。
工具包获取
如需获取工具包,可以加入我们的技术交流群(QQ):974600160。进群请备注:CSDN
🎯总结
以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续我们将为大家更新更多关于AI的内容,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~
如您想要探讨更多关于AI实验室建设,机器人机器臂以及其他AI相关内容,欢迎加入我们的技术交流群:974600160。进群请备注:CSDN
更多内容可查看:
- 微信公众号:仪酷智能科技
- B站:仪酷智能
如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏
LabVIEW AI环境部署系列文章链接
LabVIEW AI视觉工具包(非NI Vision)下载与安装教程
LabVIEW开放神经网络交互工具包(ONNX)下载与超详细安装教程
LabVIEW使用OpenVINO加速必备工具包下载与安装教程
LabVIEW图形化TensoRT工具包的安装下载分享
👇技术交流 · 一起学习 · 咨询分享,请联系👇