28.Isaac教程--使用Sight的远程操纵杆

news2024/9/22 3:39:11

使用Sight的远程操纵杆

在这里插入图片描述
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

文章目录

  • 使用Sight的远程操纵杆
    • 设置 Isaac 应用程序以使用虚拟游戏手柄小部件
    • 关于虚拟游戏手柄小部件
    • 使用虚拟游戏手柄小部件
    • 运作模式
      • 手柄模式
      • 鼠标模式
      • 键盘模式

控制机器人运动的传统方法是使用直接连接到机器人的操纵杆。 但是,在 Isaac 中,Virtual Gamepad Sight 小部件可用于通过网络向机器人发送模拟传统操纵杆轴的信号。 该小部件允许三种输入机制,一次只能使用其中一种:

  • 浏览器识别标准游戏手柄控制器连接到运行 Sight Client 的机器,它使用浏览器的 Gamepad API。

  • 连接到运行 Sight Client 的计算机的鼠标。 鼠标与小部件中的虚拟鼠标交互,模拟操纵杆轴。

  • 连接到运行 Sight 客户端的计算机的键盘。 方向键分配在键盘上以模拟操纵杆轴。

设置 Isaac 应用程序以使用虚拟游戏手柄小部件

要从 Sight 使用 Virtual Gamepad Widget,请在应用程序的 JSON 文件中设置 VirtualGamepadBridge,如下所示:

  1. 添加以下节点:
{
  "name": "virtual_gamepad_bridge",
  "components": [
    {
      "name": "message_ledger",
      "type": "isaac::alice::MessageLedger"
    },
    {
      "name": "VirtualGamepadBridge",
      "type": "isaac::navigation::VirtualGamepadBridge"
    }
  ]
}
  1. 将以下配置参数添加到节点:
"virtual_gamepad_bridge": {
  "VirtualGamepadBridge": {
    "tick_period": "100ms"
  }
}
  1. 添加连接以启用 Sight 和后端之间的通信:
{
  "source": "websight/WebsightServer/virtual_gamepad",
  "target": "virtual_gamepad_bridge/VirtualGamepadBridge/request"
},
{
  "source": "virtual_gamepad_bridge/VirtualGamepadBridge/reply",
  "target": "websight/WebsightServer/virtual_gamepad_reply"
}
  1. 将连接添加到处理操纵杆类消息的小码(例如:RobotRemoteControl):
{
  "source": "virtual_gamepad_bridge/VirtualGamepadBridge/joystick",
  "target": "carter_joystick/isaac.navigation.RobotRemoteControl/js_state"
}

  1. 在您的应用程序构建文件中包含导航模块:
isaac_app(
    name = "...",
    ...
    modules = ["navigation"],
)

  1. 在您的应用程序 json 文件中包含导航模块:
modules = ["navigation"]

VirtualGamepadBridge 具有以下配置参数:

  • tick_period:周期性 tick() 函数调用之间的间隔。

  • sight_widget_connection_timeout:自动与 Sight Virtual Gamepad Widget 实例断开连接之前等待的时间(以秒为单位)。 默认值为 30 秒。

  • num_virtual_buttons:前端鼠标或键盘正在模拟的模拟操纵杆上的按钮数。 默认值为 12。

  • deadman_button:故障安全按钮的按钮编号。 此按钮编号用于从模拟操纵杆的鼠标或键盘生成的消息中。 默认值为 4。

关于虚拟游戏手柄小部件

以下是可见的虚拟游戏手柄小部件:

小部件的元素

  • Widget ID:每个小部件实例的唯一 ID,用于确保只有一个这样的小部件实例连接到后端,以便一次只有一个用户处于控制之中。

  • 连接到后端按钮:单击以与后端建立实时且唯一的连接。 当前连接状态在按钮上显示为绿色或红色图标。 连接成功后,模式面板显示在中央。 如果小部件保持断开连接,模式面板将保持隐藏状态以禁止用户交互。

  • 模式选择器按钮:单击以选择操作模式。 所选/可见模式激活为当前操作模式。 所选模式的按钮从灰色变为绿色。

  • Virtual Mousepad Joystick dial:使用连接的鼠标或触摸板与使用光标的转盘交互,将模拟的操纵杆信号发送到后端。 有关详细信息,请参阅操作模式。

  • Virtual Keypad Joystick presentation:启用后,显示当前在连接的键盘上按下的键。 这只是被按下的键的视觉呈现。 这些不是可以用鼠标或触摸板点击的按钮。 有关详细信息,请参阅操作模式。

  • Backend Connected to Widget 显示:显示当前连接到后端的 widget 实例的 ID,作为哪个用户在控制中的指示。

  • Connected Standard/Remapped Gamepads 显示:显示运行 Sight 的浏览器当前识别的游戏手柄数量。 仅当浏览器识别单个控制器时,此小部件才允许使用连接的控制器进行控制。 如果连接了多个控件,则必须断开除一个以外的所有控件。

使用虚拟游戏手柄小部件

如果设置 Isaac 应用程序以使用 Virtual Gamepad Widget 中的过程未完成,则在启动应用程序时不会在后端实例化任何 VirtualGamepadBridge codelet。 在这种情况下,Sight 小部件将保持禁用状态并显示以下消息:

设置完成后,可以在执行以下步骤后使用 Virtual Gamepad Widget:

  1. 单击“连接到后端”按钮连接到后端。

  2. 通过单击相应的模式按钮选择所需的模式。 模式的状态由其按钮的颜色指示。 有关模式的说明,请参阅操作模式。

  3. 要断开您的小部件实例与后端的连接,请单击之前用于连接的相同按钮。

这种小部件只有一个实例可以保持与后端的连接。 这可以防止具有多个 Sight 实例的多个 Sight 用户同时尝试移动同一个机器人。

运作模式

手柄模式

在 Gamepad 模式下,控制器或游戏手柄通过无线或 USB 连接到运行 Sight 的机器,并可通过浏览器的 Gamepad API 识别来控制机器人。 请注意,在此操作模式下只能连接一个标准控制器。 如果只有一个标准控制器保持连接,则游戏手柄图标变为绿色,否则图标颜色保持灰色,表示没有控制器可用。 游戏手柄的功能就像直接连接到机器人一样。

鼠标模式

要将连接的鼠标或触摸板与鼠标转盘一起使用,请左键单击并按住中间的深色小圆圈。 按住左键单击的同时,移动光标以移动较大圆形表盘中的黑圈。

当黑色圆圈位于表盘上的绿色区域时,小部件将模拟操纵杆消息发送到后端。 如果它在灰色区域,则不会向后端发送任何消息。

只需按下左键即可移动黑色圆圈,否则它会返回其在表盘上的中心位置,表示没有操纵杆活动。

如果光标移出表盘半径,黑圈会自行重置到中心位置。

黑圈越靠近外围,模拟的操纵杆轴值越接近其极值。 例如,对于较慢的速度,黑圈需要保持在靠近表盘中心的绿色区域内。 对于更高的速度,黑圈必须靠近外围。

键盘模式

连接键盘上的 W、S、A、D 键或它们的任意组合可用于向机器人发送模拟操纵杆轴消息。

UI 指示何时按下或释放方向键。

更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561

在这里插入图片描述

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

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

相关文章

设计模式_行为型模式 -《责任链模式》

设计模式_行为型模式 -《责任链模式》 笔记整理自 黑马程序员Java设计模式详解, 23种Java设计模式(图解框架源码分析实战) 概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象…

windows最小化安装mysql8

第一步:下载 从官网下载,https://dev.mysql.com/downloads/mysql 第二步:安装 下载后解压到目录即可。 我这里解压到D:\MYSQL\mysql-8.0.32-winx64\mysql-8.0.32-winx64 第三步:初始化配置 1、添加系统变量 在系统变量PATH后…

【C++】从0到1入门C++编程学习笔记 - 基础入门篇:数组

文章目录一、概述二、一维数组2.1 一维数组定义方式2.2 一维数组数组名2.3 C 实现冒泡排序三、二维数组3.1 二维数组定义方式3.2 二维数组数组名3.3 二维数组应用案例一、概述 所谓数组,就是一个集合,里面存放了相同类型的数据元素 特点1:数…

(15)go-micro微服务main.go开发

文章目录一 导包二 配置中心三 注册中心四 zap日志初始化五 初始化Mysql数据库六 初始化Redis连接七 注册服务八 初始化服务九 注册 handle十 启动服务十一 main.go全部代码十二 最后一 导包 import (micro2 "account/common/micro""account/config/logger&quo…

day17|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] 输出:1 示例 2&#xff1…

Redis持久化——AOF机制详解

在运行情况下,Redis 以数据结构的形式将数据维持在内存中,为了让这些数据在 Redis 重启之后仍然可用,需要将数据写入持久存储 持久化是指将数据写入持久存储,例如固态磁盘(SSD) Redis 提供了一系列持久化选项。这些包括&#xff1…

[GYCTF2020]Blacklist(堆叠注入)

目录 信息收集 堆叠注入 payload 总结 信息收集 观察url变化是get请求的SQL注入题目 判断注入类型 1和1"回显一样 1回显报错 1 or 11# array(2) {[0]>string(1) "1"[1]>string(7) "hahahah" }array(2) {[0]>string(1) "2"[…

【C语言进阶】最常用的库函数大全——从入门到精通

目录 一.字符串函数 1.strlen——求字符串长度 2.长度不受限制的字符串函数 a.strcpy——字符串拷贝 b.strcat——追加字符串 c.strcmp——字符串比较 3.长度受限制的字符串函数——strncpy,strncat,strncmp 4.字符串查找 a.strstr——判断是否为子字符串 b.strtok—…

Java网络编程(2)

关于网络编程上一章内容,可以参考: https://blog.csdn.net/Raine_Yang/article/details/128697335?spm1001.2014.3001.5501 使用服务器处理多个客户端 一般来说,同一服务器要持续运行处理多个客户端的请求。我们可以为每一个客户端请求分配…

@Scope 用法

参考:Scope注解 详细讲解及示例 官方文档 When used as a type-level annotation in conjunction with Component, Scope indicates the name of a scope to use for instances of the annotated type. When used as a method-level annotation in conjunction w…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(示波器)】

目录 序言 🍍放置虚拟仪器仪表 🍉示波器 🍊🍊1.“时基”选项组 (1)标度 (2)X轴位移 (3)显示方式选择 🍊🍊2.“通道”选项组 …

函数指针与回调函数详解

目录1.函数指针2.函数指针数组3.指向函数指针数组的指针4.回调函数1.函数指针 前面我们学的: 整形指针是指向整形的指针字符指针是指向字符的指针数组指针是指向数组的指针 所以函数指针就是指向函数的指针 假如有一个int类型变量a,要取它的地址就是…

【Linux】Linux软件包管理器与Linux编辑器

文章目录🎪 Linux软件包管理器🚀 1.yum基本介绍🚀 2.yum基本命令🚀 3.关于rzsz工具的安装与使用⭐3.1 rzsz工具介绍⭐3.2 rzsz工具安装⭐3.3 rzsz工具使用🎪 Linux编辑器🚀 1.vim常用三种模式🚀…

事务管理-spring

什么是事务 - 事务是由N步数据库操作序列组成的逻辑执行单元,这系列操作要么全执行,要么全放弃执行。 • 事务的特性(ACID) - 原子性(Atomicity):事务是应用中不可再分的最小执行体。 - 一致…

MySQL使用索引的最佳指南

MySQL使用索引的最佳指南1.选择合适的字段创建索引2.尽可能的考虑建立联合索引而不是单列索引3.注意避免冗余索引4.考虑在字符串类型的字段上使用前缀索引代替普通索引5.索引失效的情况1.选择合适的字段创建索引 不为 NULL 的字段 :索引字段的数据应该尽量不为 NUL…

java面向对象,全是对象,这么多对象2023015

面向对象(一遍一遍的领悟) Java支持面向对象的三大特征:封装、继承和多态, Java提供 了private、protected和public三个访问控制修饰符来实现良好的封装,提供了extends关键字来让子类继承父类,子类继承父类…

人工智能图像形状检测算法

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

Redis下载安装与配置(linux)

一、Redis下载与安装 1.下载安装包 官网下载地址:Download | Redis 点击"Download 7.0.7",即可进行下载。 2.将安装包上传至服务器 2.1将安装包上传至/usr/local目录并解压 cd /usr/local lstar -zxvf redis-7.0.7.tar.gz2.2删除安装包 r…

第二天总结 之 商品类型管理界面的实现 之 添加和修改操作 的实现

添加和修改操作 页面跳转问题 点击修改按钮时 跳转的路径 如下 点击添加按钮时 跳转的路径如下 通过这两张图片 不难发现 跳转的是同一个jsp 但是添加操作 是不带id跳转 而修改操作是带着id跳转 所以在其 跳转的页面add_goods_type.jsp页面中 有一个这样的判断 如果没有id…

Linux常用命令——tmux命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tmux Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。 补充说明 使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后&a…