【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_event

object.get event.turn turn

object.get event.forward forward

$.Math.abs turn

= aturn $ret

$.Math.abs forward

= aforward $ret

< aforward aturn turnflag

pop.ifelse turnflag turnNow goNow

pop.func.end

 

pop.func.define turnNow

 

set z 0

> turn z leftFlag

pop.ifelse leftFlag left right

 

pop.func.end

 

pop.func.define goNow

set z 0

> forward z goFlag

pop.ifelse goFlag move back

pop.func.end

 

 

pop.func.define left

/rtphone/robot/action?action=left

set tips 左转

#$.g_2d_voice_play tips

pop.func.end

 

pop.func.define right

/rtphone/robot/action?action=right

set tips 右转

#$.g_2d_voice_play tips

pop.func.end

 

pop.func.define move

/rtphone/robot/action?action=move

set tips 前进

#$.g_2d_voice_play tips

pop.func.end

 

pop.func.define back

/rtphone/robot/action?action=back

set tips 后退

#$.g_2d_voice_play tips

pop.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_data

object.get data.base64 base64

$.g_2d_pose_find base64

= cret $ret

object.get cret.w w

object.get cret.h h

object.get cret.pose.keypoints points

object.get cret.pose.score score

set i 0

+ i i i

set iw 9

+ iw i iw

    array.get points i nose

array.get points iw leftWrist

set leftr 0.33

set rightr 0.66

set scoreMin 0.2

    * w leftr leftw

* w rightr rightw

    * h leftr toph

    object.get nose.position.x npx

object.get nose.position.y npy

    object.get leftWrist.position.y wpy

object.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 notback

    pop.ifelse backok back

    && sok notback sok

    && leftok sok leftok

    && rightok sok rightok

    && moveok sok moveok

pop.ifelse leftok right donothing

    pop.ifelse rightok left donothing

    || leftok rightok turnok

    ! turnok notturn

    && notturn moveok moveok

    && moveok sok moveok

    pop.ifelse moveok move donothing

pop.func.end

 

ib3.event.bus.on rtcchat_capture onEvent

$.g_2d_rtcchat_capture_start

 

pop.func.define 3d_stop

ib3.event.bus.remove rtcchat_capture

$.g_2d_rtcchat_capture_stop

#机器人频道

/rtchannel/unfocus?channel=rtrobot-channel

ib3.event.bus.remove rtrobot-channel

pop.func.end

 

/rtchannel/create?channel=rtrobot-channel

/rtchannel/focus?channel=rtrobot-channel

 

pop.func.define onRobotEvent

= data $event_data

object.get data.notify_type notify_type

set xtype dance

== notify_type xtype xflag

pop.ifelse xflag dance doNo

    set xtype dance_xf

    == notify_type xtype xflag2

    pop.ifelse xflag dance_xf doNo

    || xflag xflag2 xall

    #执行语音指令(poplang语音编程)

pop.ifelse xall doNo @notify_type

pop.func.end

 

ib3.event.bus.on rtrobot-channel onRobotEvent

 

 

pop.func.define dance

 

set step 500

move

pop.sleep step

move

pop.sleep step

back

pop.sleep step

back

pop.sleep step

left

pop.sleep step

left

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

left

pop.sleep step

left

pop.sleep step

move

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

left

pop.sleep step

move

pop.sleep step

move

pop.sleep step

back

 

pop.func.end

 

pop.func.define dance_xf

 

set step

move

pop.sleep step

move

pop.sleep step

back

pop.sleep step

back

pop.sleep step

left

pop.sleep step

left

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

left

pop.sleep step

left

pop.sleep step

move

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

left

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

right

pop.sleep step

left

pop.sleep step

move

pop.sleep step

move

pop.sleep step

back

 

pop.func.end

poplang的语音编程代码到此结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/770144.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录——柠檬水找零(Leetcode860)

题目链接 贪心 class Solution {public boolean lemonadeChange(int[] bills) {if(bills[0] 10 || bills[0] 20 || bills[1] 20){return false;}int count5 1;int count10 0;for(int i 1; i < bills.length; i){if(bills[i] 5){count5;}if(bills[i] 10){count10;…

uniapp跨域问题解决

找到menifest文件&#xff0c;在文件的最后添加如下代码&#xff1a; // h5 解决跨域问题"h5":{"devServer": {"proxy": {"/adminapi": {"target": "https://www.demo.com", // 目标访问网址"changeOrigin…

freemarker生成pdf,同时pdf插入页脚,以及数据量大时批量处理

最近公司有个需求&#xff0c;就是想根据一个模板生成一个pdf文档&#xff0c;当即我就想到了freemarker这个远古老东西&#xff0c;毕竟freemarker在模板渲染方面还是非常有优势的。 准备依赖&#xff1a; <dependency><groupId>org.springframework.boot</gr…

大华设备接入GB28181/GAT1400视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤

智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强&#xff0c;支持多协议接入&#xff0c;包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等&#xff0c;并能对外分发RTMP、…

vue H5页面video 视频流自动播放, 解决ios不能自动播放问题

视频组件 <videostyle"width: 100%; height: 100%;object-fit: fill"class"player"refplayer_big_boxcontrolspreloadautoplay //自动播放muted //是否静音playsinline"true"x5-playsinline""webkit-playsinline"tru…

Vanchip新一代WiFi产品全新亮相

1‧ 研讨会介绍 随着 Wi-Fi7 时代的到来&#xff0c;高频信号衰减较高&#xff0c;因此需要外挂 FEM 电路以提高发射信号的增益&#xff0c;从而保障远距离通信的效果和范围。WiFi-FEM 逐渐成为智慧手机、路由器等终端产品中的标配芯片。Vanchip 针对客户的迫切需求&#x…

AI+若依框架(低代码开发)

一、若依介绍 1.版本介绍 若依为满足多样化的开发需求&#xff0c;提供了多个版本 RuoYi-Vue&#xff08;SpringBootVue的单体项目&#xff09; RuoYi-Cloud&#xff08;SpringCloudVue的微服务版本项目&#xff09; RuoYi-App&#xff08;UniappVue移动版本&#xff09; Ru…

Linux_管道通信

目录 一、匿名管道 1、介绍进程间通信 2、理解管道 3、管道通信 4、用户角度看匿名管道 5、内核角度看匿名管道 6、代码实现匿名管道 6.1 创建子进程 6.2 实现通信 7、匿名管道阻塞情况 8、匿名管道的读写原子性 二、命名管道 1、命名管道 1.1 命名管道通信 …

14-4 深入探究小型语言模型 (SLM)

大型语言模型 (LLM) 已经流行了一段时间。最近&#xff0c;小型语言模型 (SLM) 增强了我们处理和使用各种自然语言和编程语言的能力。但是&#xff0c;一些用户查询需要比在通用语言上训练的模型所能提供的更高的准确性和领域知识。此外&#xff0c;还需要定制小型语言模型&…

IDEA:插件和配置推荐(2024版)

文章目录 一、插件1.1 主题1.2 代码缩略图1.3 Maven插件2.4 彩虹括号2.5 翻译插件2.6 图标插件2.7 MyBatis插件2.8 阿里巴巴开发规范 二、全局配置2.1 主题2.2 字符编码2.3 注释颜色2.4 自动导包2.5 鼠标控制界面大小 三、新项目设置3.1 Maven3.2 SDK 四、恢复初始化 一、插件 …

flutter开发实战-Charles抓包设置,dio网络代理

flutter开发实战-Charles抓包设置 在开发过程中抓包&#xff0c;可以看到请求参数等数据&#xff0c;方便分析问题。flutter上使用Charles抓包设置。dio需要设置网络代理。 一、dio设置网络代理 在调试模式下需要抓包调试&#xff0c;所以需要使用代理&#xff0c;并且仅用H…

操作系统缓存与缓冲

缓存与缓冲 缓冲区是一块临时存储数据的区域&#xff0c;这些数据后面会被传输到其他设备上。缓冲区更像消息队列&#xff0c;用以弥补高速设备和低速设备通信时的速度差&#xff0c;平衡读写速度。例如&#xff1a;IO中内核缓冲区Ring Buffer。 缓存&#xff1a;存在于速度相…

鸿蒙应用开发之Badge容器

在开发应用的时候,经常需要一些提示,特别当用户打开应用时,有一些事情需要提醒一下用户,但是不能自动打开这个窗口提示,这样会让用户比较烦。所以设计一些提示显示来告诉用户,这里有新东西了,赶紧来点击一下查看。 比如像下面例子显示的界面: 在这里显示红点的地方,就…

区块链加载解析方法

一.区块链加载解析 对于数据的下载主要包括三种方式&#xff1a; 1.实现比特币网络协议&#xff0c;通过该协议和其他比特币全节点建立联系&#xff0c;然后同步区块数据。 2.通过比特币节点提供的API服务下载区块链数据。 3.通过blickchain.com提供的rest服务下载区块数据…

Python可实现各种算法库之algorithms使用详解

概要 在软件开发和计算机科学领域,算法是解决问题的核心工具。Python 作为一种广泛使用的编程语言,提供了多种内置和第三方库来实现各种算法。algorithms 库是一个集合了多种常用算法和数据结构的 Python 库,旨在帮助开发者快速实现和应用这些算法。本文将详细介绍 algorit…

【 2024!深入了解 大语言模型(LLM)微调方法(总结)】

引言 众所周知&#xff0c;大语言模型(LLM)正在飞速发展&#xff0c;各行业都有了自己的大模型。其中&#xff0c;大模型微调技术在此过程中起到了非常关键的作用&#xff0c;它提升了模型的生成效率和适应性&#xff0c;使其能够在多样化的应用场景中发挥更大的价值。 那么&…

C++ Linux调试(无IDE)

跨平台IDE编译调试C很方便&#xff0c;如QTCreate 、VSCode、Eclipse等&#xff0c;但是如果只能使用Shell控制台呢&#xff0c;gdb调试的优势就很明显了&#xff0c;在没有IDE的情况下&#xff0c;这个方式最有效。因为上手不是很难&#xff0c;特此整理 参考链接 目录 1、G…

MAC下打印机启用用户代码(RICOH理光打印机)

之前一直用Windows操作公司打印机&#xff0c;最近研究了下用MAC&#xff08;macos 13.6.7&#xff09;也能成功打印。公司为了防止恶意打印&#xff0c;因此对打印机设置了用户代码&#xff0c;输入正确的用户代码才能打印&#xff0c;因此配置会复杂一些。 1.安装适配的打印机…

5分钟教你用AI把老照片动起来,别再去花49块9的冤枉钱了

文章目录 需要的工具 最近&#xff0c;AI视频在各大平台上&#xff0c;又火了。 只是火的形式&#xff0c;变成了将老照片动起来&#xff0c;打情感牌&#xff0c;或者做很多经典电视剧的再整活。 直接把可灵的生成时间&#xff0c;从以前的4分钟&#xff0c;生生的干成了20分钟…

【APK】Unity出android包,报错 Gradle build failed.See the Console for details

参考大佬的博客&#xff1a;报错&#xff1a;Gradle build failed.See the Console for details.&#xff08;已解决&#xff09;_starting a gradle daemon, 1 incompatible daemon co-CSDN博客 本地出Android包&#xff0c;Build失败 解决办法&#xff1a; 1.下载一个低版本…