nao編程控制方式:
使用Choregraphe編程 在電腦上運行python(C++)文件遠程控制 在nao上運行python(C++)文件本地控制
一.使用Choregraphe
此方法是建立指令盒(參考手冊),舉例說明建立一個設置關節角度(控制關節移動)的指令盒,新建腳本指令盒,編輯名字,提示,輸入輸出點,還有參數
輸入點:可添加多個輸入點,每個輸入點都會在腳本文件中創建相應的方法,腳本文件中方法的名字和設置輸入點時的Name相對應,如默認輸入點名字onStart,在腳本文件中對應的會產生 如下方法:當此輸入點被激活是,會執行此方法中的語句
def onInput_onStart(self):
當此輸入點被激活是,會執行此方法中的語句
輸出點:輸出點我理解的輸出點就是設置一個輸出點的名字,然後在腳本中可編程實現輸出,如設置輸出點的名字Output,在腳本中可使用
self.Output(datetime.datetime.now())
來輸出,此輸出內容可直觀的看到,也可傳送到下一級的輸入端,到此,兩個指令盒就可以連在一起了
參數:此參數可在作爲一種輸入方式,操作指令盒是會在指令盒左下角顯示一個‘扳手’小圖標,點開之後可以選擇要輸入的參數,此參數有整數和浮點數型(可調整最大值與最小值),還有一種參數類型——附加文件,此類型可傳入一個文件類型的數據,比如保存有角度數據的txt文件,音樂文件等,參數使用方式:
整型、浮點型:
self.getParameter("設置的參數名字")
得到的就是想要的整數或者浮點數
附件文件:ALFrameManager.getBehaviorPath(self.behaviorId) + self.getParameter("設置的參數名字")
這一行語句可得到文件的路徑,然後使用python中的open函數打開即可操作
輸入輸出點都有多種形式:數字、字符串、激活、動態,其中動態我理解的是無論輸入的是什麼信號,都能接收到,可動態匹配,至於激活就好像是脈衝一樣,來一個輸入就能用,但是具體能不能接收數子和字符串我也沒做實驗,數字和字符串就很好理解了,做指令盒連接時,輸入輸出最好相對應
具體操作過程如下:
1.在Flow diagram Panel中右鍵,添加一個新指令盒
2.輸入名稱、提示、選擇輸入點,輸出點,以及參數
3.雙擊指令盒打開腳本編輯器,程序編寫:
加載naoqi模塊:
def onLoad(self):
self.dcm = ALProxy("DCM")
self.tts=ALProxy('ALTextToSpeech')
self.motionProxy=ALProxy("ALMotion")
#~ puts code for box initialization here
pass
在onLoad方法中加載模塊
加載python模塊:
import time
import almath
import datetime
class MyClass(GeneratedClass):
在腳本編輯最開始的地方,類之外導入python帶的模塊
功能實現:
def onInput_onStart(self):
self.tts.say('Hello')
self.motionProxy.setStiffnesses('RShoulderPitch',1)
self.motionProxy.setAngles('RShoulderPitch',-100*almath.TO_RAD,10*almath.TO_RAD/8.267973899841309)
在onInput_onStart方法中添加實現功能的代碼
讀取參數的方法如上設置
輸出參數的方法如上設置
4.保存指令盒,可直接拖動指令盒到指令盒庫進行保存,此處可新建一個自己的指令盒庫,新建方法:點擊工具欄中的‘指令盒庫’選項進行新建保存即可
5.連接指令盒,從系統onStart點(Flow diagram Panel左上角,黑色的小三角)連線到指令盒的輸入點,指令盒的輸出點連或者不連下一級設備都可執行
6.點擊播放即可執行相應的動作
7.可將此行爲裝載機器人中,具體操作可參考使用手冊中行爲管理的使用方法
二、遠程控制
在本地編輯python程序,使用遠程控制方式,具體的編程方法手冊中說的很詳細
三、本地模式
編程方式和遠程控制相同,只是要把文件放到nao中,並把IP地址改成‘127.0.0.1’
將文件拷入nao中,終端使用命令:
scp '本地電腦文件路徑' nao@IP:/home 前面是本地文件的路徑,後面是要放入nao中的路徑
拷出時將路徑交換位置即可,若執行不了可使用scp -r 命令執行
登錄naoqi:
ssh nao@IP
以上基本都是在初學是使用過的,還有許多功能尚未使用,也可能有不對的