版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器人操作系统(ROS)机器人操作系统(ROS)在ROS中构建一个人机交互机器人9.1机器人操作系统(ROS)9.1.1AIML简介AIML(人工智能标记语言)是一种基于XML的语言,用于存储XML标签内部的知识。AIML文件使用结构化的方式存储知识,以便在需要时可以轻松访问。换句话说,AIML是一种为了匹配模式和确定响应而进行规则定义的XML格式。它的雏形是一个名为"A.L.I.C.E."("ArtificialLinguisticInternetComputerEntity")的高度扩展的Eliza机器人,由Alicebot自由软件社区和RichardS.Wallace博士在1995-2000期间开发。目前AIML已经有了Java,Ruby,Python,C,C#,Pascal等语言的版本。人机交互机器人机器人操作系统(ROS)9.1.1AIML简介AIML标签要学习AIML,首先需要学习基本的AIML标签,如下表所示:编号标签描述1<aiml>定义AIML文档的开头和结尾2<category>定义Alicebot知识库中的知识单元3<pattern>定义模式以匹配用户可以输入到Alicebot的模式4<template>定义Alicebot对用户输入的响应5<star>用于匹配<pattern>标签中的通配符*字符6<srai>多用途标签,用于调用/匹配其他类别7<random>获取随机响应8<li>用于表示多个响应9<set>用于在AIML变量中设置值10<get>用于获取存储在AIML变量中的值11<that>用于根据上下文进行响应12<topic>用于存储上下文,以便可以基于上下文完成对话13<think>在AIML中用于存储变量而不通知用户14<condition>用于ALICE响应匹配输入机器人操作系统(ROS)下面通过一个简单的例子,对上述AIML标签进行更加形象的描述:代码以<aiml>标签开始,以</aiml>标签结束,基本上它包含AIML的版本和文件的字符编号。在标签<category>中,保存用户的输入和机器人回复的输出。其中来自用户的可能输入保存在<pattern>标签下,机器人回复的输出保存在<template>标签下。<star>标签有助于从用户的可能输入中提取单词,<starindex=”1”/>表示从用户可能输入中提取提一个片段。显然若有多个可提取的片段,只需修改可提取片段出现的序号。9.1.1AIML简介AIML标签<aimlversion="1.0.1"encoding="UTF-8"><category><pattern>MYNAMEIS*</pattern><template>NICETOSEEYOU<star/></template></category><category><pattern>MEETOURROBOTS*AND*</pattern><template>NICETOSEE<starindex="1"/>AND<starindex="2"/></template></category></aiml>机器人操作系统(ROS)9.1.1AIML简介安装PyAIML解释器可以使用如下面命令安装软件包:$sudoapt-getinstallpython-aiml为了验证是否成功安装,进入python解释器,并尝试使用下面的命令导入AIML模块:$python>>>importaiml如果模块正确加载没有出现错误,指针就会进入下一行,那么恭喜你,至此就完成了PyAIML解释器的安装。机器人操作系统(ROS)9.1.2在ROS中创建AIML机器人基于ROS的交互式机器人结构框图整个系统的工作原理如下:使用ROS中的语音识别系统将用户的语音转换成文本,然后输入到AIML引擎或作为机器人命令发送,其中,机器人命令是用于机器人控制的特定命令,如果文本不是机器人命令,它将发送到AIML引擎,从数据库中给出智能回复。最后,使用文本到语音模块将AIML解释器的输出转换为语音输出。机器人操作系统(ROS)AIMLROS功能包sound_play是audio-common的一个组件,audio_common是一个第三方音频开发包,它实现了音频驱动以及相关的ROS消息机制。通过下面源码地址进行下载,/ros-drivers/audio_common,或者将本书对应章节的功能包(audio_commom-master)复制到工作空间下,安装完相关依赖库后,在工作空间内进行编译。9.1.2在ROS中创建AIML机器人1.安装soundplay功能包$sudoapt-getinstalllibasound2$sudoapt-getinstallgstreamer0.10-*$sudoapt-getinstalllibgstreamer1.0-dev$sudoapt-getinstalllibgstreamer1.0-0-dbg$sudoapt-getinstalllibgstreamer-plugins-base1.0-dev首先安装soundplay相关依赖库:机器人操作系统(ROS)AIMLROS功能包9.1.2在ROS中创建AIML机器人1.安装soundplay功能包接着将本书提供的功能包(audio_commom-master)拷贝到工作空间src文件夹下后,进入工作空间进行编译:$cd~/catkin_ws/$catkin_make运行如下命令启动sound_play主节点,运行结果如下图所示:$roscore$rosrunsound_playsoundplay_node.py运行sound_play节点机器人操作系统(ROS)AIMLROS功能包9.1.2在ROS中创建AIML机器人1.安装soundplay功能包sound_play测试界面运行如下命令,可以在“”中输入需要转化成语音的文本信息:$rosrunsound_playsay.py"helloworld"能听到朗读“helloworld”并且有如下图所示的打印界面。机器人操作系统(ROS)AIMLROS功能包9.1.2在ROS中创建AIML机器人音量控制配置有时可能出现没有声音的情况,运行如下命令,安装pavucontrol:$sudoaptinstallpavucontrol运行如下命令,打开该软件:$pavucontrol切换到“配置”选项卡,根据实际情况禁用不需要的声卡。这里插入耳机到电脑,禁止第一项,第二项选择模拟立体声双工(analogystereoduplex)或者模拟立体声输出(analogystereooutput)。切换到输出设备,选择线缆输出(unplugged),同时点击右上角的绿色对勾。
输出设备机器人操作系统(ROS)AIMLROS功能包9.1.2在ROS中创建AIML机器人切换到输入设备,选择话筒(unplugged),同样点击右上角的绿色对勾。输入设备配置完成后,运行如下命令重新进行测试:$rosrunsound_playsay.py"helloworld"aiml_server的功能是加载和保存AIML。它订阅/chatter主题,是AIML解释器的输入,并发布/response主题。#!/usr/bin/envpythonimportrospyimportaimlimportosimportsysfromstd_msgs.msgimportStringrospy.init_node('aiml_server')mybot=aiml.Kernel()response_publisher=rospy.Publisher('response',String,queue_size=10)defload_aiml(xml_file): data_path=rospy.get_param("aiml_path") printdata_path os.chdir(data_path) ifos.path.isfile("standard.brn"): mybot.bootstrap(brainFile="standard.brn") else: mybot.bootstrap(learnFiles=xml_file,commands="loadaimlb") mybot.saveBrain("standard.brn")defcallback(data): input=data.data response=mybot.respond(input) rospy.loginfo("Iheard::%s",data.data) rospy.loginfo("Ispoke::%s",response) response_publisher.publish(response)
deflistener(): rospy.loginfo("StartingROSAIMLServer") rospy.Subscriber("chatter",String,callback) #spin()simplykeepspythonfromexitinguntilthisnodeisstopped rospy.spin()if__name__=='__main__': load_aiml('startup.xml') listener()机器人操作系统(ROS)AIMLROS功能包9.1.2在ROS中创建AIML机器人机器人操作系统(ROS)客户端代码功能是等待用户输入并将用户输入发布到/chatter主题。#!/usr/bin/envpythonimportrospyfromstd_msgs.msgimportStringrospy.init_node('aiml_server')mybot=aiml.Kernel()response_publisher=rospy.Publisher('response',String,queue_size=10)AIMLROS功能包9.1.2在ROS中创建AIML机器人机器人操作系统(ROS)TTS客户端订阅/response主题,并使用sound_playAPI将相应转化为语音。#!/usr/bin/envpythonimportrospy,os,sysfromsound_play.msgimportSoundRequestfromsound_play.libsoundplayimportSoundClientfromstd_msgs.msgimportStringrospy.init_node('aiml_soundplay_client',anonymous=True)soundhandle=SoundClient()rospy.sleep(1)soundhandle.stopAll()print'StartingTTS'defget_response(data): response=data.data rospy.loginfo("Response::%s",response) soundhandle.say(response)deflistener(): rospy.loginfo("Startinglisteningtoresponse") rospy.Subscriber("response",String,get_response,queue_size=10) rospy.spin()if__name__=='__main__': listener()AIMLROS功能包9.1.2在ROS中创建AIML机器人机器人操作系统(ROS)语音识别节点订阅/recognizer/output,并发布主题/chatter,其中主题/recognizer/output由ROS语音识别软件包发布,如PocketSphinx。。#!/usr/bin/envpythonimportrospyfromstd_msgs.msgimportStringrospy.init_node('aiml_speech_recog_client')pub=rospy.Publisher('chatter',String,queue_size=10)r=rospy.Rate(1)#10hzdefget_speech(data): speech_text=data.data rospy.loginfo("Isaid::%s",speech_text) pub.publish(speech_text) deflistener(): rospy.loginfo("StartingSpeechRecognition") rospy.Subscriber("/recognizer/output",String,get_speech) rospy.spin()whilenotrospy.is_shutdown(): listener()AIMLROS功能包9.1.2在ROS中创建AIML机器人机器人操作系统(ROS)该启动文件启动aiml_server和aiml_client节点。运行此启动文件之前,必须将数据文件夹路径设置为ROS参数,可以将其设置为AIML数据文件夹路径。<launch> <paramname="aiml_path"value="/home/robot/ros_robotics_projects_ws/src/ros_aiml/data"/> <nodename="aiml_server"pkg="ros_aiml"type="aiml_server.py"output="screen"> </node> <nodename="aiml_client"pkg="ros_aiml"type="aiml_client.py"output="screen"> </node></launch>AIMLROS功能包9.1.2在ROS中创建AIML机器人机器人操作系统(ROS)该启动文件启动aiml_server、aiml_client和aiml_tts节点,与上一启动文件的区别在于将AIML服务器的响应转化为语音。<<launch> <paramname="aiml_path"value="/home/robot/ros_robotics_projects_ws/src/ros_aiml/data"/> <nodename="aiml_server"pkg="ros_aiml"type="aiml_server.py"output="screen"> </node> <includefile="$(findsound_play)/soundplay_node.launch"></include> <nodename="aiml_tts"pkg="ros_aiml"type="aiml_tts_client.py"output="screen"> </node> <nodename="aiml_client"pkg="ros_aiml"type="aiml_client.py"output="screen"> </node></launch>AIMLROS功能包9.1.2在ROS中创建AIML机器人机器人操作系统(ROS)该启动文件将启动AIML服务器、AIMLTTS节点和语音识别节点:<launch> <paramname="aiml_path"value="/home/robot/ros_robotics_projects_ws/src/ros_aiml/data"/> <nodename="aiml_server"pkg="ros_aiml"type="aiml_server.py"output="screen"> </node> <includefile="$(findsound_play)/soundplay_node.launch"></include> <nodename="aiml_tts"pkg="ros_aiml"type="aim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年化疗药物供应合同
- 2025年宇宙探索担保协议
- 2025年商铺抵押借款转换托管协议
- 2025年度木地板施工与室内装修一体化合同4篇
- 2025年壁球馆特许经营合同
- 2025年体育馆用水合同
- 二零二五版水资源合理化利用建议书范本3篇
- 2024云南公务员考试行测真题(行政执法类)
- 2025版委托代理企业交税及税收筹划与申报合同6篇
- 2024经济合同范本
- 城市微电网建设实施方案
- 企业文化融入中华传统文化的实施方案
- 9.1增强安全意识 教学设计 2024-2025学年统编版道德与法治七年级上册
- 《化工设备机械基础(第8版)》全套教学课件
- 人教版八年级数学下册举一反三专题17.6勾股定理章末八大题型总结(培优篇)(学生版+解析)
- 2024届上海高考语文课内古诗文背诵默写篇目(精校版)
- DL-T5024-2020电力工程地基处理技术规程
- 初中数学要背诵记忆知识点(概念+公式)
- 驾照体检表完整版本
- 农产品农药残留检测及风险评估
- 农村高中思想政治课时政教育研究的中期报告
评论
0/150
提交评论