NuwaUnity

###Feature list:

Unity / Android版本

Unity version 2018.4.0 later android SDK Min version : 6.0

DemoScene使用

匯入NuwaPlugins的UnityPackage後,把NuwaUnity\Scene 資料夾下的所有Scene加入Build setting中,並把Demo_title放在首位即可。

How to use

在Editor中使用addComponent加入NuwaEventTrigger.cs後即可使用。目前無法在執行期間使用addComponent掛載。

 

動作播放(Motion)

在Demo_motion_play Scene中可以看到動作播放功能。

1.播放動作 - Nuwa要有對應的動作檔名才能正確撥放動作

想要撥放指定路徑的motion的話可以使用

這樣想要撥放 "/storage/emulated/0/Download/assets/motion_bin/" 中的motion檔名的話

motion_bin_path 設定成 : "/storage/emulated/0/Download" 即可

2.停止播放動作

3.暫停動作

4.從暫停處重新撥放


控制臉(Control Face)

關於應用程式控制臉的用法,可參考範例Demo_ContorlFace。開啟臉後,如果要離開應用程式,務必關閉臉跟調整臉的大小,否則會影響凱比表情的正常運作。

  1. 顯示臉
  1. 關閉臉
  1. 開啟嘴巴
  1. 關閉嘴巴
  1. 播放表情加動作
  1. 更改臉的位置與大小

觸碰(Touch)

在Demo_touch Scene 可以看到對觸控的反應。

以下是TouchBegin,TouchEnd,Tap,LongPress的接收Event方式

注意!在接收從Android端傳過來的Event時更新UI會出現Error(error狀況 : 無法在非Main Thread的狀況下更新Monobehavior的內容),要更新UI或是Transform的東西的話需要放在Update中處理。


馬達轉動(Motor)

在Demon_motor Scene 中可以看到控制指定馬達的轉動位置, 程式碼在MotorMain.cs中

1.取得指定目標的馬達角度

2.設定指定目標的馬達角度


燈光控制(LED)

在Demo_LED Scene中可以讓UnityApp控制機器人的LED。呼叫此功能,機器人上的LED都會被應用程式控制。

1.設定APP控制燈

2.關閉設定自由控制燈

3.讓燈有呼吸效果


語音播放(TTS)

在Demo_tts Scene中可以使用字串來撥放TTS語音, 支援中、英文。

1.播放tts

2.停止播放tts

3.暫停播放tts

4.恢復播放tts

5.設定TTs撥放時的的Speed,Pitch,


聲音辨識(speech recognition)

LocalCommand

在Demo_LocalCommand Scene中。接收命令,判斷接收到的內容後再做處理。只支援中文。

1.設定Grammar需要的名稱跟值

2.界接Event

3.Grammar完成設定後,開始聲音辨識。

收到的Json格式如下,resoult為聽到的聲音字串。

如果回來的json檔案為空的話代表沒有辨識到要求輸入的內容。

MixUnderstand

在Demo_MixUnderstand Scene中。接收命令,判斷接收到的內容後再做處理。目前支援中文、英文、韓文、日文。

1.界接Event


2.設定Grammar需要的名稱跟值


3.Grammar完成設定後,開始聲音辨識。

收到的結果有兩種,ResultType分別為LOCAL_COMMAND、UNDERSTAND。
LOCAL_COMMAND的Json格式如下:

UNDERSTAND的Json格式如下:


語音轉文字(Speed2Text)

在Demo_Speed2Text Scene中,把收到的語音轉成文字,支援中文。

1.介接Event

2.呼叫SpeechToText

回傳的字串為純文字,直接使用即可。

另外,此功能需要網路連線。假如機器人目前的系統時間沒跟目前所在地區時區相同的話,很有可能會出現回傳回來字串為空的狀態。這點要特別注意。



物件辨識(Recognize)

在Demo_Recognize Scene中,讓機器人可以辨識物件。

  1. 接收連線成功的event
  1. 發送辨識需求
  1. 接收傳回來的資料後,把陣列中的data[i].dataSets[j].title的資料撈出來處理

data[i].dataset[j]的資料大致上會如下,抓title中的資料即可。



人臉追蹤(Face_track)

在Demo_Facetrack中,讓機器人追蹤人臉的位置。

  1. 註冊人臉追鐘的Event
  1. 發送辨識需求。等待初始辨識完畢約2~3秒後,就會到3.
  1. 接收傳回來的data資料並做設定

回來的數據大致如下

人臉辨識(Face_Recognize)

讓機器人可以辨識眼前的使用者是誰, 程式在Demo_FaceRecognize中。可以先使用新增家人來先行加入要辨識的使用者。

  1. 註冊人臉辨識的Event
  1. 發送辨識需求
  1. 接收傳回來的data資料並抓取,就可以確認目前在Camera面前的是哪個用戶。-1為沒有被新增家人的使用者。

移動/旋轉(Movement)

讓機器人可以前後移動以及旋轉。方式有直接設定值做移動/旋轉,或是線性加速的方式做移動/旋轉。 另外,此功能需要解除移動鎖定才能呼叫使用。另外、幫機器人充電時,機器人會自動設定移動鎖定。


下面為解除輪子的移動鎖定/移動鎖定的程式。


移動,值介於-0.2~0.2間。需要停止移動的時候設定0即可

線性加速移動(前進)

線性加速移動(後退)

停止線性加速移動。此function只能停止線性加速的移動,無法停止由SetMove()呼叫的移動。


旋轉 , 值介於-20~20, 需要停止旋轉的時候設定0即可

向左線性加速旋轉

向右線性加速旋轉

停止線性加速旋轉。此Function只能停止線性加速旋轉的部分,無法停止由setTurn()呼叫的移動。

還有,當處於線性加速移動/旋轉時強制鎖定輪子、並且在解除鎖定後再使用相反的線性加入移動,機器人會先維持之前的線釁加速移動方式,才會漸漸變成要做的相反移動方式。