Chai3D之触觉设备
推荐:将 NSDT场景编辑器 加入你的3D开发工具链
介绍
触觉设备是一种双向仪表/致动的人机界面,由人类操作员用于与计算机模拟虚拟环境进行主动交互。触觉设备可以是鼠标、方向盘、指垫、机器人手柄、抓手、操纵杆、手套、磁悬浮手腕,甚至是移动整个用户身体的运动平台的形式。它可用于模拟具有质量、阻尼、摩擦和刚度属性的环境,也可以模拟虚拟工具与其周围虚拟环境交互的机械行为。
CHAI3D 提供了一个名为 cGenericHapticDevice 的基类,它实现了一组与最常见的 3D 触觉设备进行通信的方法。触觉设备的末端执行器或手柄的位置可以通过使用getPosition(),getRotation(),getGripperAngleDeg()等方法读取。可选的用户开关或按钮可以通过调用getUserSwitch()来读取。
力和扭矩可以通过调用诸如setForce(),setForceAndTorque()和setForceAndTorqueAndGripperForce()等方法发送到触觉设备。
对于每种型号的触觉设备(例如delta.x,omega.x猎鹰,幻影等)CHAI3D 实现了一个特定的类(例如 cDeltaDevice、cPhantomDevice),该类继承自 cGenericHapticDevice,并通过从支持该设备的 API 调用特定命令来实现每个命令。
一般规定
所有数量均以IUS(公制)单位表示。参考设备坐标系指定 x 轴指向操作员,y 轴指向操作员的右侧,z 轴指向上方。最后,原点始终位于设备物理工作区的中心。
如果触觉设备带有手腕或手写笔,则其手柄的方向使用旋转矩阵表示。下图说明了三自由度、六自由度和七自由度设备的约定。

示例 02-multi-devices 是一个简单的应用程序,它显示连接到计算机的每个触觉设备的参考帧。参考框架使用颜色而不是标签来命名不同的轴(分别为 x、y 和 z)。颜色约定为:红色表示 x 轴,绿色表示 y 轴,蓝色表示 z 轴。

触觉设备处理程序
触觉设备处理程序 (cHapticDeviceHandler) 是一个类,用于搜索并列出连接到计算机的所有触觉设备。
在下面的列表中,我们说明了一个简单的示例,该示例对触觉设备施加力,使其末端执行器朝向其工作空间的中心点:
using namespace chai3d;
// create haptic device handler
cHapticDeviceHandler* handler;
handler = new cHapticDeviceHandler();
// get handle to first available haptic device on the list
cGenericHapticDevice* hapticDevice;
handler->getDevice(hapticDevice, 0);
// open connection to haptic device
hapticDevice->open();
// initialize simulation
bool simulationRunning = true;
double Kp = 25;
cVector3d position(0,0,0);
// haptics loop
while (simulationRunning)
{
// read position from haptic device
hapticDevice->getPosition(position);
// compute force
cVector3d force = -Kp * position;
// send force to haptic device
hapticDevice->setForce(force);
}
// close connection to haptic device
hapticDevice->close();
如何定制触觉设备
cMyCustomDevice 提供了一个基本模板,可让您非常轻松地将 CHAI3D 连接到您自己的自定义触觉设备。只需按照文件 CMyCustomDevice 中的 12 个注释步骤操作.cpp并相应地完成代码。根据设备上的自由度数,可能需要实现并非所有方法。例如,如果您的设备不提供任何旋转自由度,只需忽略 getRotation() 方法即可。如果未在设备上实现默认值,则将正确返回默认值。例如,在旋转的情况下,返回单位矩阵。
您还可以重命名此类,在这种情况下,您还需要自定义触觉处理程序以自动检测您的设备。请查阅 cHapticDeviceHandler 类的方法 update(),该类位于文件 CHapticDeviceHandler.cpp 中。只需查看触觉设备处理程序如何查找 cMyCustomDevice 类型的设备。
如果您在实现时遇到任何问题,请检查实例文件 CDeltaDevices.cpp该文件实现了对力维度和 Novint 触觉设备的支持。为了验证实现,请使用01-mydevice示例开始。示例 11-effects 是一个很好的演示,用于验证基本触觉效果在触觉设备上的行为方式。如果您确实遇到振动或不稳定性,请尝试降低设备支持的最大刚度(请参阅文件 CMyCustomDevice.cpp 中的 STEP1)。
确保您的设备与计算机的通信速度也足够快。理想情况下,通信周期应小于1ms,以达到至少1000Hz的所需更新速率。例如,使用慢速串行端口 (RS232) 时通常会出现问题。
3D建模学习工作室翻译整理,转载请标明出处!
Chai3D之触觉设备的更多相关文章
- VREP中的力触觉设备接口(CHAI3D)
力反馈技术是一种新型的人机交互技术,它允许用户借助力反馈设备触碰.操纵计算机生成的虚拟环境中的物体,并感知物体的运动和相应的力反馈信息,实现人机力觉交互.虽然传统的鼠标.键盘.触摸屏等交互手段可以满足 ...
- 前端页面开发,最低兼容IE 8的多设备跨平台问题解决!
项目要求: 网站能够使用PC.ipad.mobile phone正常访问 页面PSD版式宽度分别为1024px和750px 参考资料 使用CSS3 Media Queries,其作用就是允许添加表达式 ...
- 一些有意思的VR设备介绍
1.计算机(Computers) 不久以前,一个VR系统需要百万美元的超级计算机:而如今顶级的VR系统正在使用桌面便携式计算机簇,极大的降低了价格和维护成本. 2.跟踪器(Tracking) 为了能与 ...
- 使用Phantom omni力反馈设备控制机器人
传统的工业机器人普遍采用电机 .齿轮减速器 .关节轴三者直接连接的传动机构,这种机构要求电机与减速器安装在机械臂关节附近,其缺点是对于多关节机械臂,下一级关节的电机与减速器等驱动装置成为上一级关节的额 ...
- web页面之响应式布局
一.什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网 ...
- 9_bootstrap less 移动端
chrome,firefox提供了"Device Emulation"功能,可模拟常见的各种浏览设备 android ADT或ios Xcode附带的设备模拟器,或第三方在线测试工 ...
- 浅谈html5 响应式布局
一.什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本. 这个概念是为解决移动互联 ...
- [转]CSS3 Media Query实现响应布局
讲到响应式布局, 相信大家都有一定的了解,响应式布局是今年很流行的一个设计理念,随着移动互联网的盛行,为解决如今各式各样的浏览器分辨率以及不同移动设备的显示效果, 设计师提出了响应式布局的设计方案.今 ...
- css3基础、(弹性、响应式)布局注意点
E1>E2选择父元素为E元素的所有E2元素(子类选择器) E1+E2选择元素为E1之后的所有E2元素(兄弟选择器) E[attr]只使用属性名,但没有确定任何属性值 E[attr="v ...
- 响应式web设计之CSS3 Media Queries
开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...
随机推荐
- WPF中的“资源”
WPF中的"资源" 资源概述 WPF中的资源的概念有点类似 web 技术中的静态资源的概念.可以是一个样式,也可以是一个button的边框设置集合. 可以简单的将资源分为如下几个类 ...
- ZooKeeper 3.6.X 配置参考
"好记性不如烂笔头." -- 张溥 0x00 大纲 目录 0x00 大纲 0x01 前言 0x02 独立运行 0x03 集群运行 0x04 单机集群配置补充 0x05 官方原文 S ...
- Python3.7.3环境搭建
Python3.7.3安装(Win10) 到2019年初,Python3已经更新到了Python3.7.3,Python有两个大版本Python2和Python3,Python3是现在和未来的主流. ...
- 基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口
前言 最近电脑坏了,开源项目的进度也受到一些影响 这篇酝酿很久了,作为本系列第二部分(API接口开发)的第一篇,得想一个好的开头,想着想着就鸽了好久,索性不扯那么多了,直接开写吧~ 关于RESTFul ...
- css样式表,选择器,伪类选择器
CSS定义 CSS:Cascading Style Sheet(层叠样式表) 选择器 { 属性名: 属性值; } CSS样式表 (1)三种样式表使用 ·1> 内联样式 <div style ...
- 一个sql和C#代码结合的分组求和的查询
业务描述: 业务主表(tab_main 主键 id), 供应商名称(supplier), 金额(amount 需要统计求和),还有分类( 有单独的表categoryid),集中采购标记字段(tend ...
- WCH网络授时芯片CH9126操作指导
目前CH9126推荐在Win7操作系统的电脑上执行,暂不推荐在与Win10系统的电脑进行通讯. 一.重要引脚说明 设置及状态相关引脚: 引脚1:RSETE-一个控制CH9126工号的引脚,直接接18K ...
- 47.DRF实现分页
分页Pagination 当我们在PC 或者 App 有大量数据需要展示时,可以对数据进行分页展示.这时就用到了分页功能,分页使得数据更好的展示给用户 比如我们有1W+数据要返回给前端,数据量 ...
- Spark详解(06) - SparkSQL
Spark详解(06) - SparkSQL Spark SQL概述 什么是Spark SQL Spark SQL是Spark用于结构化数据(Structured Data)处理的Spark模块. ( ...
- python之路29 网络编程基础2之 两种架构 传输层常见协议 socket模块
软件开发架构 1.C/S架构(Client:客户端和Server:服务端) 服务器-客户机,即Client-Server(C/S)结构.C/S结构通常采取两层结构.服务器负责数据的管理,客户机负责完成 ...