【WEB前端2024】3D智體編程:喬布斯3D紀念館-第54課-poplang語音編程控制機器人

【WEB前端2024】3D智體編程:喬布斯3D紀念館-第54課-poplang語音編程控制機器人

使用dtns.network德塔世界(開源的智體世界引擎),策劃和設計《喬布斯超大型的開源3D紀念館》的系列教程。dtns.network是一款主要由JavaScript編寫的智體世界引擎(內嵌了three.js編輯器的定制版-支持以第一視角瀏覽3D場館),可以在瀏覽器和node.js、deno、electron上運行,它是一個跨平臺的軟件,支持多個操作系統使用!并且支持使用內置的poplang智體編程語言實現3D組件的智能化編程——語法超簡單,一句話語法,人人輕松上手!

下面分為幾步介紹,如何基于dtns.network智體世界引擎實現語音編程控制機器人。通過語音識別的agent發出poplang編程指令,從而實現了真實場景下的人類語言口述指令編程機器人,從而實現控制。這使得普通人也可以通過3D輕應用實現語音編程控制機器人,大大拓展了機器人的應用范圍和降低了使用門檻,使得普通人也可以參與到機器人的語音編程控制中。結合現在流行的AGI通用人工智能可實現具身智能或使用大語言模型實現生成式人工智能控制代碼,從而使機器人的使用更加靈活多變,滿足普通人使用機器人的場景需要。

為了實現機器人的語音編程控制機器人,通過瀏覽器使用artyom.js庫實現語音識別并通過dtns-api的實時頻道通知到3d輕應用中(onRobotEvent接收實時頻道傳遞過來的消費)。從而使得語音編程指令直達機器人控制端,可通過語音執行任意的poplang代碼(即語音編程控制機器人)

第一步:打開頭榜頁面,找到3D紀念館xverse輕應用

1.png

注:找到標題為“poplang語音編程”的xverse輕應用。

第二步:點擊右上角…進入頭榜編輯器

2.png

注:因為每一個xverse輕應用均是以xverse.json的方式進行源碼級應用的分享的。故每一個社區用戶均可通過編輯xverse輕應用源碼來實現DIY和定制。

第三步:點擊正面的“編輯xverse輕應用源碼”,進入3D場館編輯器

3.png

注:點擊3D場景中間的avatar的3D對象,在右側的屬性面板中找到腳本-編輯。

第四步:編輯avatar玩家3D組件的poplang代碼

4.png

注:首先使用了ib3.event.bus.on rtrobot-channel onRobotEvent實現了實時語音指令的接收(在onRobotEvent中完成了語音指令的判斷,如果不是默認的dance指令;則直接執行中英文的poplang指令——poplang的任意指令均可通過語音輸入來完成——即poplang的語音編程控制機器人)。

第五步:點擊頂部菜單“文件”推送頭榜(作品),將此3D紀念館以xverse輕應用方式分享給其他用戶

5.png

第六步:將新的頭榜標題設置為“poplang語音編程”,點擊右上角確認完成頭榜發布

6.png

注:標題為xmsg,不能誤刪除“”雙引號,否則會發布失敗——僅修改xmsg屬性的文字內容即可。

第七步:找到剛發布的xverse輕應用頭榜,點擊進入3D場景瀏覽器

7.png

注:輕輕一點擊,即可進入體驗剛發布好的xverse-3D輕應用(智體應用),我們相當于可以無限地分享和裂變這個開源的3D輕應用(智體應用)。這樣大家便可以按自己的需求,輕松的修改和定制這些動畫的源碼模板了。可以形成自己的故事、自己的動畫、自己的3D場館、自己的3D互動劇情等等。隨心所欲地發揮,所以智體世界、智體OS也相當于【元宇宙】【開放世界】!

第八步:進入3D輕應用后,我們首先開始與機器人實現視頻的實時連接(然后通過打開的audio_cmd.html進行實時的poplang語音編程控制——agent控制端)

8.png

注:我們連接上了機器人實時畫面(如上圖所示)

我們通過電腦麥克風輸入“執行指令move”,即機器人往前移動(如下圖所示)

9.png

注:移動的過程會使得機器人頭部變低——有一個往前的驅動力!

繼續輸入語音指令:執行指令right(如下圖所示)

10.png

注:機器人完成了右轉的right指令(即調用了poplang智體編程3D模塊中的right自定義函數——使用pop.func.define right實現定義)

我們看一下audio_cmd.html的代碼

11.png

注:從上圖可看到,通過判斷是否有執行指令的提示語,進行poplang代碼的指令分割,從而獲取到了真正的poplang指令代碼。通過dtna-pi:dtns://web3:avrdev/rtchannel/send給訂閱的頻道rtrobot-channel機器人指令通道發送實時的poplang語音編程控制機器人的指令。

通過上8步,我們成功完成了通過3D輕應用中實現了popalng語音編程,這大大增強了在真實場景下的復雜機器人控制功能。并有機會結合AGI通用人工智能和大語言模型,實現復雜多樣的真實場景的人與機器人的配合工作。從而為人類增加上強大的智體agent助手!

我們也看到了poplang智體編程語言的強大能量,一兩行簡單的指令,即可完成復雜的3D互動的交互效果、音效效果的開發。并且通過xverse-json源文件(3D輕應用)的方式進行社區分享,使得開源開放、公開透明的3D場館的設計,能被大家更多的學習和繼承,達到互動學習、互動成長的目的。這也是智體OS、智體互動式教育-學習的目標。

注:dtns.network德塔世界(開源的智體世界引擎)是在github和gitee上開源的項目!

附錄(poplang智體代碼——實現poplang語音編程):

pop.func.define 3d_move= event 3d_move_eventobject.get event.turn turnobject.get event.forward forward$.Math.abs turn= aturn $ret$.Math.abs forward= aforward $ret< aforward aturn turnflagpop.ifelse turnflag turnNow goNowpop.func.endpop.func.define turnNowset z 0> turn z leftFlagpop.ifelse leftFlag left rightpop.func.endpop.func.define goNowset z 0> forward z goFlagpop.ifelse goFlag move backpop.func.endpop.func.define left/rtphone/robot/action?action=leftset tips 左轉#$.g_2d_voice_play tipspop.func.endpop.func.define right/rtphone/robot/action?action=rightset tips 右轉#$.g_2d_voice_play tipspop.func.endpop.func.define move/rtphone/robot/action?action=moveset tips 前進#$.g_2d_voice_play tipspop.func.endpop.func.define back/rtphone/robot/action?action=backset tips 后退#$.g_2d_voice_play tipspop.func.end#alias left 左轉#alias right 右轉#alias back 后退#alias move 前進set chatid msg_chat02G7TLu59Tzs$.g_3d_show_rtcchat chatid#訂閱capture事件pop.func.define onEvent= data $event_dataobject.get data.base64 base64$.g_2d_pose_find base64= cret $retobject.get cret.w wobject.get cret.h hobject.get cret.pose.keypoints pointsobject.get cret.pose.score scoreset i 0+ i i iset iw 9+ iw i iwarray.get points i nosearray.get points iw leftWristset leftr 0.33set rightr 0.66set scoreMin 0.2* w leftr leftw* w rightr rightw* h leftr tophobject.get nose.position.x npxobject.get nose.position.y npyobject.get leftWrist.position.y wpyobject.get leftWrist.score ws< wpy npy backok< npx leftw leftok> npx rightw rightok< npy h moveok> score scoreMin sok> ws scoreMin wsok&& backok wsok backok! backok notbackpop.ifelse backok back&& sok notback sok&& leftok sok leftok&& rightok sok rightok&& moveok sok moveokpop.ifelse leftok right donothingpop.ifelse rightok left donothing|| leftok rightok turnok! turnok notturn&& notturn moveok moveok&& moveok sok moveokpop.ifelse moveok move donothingpop.func.endib3.event.bus.on rtcchat_capture onEvent$.g_2d_rtcchat_capture_startpop.func.define 3d_stopib3.event.bus.remove rtcchat_capture$.g_2d_rtcchat_capture_stop#機器人頻道/rtchannel/unfocus?channel=rtrobot-channelib3.event.bus.remove rtrobot-channelpop.func.end/rtchannel/create?channel=rtrobot-channel/rtchannel/focus?channel=rtrobot-channelpop.func.define onRobotEvent= data $event_dataobject.get data.notify_type notify_typeset xtype dance== notify_type xtype xflagpop.ifelse xflag dance doNoset xtype dance_xf== notify_type xtype xflag2pop.ifelse xflag dance_xf doNo|| xflag xflag2 xall#執行語音指令(poplang語音編程)pop.ifelse xall doNo @notify_typepop.func.endib3.event.bus.on rtrobot-channel onRobotEventpop.func.define danceset step 500movepop.sleep stepmovepop.sleep stepbackpop.sleep stepbackpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepleftpop.sleep stepmovepop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepmovepop.sleep stepmovepop.sleep stepbackpop.func.endpop.func.define dance_xfset stepmovepop.sleep stepmovepop.sleep stepbackpop.sleep stepbackpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepleftpop.sleep stepmovepop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep stepleftpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep steprightpop.sleep stepleftpop.sleep stepmovepop.sleep stepmovepop.sleep stepbackpop.func.end

poplang的語音編程代碼到此結束。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42344.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42344.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【TORCH】神經網絡權重初始化和loss為inf

文章目錄 數據輸入范圍和權重初始化數據范圍對權重初始化的影響示例代碼輸入數據標準化 說明其他注意事項 常見初始化方法常見的權重初始化方法示例代碼說明 模型默認初始化方法&#xff0c;會不會導致Loss為inf示例說明初始化權重導致 Loss 為 inf避免 Loss 為 inf 的建議示例…

SQL 對一個經常有數據更新和刪除操作的表,怎樣優化以減少磁盤空間的占用?

文章目錄 一、定期清理不再需要的數據二、使用合適的數據類型三、壓縮數據四、刪除重復數據五、分區表六、索引優化七、碎片整理八、歸檔歷史數據九、監控和評估 在數據庫管理中&#xff0c;當面對一個經常進行數據更新和刪除操作的表時&#xff0c;磁盤空間的有效利用是一個重…

Pogo-DroneCANPWM模塊:可實現DroneCAN轉PWM,DroneCAN轉dshot,DroneCAN轉bdshot

關鍵詞&#xff1a;Ardupilot&#xff0c;Pixhawk&#xff0c;PWM&#xff0c;dshot&#xff0c;bdshot&#xff0c;DroneCANPWM&#xff0c;電調ESC&#xff0c;DroneCAN&#xff0c;UAVCAN&#xff0c;飛控&#xff0c;無人機&#xff0c;UAV Keywords&#xff1a;Ardupilot…

MSPM0G3507——OPENMV給M0傳數據(用數據包)互相通信(以循跡為例)

OPENMV端代碼 # main.py -- put your code here! import pyb, sensor, image, math, time from pyb import UART import ustruct from image import SEARCH_DS, SEARCH_EX import time import sensor, displayuart UART(3, 115200, bits8, parityNone, stop1, timeout_char10…

Scikit-learn高級教程:深入理解機器學習算法

目錄 引言Scikit-learn概述 什么是Scikit-learnScikit-learn的主要功能安裝和導入 數據預處理 數據加載數據清洗特征工程數據歸一化與標準化 監督學習算法 線性回歸邏輯回歸支持向量機決策樹與隨機森林k-近鄰算法樸素貝葉斯 無監督學習算法 K-means聚類層次聚類主成分分析&…

使用Redis進行分布式鎖時需要注意哪些問題?Redis分布式鎖的常見實現方式有哪些?

使用 Redis 進行分布式鎖時需要注意以下幾個問題&#xff1a; 鎖的過期時間設置&#xff1a;要合理設置鎖的過期時間&#xff0c;避免鎖因持有進程崩潰或網絡延遲等原因無法釋放&#xff0c;導致死鎖。原子性操作&#xff1a;獲取鎖和設置過期時間的操作需要保證原子性&#x…

C語言 猜測乒乓球隊比賽名單

兩個乒乓球隊進行比賽&#xff0c;各出三人&#xff0c;甲隊為A&#xff0c;B&#xff0c;C三人&#xff0c;乙隊為X &#xff0c;Y &#xff0c;Z三人&#xff0c;已抽簽決定比賽名單&#xff0c;有人向隊員打聽比賽的名單&#xff0c;A說他不和X比&#xff0c; C說他不和X&am…

計算機網絡性能指標概述:速率、帶寬、時延等

在計算機網絡中&#xff0c;性能指標是衡量網絡效率和質量的重要參數。本文將綜合三篇關于計算機網絡性能指標的文章&#xff0c;詳細介紹速率、帶寬、吞吐量、時延、時延帶寬積、往返時延&#xff08;RTT&#xff09; 和利用率的概念及其在網絡中的應用。 1. 速率&#xff08;…

開源六軸協作機械臂myCobot280實現交互式乘法!讓學習充滿樂趣

本文經作者Fumitaka Kimizuka 授權我們翻譯和轉載。 原文鏈接&#xff1a;myCobotに「頷き」「首振り」「首傾げ」をしてもらう &#x1f916; - みかづきブログ?カスタム 引言 Fumitaka Kimizuka 創造了一個乘法表系統&#xff0c;幫助他的女兒享受學習乘法表的樂趣。她可以…

大語言模型基礎

大語言基礎 GPT : Improving Language Understanding by Generative Pre-Training 提出背景 從原始文本中有效學習的能力對于減輕自然語言處理中對監督學習的依賴至關重要。很多深度學習方法需要大量人工標注的數據&#xff0c;限制了它們在很多領域的應用&#xff0c;收集更…

cs231n作業2 雙層神經網絡

雙層神經網絡 我們選用ReLU函數和softmax函數&#xff1a; 步驟&#xff1a; 1、LOSS損失函數&#xff08;前向傳播&#xff09;與梯度&#xff08;后向傳播&#xff09;計算 Forward: 計算score&#xff0c;再根據score計算loss Backward&#xff1a;分別對W2、b2、W1、b1求…

學懂C#編程:WPF應用開發系列——WPF之ComboBox控件的詳細用法

WPF&#xff08;Windows Presentation Foundation&#xff09;中的ComboBox控件是一個下拉列表控件&#xff0c;允許用戶從一組預定義的選項中選擇一個選項。以下是ComboBox控件的詳細用法&#xff0c;并附帶示例說明。 ComboBox的基本用法 1. XAML定義&#xff1a; 在XAML中…

multisim中關于74ls192n和DSWPK開關仿真圖分析(減法計數器)

&#x1f3c6;本文收錄于「Bug調優」專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&&…

直播預告 | VMware大規模遷移實戰,HyperMotion助力業務高效遷移

2006年核高基專項啟動&#xff0c;2022年國家79號文件要求2027年央國企100%完成信創改造……國家一系列信創改造政策的推動&#xff0c;讓服務器虛擬化軟件巨頭VMware在中國的市場份額迅速縮水。 加之VMware永久授權的取消和部分軟件組件銷售策略的變更&#xff0c;導致VMware…

開發一個HTTP模塊

開發一個HTTP模塊 HTTP模塊的數據結構ngx_module_t模塊的數據結構ngx_http_module_t數據結構ngx_command_s 數據結構 定義一個HTTP模塊處理用戶請求返回值獲取URI和參數方法名URIURL協議版本 獲取HTTP頭獲取HTTP包體 發送響應發送HTTP頭發送內存中的字符串作為包體返回一個Hell…

什么時候考慮將mysql數據遷移到ES?

文章目錄 對ES的一些疑問問題1:ES相比mysql本身有哪些優勢&#xff1f;問題2:哪些場景適合用ES而不是mysql&#xff1f;問題3:mysql逐行掃描&#xff0c;根據過濾條件檢查記錄中對應字段是否滿足要求屬于正排索引&#xff0c;根據二叉樹索引檢索記錄的方式屬于正排索引還是倒排…

SpringBoot整合DataX數據同步(自動生成job文件)

SpringBoot整合Datax數據同步 文章目錄 SpringBoot整合Datax數據同步1.簡介設計理念 DataX3.0框架設計DataX3.0核心架構核心模塊介紹DataX調度流程 2.DataX3.0插件體系3.數據同步1.編寫job的json文件2.進入bin目錄下&#xff0c;執行文件 4.SpringBoot整合DataX生成Job文件并執…

生產力工具|VS Code安裝及使用指南

一、VS Code介紹 &#xff08;一&#xff09;軟件介紹 Visual Studio Code&#xff08;簡稱VS Code&#xff09;是由Microsoft開發的免費開源代碼編輯器&#xff0c;適用于Windows、macOS和Linux操作系統。它支持多種編程語言&#xff0c;如JavaScript、Python、C等&#xff0…

知識社區在線提問小程序模板源碼

藍色的知識問答&#xff0c;問答交流&#xff0c;知識社區&#xff0c;在線提問手機app小程序網頁模板。包含&#xff1a;社區主頁、提問、我的、綁定手機&#xff0c;實名認證等。 知識社區在線提問小程序模板源碼

ubuntu 檢查硬盤的通電時長、健康度

ubuntu 檢查硬盤的通電時長、健康度 在Ubuntu系統中&#xff0c;檢查硬盤的通電時長和健康度通常需要使用SMART&#xff08;Self-Monitoring, Analysis, and Reporting Technology&#xff09;工具。SMART是硬盤制造商內置的一套硬盤保護技術&#xff0c;用于監控硬盤的健康狀況…