【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第50课-姿式识别控制机器人

news2024/11/24 20:57:13

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第50课-姿式识别控制机器人

使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎(内嵌了three.js编辑器的定制版-支持以第一视角游览3D场馆),可以在浏览器和node.js、deno、electron上运行,它是一个跨平台的软件,支持多个操作系统使用!并且支持使用内置的poplang智体编程语言实现3D组件的智能化编程——语法超简单,一句话语法,人人轻松上手!

下面分为几步介绍,如何基于dtns.network智体世界引擎实现人体姿式识别控制机器人——通过poplang代码实现人体姿式识别,并由不同的人体姿式实现控制机器人的前进左右转及后退功能。从而实现了一个智能的机器狗宠物——跟着人走,如果在视野内出现了主人就靠近主人求抱抱,如果主人在视野的左侧(人体姿式识别)就左转、如在视野右侧就控制机器人右转,从而实现主人的姿式识别和自动跟随、自动求关爱的功能(与主人玩贴贴的互动游戏)

为了实现机器人的自动跟随功能。我们使用了poplang智体编程的代码指令ib3.event.bus.on实现对rtcchat_capture事件的订阅(实时视频截图事件,截图会通过事件总线传输到3d轻应用的onEvent处理函数代码中),通过$.g_2d_pose_find全局函数指令实现对截图的人脸次式识别,并判断人脸中心位置(鼻子位置坐标)是否处于中间(前进)还是左侧、右侧——分别实现机器人的前进、左转和右转功能,从而实现了机器人的自动识别人脸并根据主人位置实现自动前进、转向或指令后退功能。

第一步:打开头榜页面,找到3D纪念馆xverse轻应用

1.png

注:找到标题为“姿式控制机器人(含语音提醒)”的xverse轻应用。

第二步:点击右上角…进入头榜编辑器

2.png

注:因为每一个xverse轻应用均是以xverse.json的方式进行源码级应用的分享的。故每一个社区用户均可通过编辑xverse轻应用源码来实现DIY和定制。

第三步:点击正面的“编辑xverse轻应用源码”,进入3D场馆编辑器

3.png

注:点击3D场景中间的avatar的3D对象,在右侧的属性面板中找到脚本-编辑。

第四步:编辑墙体avatar玩家3D组件的poplang代码

4.png

注:首先使用了ib3.event.bus.on rtcchat_capture实现了实时视频的截图的事件订阅(通过onEvent接收订阅的截图数据),然后通过$.g_2d_pose_find实现截图base64数据的识别,从而获得人体姿式数据pose.*,然后重点关注nose鼻子的位置信息,来判断是否应该前进、右转、左转,或者通过左肘位置是否比鼻子高来判断是否后退(抬左手后退)。从而实现了机器人判断主人位置实现自动的跟随功能!

第五步:点击顶部菜单“文件”推送头榜(作品),将此3D纪念馆以xverse轻应用方式分享给其他用户

5.png

第六步:将新的头榜标题设置为“姿式控制机器人(语音提醒)”,点击右上角确认完成头榜发布

6.png

注:标题为xmsg,不能误删除“”双引号,否则会发布失败——仅修改xmsg属性的文字内容即可。

第七步:找到刚发布的xverse轻应用头榜,点击进入3D场景游览器

7.png

注:轻轻一点击,即可进入体验刚发布好的xverse-3D轻应用(智体应用),我们相当于可以无限地分享和裂变这个开源的3D轻应用(智体应用)。这样大家便可以按自己的需求,轻松的修改和定制这些动画的源码模板了。可以形成自己的故事、自己的动画、自己的3D场馆、自己的3D互动剧情等等。随心所欲地发挥,所以智体世界、智体OS也相当于【元宇宙】【开放世界】!

第八步:进入3D轻应用后,我们首先开始与机器人实现视频的实时连接(然后进行姿式识别——根据人体在视野的位置进行机器人的跟随控制)

8.png

注:自动识别人体姿式,并结合主人位置实现自动转向和前进、后退控制(如下图所示)

9.png

注:机器人会自动执行不同的跟随动作(前进、左转、右转、后退等姿式识别控制动作)

10.png

注:经过反复测试,我们听到了不同的指令语音提醒播报,从而验证了机器人识别人体姿式进行自动跟随动作(非常类似机器狗、机器人宠物)

通过上8步,我们成功完成了通过3D轻应用中实现了机器人的人体姿式识别并完成主人位置的自动判断,从而实现跟随主人行动,完成机器人的自动跟随主人行走的目标。这提升了机器人的AI智能程度,从而改进了机器人行动控制的智能化程度——只要主人去哪,它就去哪。给它实时的视频姿式指令即可!

我们也看到了poplang智体编程语言的强大能量,一两行简单的指令,即可完成复杂的3D互动的交互效果、音效效果的开发。并且通过xverse-json源文件(3D轻应用)的方式进行社区分享,使得开源开放、公开透明的3D场馆的设计,能被大家更多的学习和继承,达到互动学习、互动成长的目的。这也是智体OS、智体互动式教育-学习的目标。

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

附录(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

 

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

    = sok0 sok

    > ws scoreMin wsok

    && backok wsok backok

    ! backok notback

    pop.ifelse backok back

    ! notuser isuser

    && sok isuser sok

    && 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.ifelse sok0 doface 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

pop.func.end

 

set notuser 0

$.g_2d_faceapi_load_models

poplang的姿式控制代码到此结束!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

白话EAGLE2:解锁大模型的“打草稿”技术

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

七天速通javaSE:第五天 数组基础

文章目录 前言一、认识数组二、数组的声明和创建1. 声明数组变量2. 创建数组3. 变量的初始化&#xff08;赋值&#xff09;3.1 静态初始化3.2 动态初始化 3. 示例 三、数组的使用1. 循环1.1 普通for循环1.2 For-Each 循环 2. 数组作为函数的参数和返回值 前言 本文将为大家介绍…

vue+fineReport 使用前端搜索+报表显示数据

--fineReprot 将需要搜索的参数添加到模版参数 sql&#xff1a; --前端传递参数 注&#xff1a;因为每次点击搜索的结果需要不一样&#xff0c;还要传递一个时间戳的参数&#xff1a; let timesamp new Date().getTime()

【模板】项目建设方案(Word原件)

1 引言 1.1 编写目的 1.2 项目概述 1.3 名词解释 2 项目背景 3 业务分析 3.1 业务需求 3.2 业务需求分析与解决思路 3.3 数据需求分析【可选】 4 项目建设总体规划【可选】 4.1 系统定位【可选】 4.2 系统建设规划 5 建设目标 5.1 总体目标 5.2 分阶段目标【可选】 5.2.1 业务目…

ICMAN触摸芯片之滑轮滑条演示

ICMAN触摸芯片之滑轮滑条演示 ICMAN触摸芯片实现的滑轮滑条方案—— 按键处理逻辑快速&#xff0c;物理结构定位&#xff0c;定位精准&#xff0c;实现简单&#xff0c; 属于按键滑轮滑条&#xff0c;由硬件实现的专用触摸芯片通过滑轮滑条结构设计来实现。 常见的硬件应用&a…

不使用canvs也能创建出点状背景

div{ height: 100%; touch-action: none; background: radial-gradient(circle, #e6e6e6 1px, transparent 1px); /* 创建一个点状背景 */ background-size: 15px 15px; /* 控制点的大小和间距 */ padding: 20px; /* 添加内边距使内容不靠边 */ position: relative; /* 让内部内…

DigiRL:让 AI 自己学会控制手机

类似于苹果此前发布的Ferret-UI 的安卓开源平替。主要用于在 Android 设备上识别 UI 和执行指令&#xff0c;不同的是它利用了离线到在线强化学习&#xff08;Offline-to-Online RL&#xff09;&#xff0c;能够快速适应应用更新或 UI 变化。

EDA 虚拟机 Synopsys Sentaurus TCAD 2018.06-SP2 CentOS7.9

下载地址&#xff08;制作不易&#xff0c;下载使用需付费&#xff0c;不能接受的请勿下载&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1358rH_Ner1TYdc_TgoXrew?pwdyq3p 提取码&#xff1a;yq3p

Meet AI4S 直播预告丨房价分析新思路:神经网络直击复杂地理环境中的空间异质性

近年来&#xff0c;房地产市场起起落落&#xff0c;房价已经成为了扰动居民幸福感的重要影响因素。大多数家庭都需要面对「买不买房、何时买房、在哪儿买房、买什么房」的艰难抉择&#xff0c;每一个问题的答案都在某种程度上与房价的波动息息相关。 近年来&#xff0c;我国各…

2023年第十四届蓝桥杯JavaB组省赛真题及全部解析(上)

目录 前言&#xff1a; 一、试题 A&#xff1a;阶乘求和&#xff08;填空&#xff09; 二、试题 B&#xff1a;幸运数字&#xff08;填空&#xff09; 三、试题 C&#xff1a;数组分割 四、试题 D&#xff1a;矩阵总面积 五、试题 E&#xff1a;蜗牛 六、试题 F&#xff…

ConcurrentLinkedQueue详解(详细图文+动画演示)

目录 ConcurrentLinkedQueue详解1、ConcurrentLinkedQueue简介2、ConcurrentLinkedQueue继承体系3、ConcurrentLinkedQueue的构造函数4、ConcurrentLinkedQueue的数据结构ConcurrentLinkedQueue类的属性注释ConcurrentLinkedQueue真正存储元素的类Node<E>ConcurrentLinke…

element ui 的 el-date-picker 日期选择组件设置可选日期范围

有时候&#xff0c;在使用日历控件的时候&#xff0c;我们需要进行定制&#xff0c;控制用户只能在指定日期范围内进行日期选择&#xff0c;在这里&#xff0c;我使用了 element ui 的 el-date-picker 日期选择控件&#xff0c;控制只能选择当前月及往前的2个月&#xff0c;效果…

基于单片机和组态王的温度监控系统的设计

摘 要 : 介绍了以 MSP430 单片机为核心 , 建立基于 DS18B20 和组态王的温度采集和监控系统。主要研究了单片机和组态王的通用通讯协议。按照 KingView 提供的通信协议 , 设计组态王与单片机的通信程序 , 实现了组态王与M SP430 单片机的直接串行通讯。在中药提取装置的…

优思学院|「按计划推动型」与「需求拉动型」的生产模式

针对生产架构做对比分类的用语&#xff0c;主要有按计划推进型与需求拉动型。 「按计划推动型」与「需求拉动型」两者乃是生产架构上常使用、成对比的两个用语。不过&#xff0c;有时不只用来指单纯的生产现场架构&#xff0c;也有人把它应用在更广泛的生产架构设计上。 按计划…

智能网络构建:探索大模型在网络领域的应用

网络领域以其高度复杂性和快速迭代为特点&#xff0c;完成从网络设计、配置、诊断到安全的网络任务需要广泛的专业知识。这些任务的固有复杂性&#xff0c;加上网络技术和协议不断变化的格局&#xff0c;为传统基于机器学习的方法带来了显著的障碍。这些方法在泛化和自动化网络…

吴恩达+ OpenAi共同编写<面向开发者的LLM入门教程>Github 50k+ star!

今天给大家推荐一本由吴恩达和OpenAI团队共同编写的关于大型语言模型&#xff08;LLM&#xff09;的权威教程<面向开发者的LLM入门教程>&#xff01;&#xff0c;在Github上已经高达50k star了&#xff0c;这含金量不用多说&#xff0c;在这里给大家强烈推荐一波&#xf…

孟德献刀 | 第4集 | 宁教我负天下人,休教天下人负我 | 你自比鸿鹄,安知他人是燕雀呀 | 三国演义 | 逐鹿群雄

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客是毛毛张分享三国演义文学剧本中的经典台词和语句&#xff0c;本篇分享的是《三国演义》第Ⅰ部分《群雄逐鹿》的第4️⃣集《孟德献刀》&#x…

开源API网关-ApacheShenYu首次按照启动遇到的问题

一.背景 公司有API网关产品需求&#xff0c;希望有图形化的后台管理功能。看到了ApacheShenYu&#xff0c;作为Apache的顶级项目&#xff0c;直接认可了。首先&#xff0c;感谢各位大神的付出&#xff0c;初步看这个项目是国内大厂中的大神创立的&#xff0c;在此表示膜拜&…