Chordata是一个自我动作捕捉的系统。您可以通过下面的信息图了解Chordata的相关信息。
Chordata的由来
Chordata的起源来自于我们的一个基本需求。我们的技术主管布鲁诺(Bruno)想要将舞蹈动作登记到表演作品中,但没有一种工具能满足他的需求(也不符合他的预算)。从那时起,关于Chordata的故事便开始了。
项目原始描述:
本项目包括三个部分:
硬件(K-Ceptor):
人体运动捕捉系统旨在尽可能准确地实时获取每部分肢体的动作轨迹。通过一个简单的MEMS IMU设备和传感器融合算法,我们可以得到一个不错的结果。但是当您想要获取多个设备的数据时,问题就出现了。这些设备大多带有i2c接口,而它们的地址在硬件中是固定的。这为硬件设计造成了困难,所以我们采用了Chordata实现与同一总线上的几个“兄弟”共存的传感单元:“K-Ceptor”的通信。
在开发和原型制作的过程中,我们手工焊接了很多这样的电路板,为了使得这个过程变得更容易一些,我们致力让每一块电路板上的SMD组件的数量都尽可能少。
软件:
实时获取大量传感器的数据,并对其进行处理,然后以一种易于阅读的格式发送给客户端并不是一件简单的工作,所以我正在从零开始开发一个软件来处理它。
负责:
建立传感器物理层次结构的数字模型。在集线器上初始化i2c通信,并在每个传感器上运行配置例程。
以指定的刷新率对每个传感器执行读取。
用先前校准过程中获得的偏差校正每个传感器读数。
对校正后的传感器进行读数,且进行融合计算,得到四元数形式的绝对方位信息。
使用开放协议(如OSC)向客户机发送方向数据、sensor_id和时间戳
经过几次测试,我发现使用一台运行linux的单板计算机来托管这样的程序是最好的选择,所以这部分软件的开发都是在c++上完成的,使用Raspberry Pi 3作为hub。Raspberry Pi 3具有价格低,编程简单等优点。并且具备了执行舒
适捕获所需的所有通信外围设备,例如出色的Wifi适配器。
软件(客户端):
Chordata具有清晰的数据传输协议,所以客户机可以是任何能够显示3D骨架的仪器。
大多数时候,我使用的是运行在Blender中的python脚本,它从OSC获取四元数数据,并执行旋转3D电枢的骨架。
Chordata可以通过以Blender插件的形式发布一个基本的客户端,实现以下功能:
- 与中心建立一些握手通信,检查兼容性和状态。
- 将状态传递给用户(计算机前的人)。
- 作为GUI运行on-pose校准过程并启动捕获。
- 实时显示捕获的预览,并允许用户注册捕获的一部分。
- 允许具有Blender基本经验的用户在人体的虚拟模型上创建传感器的自定义分布,以结构化数据格式(如xml)导出传感器并将其发送到hub。
PS:文中所说的IMU为陀螺仪+加速度计+磁力仪设备