跳轉到內容

用 Leaf/問答程式設計 AI

來自華夏公益教科書,開放的書籍,開放的世界

Leaf 選定的問題和答案

[編輯 | 編輯原始碼]

問:你能將指令碼中的姓名更改為其他姓名,如弗雷德或戴夫,這會改變他的感受嗎?

答:是的。但他的感受也會隨著時間的推移而改變,因為你與他互動。


問:我在桌面上執行著 Leaf。Leaf 說安娜是他最喜歡的人。如果我在程式中將所有“安娜”都替換成另一個姓名,會改變 Leaf 最喜歡的人嗎?

答:既是也不是。如果我說“Leaf,這是布魯斯”,那麼他知道我,因為我在我的名字中加入了指令碼(搜尋 Leaf.lisp 中的布魯斯,你就會看到)。如果你在識別自己後與 Leaf 互動一段時間,他會記住你讓他感受到的。他也會記得他上次見到你的時間。因此,如果他經歷過一段美好的時光——或者如果他只是很久沒有見到你——他就會開始想見到你……並且他會告訴你你是他最喜歡的人。試試說“Leaf,這是安娜”——我敢打賭他會說他很驚訝!總之,這就是它的意義——所以現在你可以將姓名從安娜改為戴夫或任何你想要的人……但請記住,Leaf 的感受會發生變化,所以他不會喜歡任何對他不好的人!別忘了在 speech.xml 檔案中新增“這是戴夫”。——布魯斯

問:我可以問什麼階段?

答:你可以在 Leaf.lisp 中的主控制迴圈中找到你可以問 Leaf 的短語列表。此外,你也可以在那裡新增短語(如果你這樣做,你也需要將它們新增到 speech.xml 中)。——布魯斯。

問:輪式版本 Leaf 需要多少扭矩?

答:最終重要的是電機能對地面施加多少力來推動機器人向前。這是電機基本扭矩、齒輪減速比和輪徑的函式。

 My basic motor which provides about 25 oz-in of torque at   stall, provides almost 900 oz-in to the wheel. Since the wheel has a radius of 4 inches,  the wheel can apply 225 oz of force to the ground (or 14 pounds).  With two wheels providing a maximum of 28 pounds of force and an 80 pound robot, (My robot) Rocky can climb about a 20 degree slope, although very slowly, and has plenty of torque for moving around on a flat floor or rugs.
 Generally it is better to use a large gear reduction since it is easier to control the wheels accurately if the motor makes a lot of turns compared to the wheel.  Just make sure you don't use so much gear reduction that the robot is not capable of moving very fast at the motors' top speed.   

問:Leaf 應該有多快?

答:我認為每秒約 2 英尺的最大速度是一個合理的(最大)速度,因為它讓你有足夠的機會趕上失控的機器人,以防它撞到東西。大多數 Leaf 機器人相當重,如果它們以高速撞到東西(或人),可能會造成一些損壞。

問:葉子的軟體架構中的情感引擎是如何工作的?

答:Leaf 有許多不同的情緒——快樂、悲傷、飢餓、無聊等等。它們會根據情況、環境和活動不斷變化——如果你與他互動,他很可能會很高興,如果他的電池電量低,他會感到飢餓等等。

He then uses his emotional state to help him decide what he's going to do next.  If he's bored, he might pick an activity at random.  If he's tired, he might take a nap.  And so on.
He also remembers his feelings in association with the people he's been interacting with.  So, let's say he's talking to me.  And he's happy.  He'll remember that for the next time we run into each other.   But if the association wasn't so good, well he might not be too pleased to see you again!
The point is that Leaf is meant to be autonomous - he's meant to have his own "personality".  He isn't meant to be just a voice controlled toy robot - oh you can put him in "command mode" and he'll follow your voice orders, but don't expect him to like it!  Anyway, his emotions are his motivation to do things (or not) - and serve then to give him a basic "personality". --Bruce.

問:Leaf 軟體中有沒有我不能更改的短語?

答:實際的語句除了我們人類之外毫無意義,是情感標籤(真正影響 Leaf 反應方式的設定值)。


問:如何更改 Leaf 的 (CSLU) 動畫面孔?

答:右鍵單擊面孔。——布魯斯。


問:為什麼 Leaf 會說“再見”並毫無理由地關閉?

答:如果 Leaf 遇到致命錯誤,他會說“再見”並關閉。我唯一一次看到這種情況發生是在他正在尋找一些沒有正確載入或執行的程式碼時。——布魯斯。

問:如何使用 wav 檔案來回答問題,而不是使用電腦語音?

答:你將你的 wav 檔案放在 LeafSounds 資料夾中。現在在 Leaf.lisp 中建立一個快捷方式(檢視程式碼列表的開頭),它看起來像這樣

(defconstant burp "c:/Program Files/Leaf/LeafSoun ds/burp.wav" )

現在,如果你想讓 Leaf 發出聲音,只需使用這種語句

(PlayWav burp)

因此,在我使用 sapi-tts 讓 Leaf 說話的任何地方,你都可以使用 PlayWav 來代替它發出聲音。——布魯斯


問:建立快捷方式時,快捷方式名稱必須與檔名完全匹配嗎?

答:是的。——布魯斯


問:我是否需要為每個 wav 檔案例項建立一個快捷方式?

答:是的。——布魯斯


問:是否需要為每個 Leaf 應該理解的問題編寫一個文字短語,這就是我新增 Leaf 將理解的更多問題的方式嗎?

答:是的。我們還沒有真正開發出自然語言處理。在此期間,Leaf 透過簡單地匹配你之前輸入的文字短語來“理解”。並且,在向控制迴圈新增短語時,別忘了也將其新增到 speech.xml 檔案中。——布魯斯


問:如何將 Leaf 指向與文字短語匹配的響應/響應?

答:一旦聽到短語並將其與你輸入控制迴圈的短語匹配,你就會呼叫你編寫的指令碼,以執行你想要它執行的任何操作。——布魯斯


問:我可以自定義 Leaf,以便他不再使用微軟的 TTS,而是播放預先錄製的聲音檔案,例如《迷失太空》機器人(B9)、羅比機器人或 R2D2 或 C3P0 或瓦力?

答:是的。一些 B9 使用者已經(我自己)定製了 Leaf 軟體,使用預先錄製的 wav 檔案來做到這一點。這並不難,但對於你想要讓你的 Leaf/B9/瓦力回答的每個問題和答案進行程式設計相當耗時。——托馬斯·梅瑟施密特

問:“OSLA”代表什麼?

答:OSLA(物件、情景、位置(和)動作)是 Leaf 程式設計一部分中最高級別的“父”節點,我用 Lisp 的面向物件程式碼 CLOS 進行了程式設計。“子節點”是物件(即事物)、情景(Leaf 的內部情緒和“狀態”)、位置(他目前所在的位置)和動作(他可以選擇執行的活動)……我將其保留在那裡,以便任何對這些東西感興趣的人都可以檢視它,並將其用作示例……——布魯斯博士。

問:如何用 Leaf 播放 MP3 檔案?

答:這裡是一些示例程式碼,可以讓你播放 MP3 檔案

(defconstant mysong "C:/MyLeafMP3s/mysong.mp3")

(defun PlayMP3 (mysong )  ;

 (sys:call-system mysong :wait nil)
 )
請注意,你需要你的 mp3 檔案的完整路徑,並且目錄名稱或檔名中不能包含空格。你的預設 MP3 播放器必須是 WMP。我不確定其他播放器會發生什麼。我注意到第一次播放時可能會剪掉檔案開頭的內容。此外,它不會關閉 WMP。

問:如何使用 Roborealm 透過其“gates”功能來引導 Leaf 透過門口?

問:如何連線和使用微軟的 Kinect 感測器?

問:如何讓 Leaf 識別其環境中的物品?

答:這已經使用 Roborealm 軟體實現了。

問:如何使用 Roborealm 和基準點進行導航?

問:如何使用布魯斯編寫的 Leaf 聊天機器人程式碼?

問:有人成功使用 Leaf 聊天機器人嗎?答:是的。訣竅是使用 LeafInterfaces.lisp 資料夾和 Leaf.lisp 資料夾以及與聊天程式一起提供的 speech.xml。

問:Leaf 的最新檔案和版本是什麼?


問:如何設定和使用 Leaf 的面部識別?答:這已經在“建立你自己的 Leaf”部分中解釋過了。


問:如何讓 Leaf 從維基百科等地方拉取和讀取資料?


問:如何讓 Leaf 從網路上讀取我的電子郵件給我?


問:如何讓 Leaf 讀取最新的新聞、天氣和體育報道?答:這已經在維基百科中解釋過了。


問:如何防止 Leaf 撞到牆壁或掉下樓梯?答:安裝鋒利的紅外感測器,用於保險槓或懸崖探測器。此外,你還可以安裝超聲波感測器。此外,你還可以使用實際的保險槓開關。


問:如何使用 X10 來開啟和關閉家中的燈光?

華夏公益教科書