日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NAO学习第二周——NAOqi Audio

發布時間:2024/1/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NAO学习第二周——NAOqi Audio 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 目標

  • 深度對話

  • 避障

  • 看相關論文至少三篇
    • 查閱資料

  • 悉尼科技大學NAO機器人遠程控制
  • NAO的C++_python環境配置
  • NAOqi Audio——官方文檔
  • 阿里云
  • NAO深層開發的環境搭建(只需要安裝python-2.7.10、pynaoqi-2.1.4.13.win32便可以開始使用Python編程啦!)
    • 進展

    1. 瀏覽總況

    把NAOqi API文檔大概瀏覽了一遍。驚訝于NAO擁有如此豐富的功能的同時,自卑于自己現在幾乎全不能實現。

    2.深度對話

    這周主要研究NAOqi?Audio(C:/ProgramFiles(x86)/AldebaranRobotics/ChoregrapheSuite2.1/share/doc/naoqi/audio/index.html)

    • Animated Speech——帶動作地說話

    默認情況下,當你讓機器人通過這個模塊說話時,他用身體語言來激活演講。

    "你好呀! ^start(animations/Stand/Gestures/Hey_1) 很高興見到你!" #機器人說完你好,做動作,動作停止說很高興見到你"你好呀! ^start(animations/Stand/Gestures/Hey_1) 很高興見到你! ^wait(animations/Stand/Gestures/Hey_1)" #機器人說完你好,做動作,動作不停說很高興見到你

    身體語言模式是^mode(body_language_mode),其中body_language_mode?可以是?“disabled”, “random” or “contextual”。例如:

    "你好. 看,我可以靜止不動 ^mode(disabled) 我還可以恢復移動 ^mode(contextual), 看到了嗎?"

    Animations(生動化)

    ^run( animation_full_name ) Suspend the speech, run an animation and resume the speech. ^start( animation_full_name ) Start an animation. ^stop( animation_full_name ) Stop an animation. ^wait( animation_full_name ) Suspend the speech, wait for the end of the animation and resume the speech.#例子"^start(animations/Stand/Gestures/Enthusiastic_4) 看我在說話的時候能做什么!"^stop(animations/Stand/Gestures/Enthusiastic_4) 現在我使用我的身體語言""^start(animations/Stand/Gestures/Hey_1)你好啊,小伙子們! ^wait(animations/Stand/Gestures/Hey_1)"

    ?Tagged animations(標記動畫): ? (默認情況下可用的標簽列表)

    "^startTag(me) 我叫鬧.""^startTag(hello) 你好. ^waitTag(hello)""^startTag(hello) 很高興見到你. ^stopTag(hello) 我叫鬧."

    ?Sounds(調節音量)

    ^runSound( soundSet/soundFile )^runSound( soundSet/soundFile, soundVolume )#暫停講話,播放聲音并恢復講話。音量是介于0和100之間的整數。(默認為100)^startSound( soundSet/soundFile )^startSound( soundSet/soundFile, soundVolume )在背景中播放聲音。音量是介于0和100之間的整數。(默認為100)^stopSound( soundSet/soundFile ) #停止聲音 ^waitSound( soundSet/soundFile ) #暫停演講,等待聲音的結束,重新開始演講。#例子 "^startSound(my_sound_set/my_sound) 酷啊.""^startSound(my_sound_set/my_sound, 50) 酷啊. ^waitSound(my_sound_set/my_sound)""That's cool. ^runSound(my_sound_set/my_sound) "

    API調用

    #include <alproxies/alanimatedspeechproxy.h>
    • ALDialog——對話

    topic: ~helloworld() language: mnc concept:(greeting) ^rand[hi hello "嗨" "哈嘍" "你好" "很高興見到你" "哇" "哇塞"] concept:(repeat) [再說一遍 重復{一次} 你說什么 什么 "你可以再說一遍嗎" "我沒聽清"] concept:(bye) [bye {拜}拜 {下次}再見 "再會"] concept:(serve)["歡迎光臨" "您好" "很高興為您服務"]u:([ ~greeting "機器人" "程程"]) 你好, ^pCall(ALMotion.wakeUp()) ^start(animations/Stand/Gestures/Hey_1) 見到你好開心!我的 [主人 朋友]^wait(animations/Stand/Gestures/Hey_1) u:(你叫什么名字) 大家都叫我程程!很高興見到你 u:(你還記得我的名字嗎?) ^first["["你叫" "你的名字是"] $name" "我忘記了"]u1:(”不{對}“) "好的" ^clear(name) u:(我{的名字}叫 _[田* 曾* 陶* 陳* 馬* 黃* 蘇* 趙* 李* 周* 張* 王* 老師 趙老師 小朋友 田瀟 ]) 很高興見到你 $1 $name=$1 ^gotoRandom(對話) ^nextProposalu:(你好啊 {鬧} 今天過得開心嗎)你好啊 我過得很開心,你呢? u:({"早上好"} {鬧} 你睡得好嗎?)一點都不好!你忘了關掉我!u:(我好餓) ~serve 那你想吃什么呢,$name u:(我想吃 _*)$1 $askedFood=$1 你現在想吃 $askedFood 嗎,$name u:(我想吃 _[蘋果 香蕉 紅燒肉 鍋包肉]) 你現在想吃 $askedFood 嗎,$name u:(我點了什么) ^first["你剛剛點了 $askedFood" "我忘記了"] u:("我能多要點嗎")^first["$askedFood==["紅燒肉""鍋包肉"] 吃太多肉會傷害你的身體""好的,一會多吃點 $askedFood"]u:(外星人) 我不是外星人 我是人形機器人~bye u:(我可以摸摸你嗎) 當然可以 u:("你感覺如何" "你還好嗎")我感覺不太好,我好像需要充電了 u:([起立 站起來]) 好的,我要站起來了 $wakeup=1 u:([休息 蹲下]) 好的,我要休息了 $rest=1u:("我想學做番茄炒蛋" "{我想學}西紅柿炒雞蛋")好啊,我來教你做.按照我的指示,當你準備好下一步時說下一步。 u:("下一步") ^nextProposal proposal: 首先,準備好半個青椒,一個西紅柿,五個雞蛋,適量蔥,少許料酒,適量鹽,少許生抽 proposal: 把食材洗凈切好,雞蛋打到大碗里 proposal: 鍋中放適量油,把雞蛋放少許料酒打散,倒入鍋中炒熟成出備用 proposal: 鍋中再倒入適量油,燒開后把西紅柿 青椒和蔥花一起倒入鍋中翻炒,加入少許生抽炒勻 proposal: 把之前炒好的雞蛋倒入鍋中一起翻炒,調入適量的鹽炒勻,這樣美味的西紅柿炒雞蛋就完成啦 proposal: %對話一 今天的天氣不錯啊。u1:(是{的}) 希望這樣的好天氣常伴你^gotoRandom(對話)u1:(不{好} "我不喜歡今天的天氣") 希望明天會有一個屬于你的好天氣 ^gotoRandom(對話)proposal: %對話二 你想聽個故事嗎?u1:(!不要 "給我講個新故事吧")好的,我會給你講個故事!u1:(不 不想) 好吧,也許你應該打個盹休息一下.u1:(~repeat) 好的,我會重復一遍. ^sameProposalproposal: %對話三 那我給你表演個節目好嗎?u1:([好 可以 行 好的 嗯]) 讓我想想 ^start(Stand/Waiting/ScratchHead_1) ^wait(Stand/Waiting/ScratchHead_1) ^start(Stand/Waiting/KnockEye_1) ^gotoRandom(對話)u1:([不 {我}不想{看} 不行 不好 {我}不要 下次吧 不可以]) ^gotoRandom(對話)u1:(~repeat) 好的,我再問你一遍. ^sameProposalproposal: %對話四 今天你玩的開心嗎?u1:([{很}開心 我{很}高興 呵呵 哈哈]) 歡迎下次再來玩。^gotoRandom(對話)u1:([{不}開心 我{不}高興]) 我會做的更好的,下次再來看我哦。 ^gotoRandom(對話)

    3. 深度開發環境搭建

    1)軟件下載?

    ?2)軟件安裝

    • Choregraphe-suite-2.1-win32-setup
    • naoqi-sdk-2.4.3.28-win32-vs2010(根據自己的環境而定)
    • pynaoqi-python2.7-2.4.3.28-win32-vs2010
    • Qibuild-1.14.2
    • cmake-3.11.1-win32-x86
    • Python-2.7.3(必須是32位的,64位的也必須裝32位的)

    3)環境配置?

    在我的電腦→屬性→高級→環境變量→用戶變量 的path 中添加naoqi-sdk-2.4.3.28-win32-vs2010中lib和bin的路徑,下面的是我的路徑:

    ?

    ?

    • 安裝VS2010或VS2008,安裝目錄不能存在中文或中文字符
    • 安裝Choregraphe,NAO的編程平臺,必須裝(目錄中不要存在中文或中文字符)
    • 安裝Python,最好放在根目錄下,目錄中不能存在中文或中文字符
    • 將pynaoqi-2.4.3.28.win32拷貝到Python的目錄中
    • 將naoqi-sdk-2.4.3.28-win32-vs2010解壓,所在目錄必須沒有中文或中文字符
    • 安裝cmake-3.11.1-win32-x86,默認目錄安裝
    • 解壓Qibuild-1.14.2
    • C:\Python27;
    • C:\Program Files (x86)\CMake\bin;
    • C:\Python27\Scripts;?
    • C:\naoqi-sdk-2.4.3.28-win32-vs2010\bin;
    • C:\naoqi-sdk-2.4.3.28-win32-vs2010\lib;
    • 進入解壓的qibuild-1.12文件夾中,運行install-qibuild批處理文件
    • 進入安裝生成的Python的目錄中運行Pynaoqi-python-2.7-naoqi-1.12.0.win32,不需要做任何的改動,按默認安裝就可以。

    4)檢測安裝是否成功

    ?

    ?

    • Win+R,輸入cmd 進入命令行,進入qibuild-1.14.2的目錄,我的在C盤根目錄下。輸入qibuild,有以下結果說明qibuild運行成功:
    • 運行Python的IDE環境:IDLE (Python GUI) 。輸入import naoqi,回車,運行結果如下,說明配置成功:

    4. 論文及感想

    NAO 機器人的語音交互與任務規劃研究(苗凱堯,劉利芳,張夢宇,呂詩昆)

    • 用途:根據幫助老年人進行日常活動這一要點進行研究,采用NAO機器人進行語音交互、路徑規劃以及抓取物品等功能.
    • 環境描述:本文采用柵格法家居環境進行建模(將環境進行單元分割,將其用大小相等的方塊表示出來).精度與存儲開銷決定選擇合適的柵格大小很重要.本文將柵格的大小設定為 25cm,環境中分布若干個物體,物體上有機器人待取的物品.柵格用二維數組 map[][] 表 示,map[x][y] = 0表示該柵格上沒有障礙物,機器人可以行走 ;map[x][y] ≠ 0 表示該柵格上是物體和待取物品.?
    • 地圖生成算法:采用紅球檢測和超 聲檢測相結合的地圖生成算法(讓機器人根據超聲檢測自主生成環境的邊界地圖,然后由人操作紅球將機器人帶領到障礙物面前,機器人便可以自主的完成當前障礙物的邊界檢測,以此類推,機器人就能生成全部的障礙物邊界地圖)。算法由兩部分組成 :邊界檢測和障礙物檢測,算法用 Python 語言 實現。

    ①邊界檢測算法

    Step1 :選擇一個點作為地圖的起點,將機器人放置在起點 處,啟動超聲傳感器,初始化地圖數組 map[][]。 ? ?

    SonarProxy = ALProxy( “ALSonar”, IP, PORT ) ? ? MemoryProxy = ALProxy (“ALMemory”, IP, PORT )

    Step2 :讀取聲吶的值。 ?

    LeftValue = MemoryProxy.getData( “Device/ SubDeviceList/US/Left/Sensor/Value” ) ? RightValue = MemoryProxy.getData( “Device/ SubDeviceList/US/Right/Sensor/Value” )

    Step3 :若左值和右值均小于 0.32,則機器人左轉或右轉 90°并且轉向計數器加一,否則直行。

    Step4 :若邊界檢測未完成,則轉 Step2,否則轉 Step5,準備 執行障礙物檢測算法。 ? ?

    if( map[x][y] == 1 and TurnCount >= 3 ):BorderTest = True

    Step5 :邊界檢測算法結束。?

    ②障礙物檢測算法

    Step1:機器人追蹤紅球進行移動

    #coding=utf-8 TrackerProxy = ALProxy( "ALRedBallTracker", IP, PROT ) TrackerProxy.startTracker() if ( abs( RedBallAngle ) < math.radians( 30 )):MotionProxy.walkTo(0.08, 0, 0) elif( abs( RedBallAngle ) >= math.radians( 30 )):MotionProxy.walkTo( 0, 0, math.pi/2.0 )MotionProxy.angleInterpolation( "HeadYaw", 0, 1.0, True )MotionProxy.walkTo( 0.08, 0, 0 ) elif( RedBallAngle <= -math.radians( 30 )):MotionProxy.walkTo( 0, 0, -math.pi/2.0 )MotionProxy.angleInterpolation( "HeadYaw", 0, 1.0, True )MotionProxy.walkTo( 0.08, 0, 0)

    Step2:若在追蹤過程中機器人視野中丟失紅球超過 30 秒, 則啟動超聲傳感器

    Step3:讀取聲吶的值(代碼與邊界檢測算法中Step2相同)

    Step4:若超聲檢測到前方有障礙且距離機器人小于 0.5m,則機器人計算應向障礙物行走幾步才足夠接近障礙物(假設閾值為 0.2m),否則轉 Step7

    if (LeftValue<0.5 or RightValue<0.5 ):SonarProxy.unsubscribe("TestSonar")StepNum=int(min(LeftValue – 0.2, RightValue – 0.2)/0.08)MotionProxy.walkTo(StepNum*0.08,0.0,0.0)

    Step5:機器人面向障礙物向左側橫向行走,行走期間不停檢測機器人左右兩側的超聲值,如果左值大于給定閾值,則說明 機器人走到拐角,則機器人應先繼續左走兩步再右轉,同時始終保持面向障礙物直到當前障礙物的邊界檢測完成為止.

    Step6 :重復 Step1 至 Step5,直到完成環境中所有障礙物的檢測.

    Step7 :障礙物檢測算法結束。?

    • 路徑規劃算法(A* 算法)

    這種啟發式算法的基本思想是讓機器人規劃出一條從當前位置到下一待覆蓋柵格之 間的最短路徑,然后使機器人通過該路徑到達待覆蓋的柵格。A* 算法通過估價函數 f’(n) = g’(n) + h’(n){g’(n) 是起點到終點的最短路徑值,h’(n) 是 n 到目標的最短路經的啟發值}?來估計當前點和 終點之間的距離,并決定它的搜索方向,估價函數的選擇會直接影響算法的效率.本文使用的估價函數為?F = G + H = i.Distance + math. sqrt((self.EndX – i.x) * (self.EndX - i.x) + (self. EndY - i.y)*(self.EndY - i.y)) * 1.2。??

    • 反思

  • 避障沒有進行;
  • 深度對話識別效果不佳,需結合科大訊飛、百度語音識別、圖靈機器人等改進;
  • 心態放平,循序漸進,看論文重在質不在量;
  • 總結

    以上是生活随笔為你收集整理的NAO学习第二周——NAOqi Audio的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。