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,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...
随机推荐
- 论文解读(CDTrans)《CDTrans: Cross-domain Transformer for Unsupervised Domain Adaptation》
论文信息 论文标题:CDTrans: Cross-domain Transformer for Unsupervised Domain Adaptation论文作者:Tongkun Xu, Weihu ...
- Python requests 上传文件(以上传图片为例)
from requests_toolbelt import MultipartEncoderimport requests encoderl = MultipartEncoder( fields = ...
- 动态SQL遇到的问题
看图 查不出来任何数据 因为判断有问题 修改方法如下:
- go-micro v3 rpc服务一次改造经历
地址:https://github.com/go-micro/go-micro grpc-test-demo:https://gitee.com/jn-shao/go-gmicro-rpc-test. ...
- 现代 CSS 高阶技巧,不规则边框解决方案
本文是 CSS Houdini 之 CSS Painting API 系列第四篇. 现代 CSS 之高阶图片渐隐消失术 现代 CSS 高阶技巧,像 Canvas 一样自由绘图构建样式! 现代 CSS ...
- 既然有MySQL了,为什么还要有MongoDB?
大家好,我是哪吒,最近项目在使用MongoDB作为图片和文档的存储数据库,为啥不直接存MySQL里,还要搭个MongoDB集群,麻不麻烦? 让我们一起,一探究竟,了解一下MongoDB的特点和基本用法 ...
- session取不到值
今天鼓捣项目时出现了一个问题 项目重启后,设置session值后,第一次请求经过过滤器时 session取不到值,导致被拦截 经过半天的研究,终于...我请教了别人 把代码给了朋友,在朋友一段时间的琢 ...
- Crossplane - 比 Terraform 更先进的云基础架构管理平台?
️URL: https://crossplane.io/ Description: 将云基础架构和服务组成自定义平台 API 简介 在 11 月的 KCD 上海现场,听了一场阿里云的工程师关于他们自己 ...
- 手把手教你写Dockerfile以及测试
Dockerfile是什么? dockerfile就是用来构建docker镜像的构建文件,命令参数脚本. 如何使用Dockerfile? 1.编写一个Dockerfile文件 2.docker bui ...
- VUE Angular通用动态列表组件-亦可为自动轮播组件-02-根据数据量自动横向滚动,鼠标划入停止滚动
本文为横向轮播,纵向轮播/动态列表组件请戳---- 代码是angular的,稍微改改就可以放入Vue项目里,差别不大哟 以下代码可以根据实际情况自行调整 父组件html <app-scroll- ...