聚丰项目 > 基于LattePanda的MR混合现实眼镜

基于LattePanda的MR混合现实眼镜

基于LattePanda硬件平台设计一款开源的光学透视式MR混合现实眼镜,一款类似美国Meta2混合现实眼镜的原型机,实现虚拟物体与现实世界的混合叠加,通过眼睛视点和手势控制虚拟物体。

13698626731 13698626731

6 喜欢这个项目
团队介绍

13698626731 13698626731

团队成员

张桂阳 创客

项目信息

项目阶段: 项目完成

开发平台: 其他

项目应用: 个人电子产品

标签: ARMR混合现实眼镜
项目简介
基于LattePanda硬件平台设计一款开源的光学透视式MR混合现实眼镜,一款类似美国Meta2混合现实眼镜的原型机,实现虚拟物体与现实世界的混合叠加,通过眼睛视点和手势控制虚拟物体。
所用器件
REAL SEER 头盔(HUD半反半透曲面光学镜片) 1
7寸 1024*720 LCD 1
LattePanda 开发板 1
Arduino IMU 模块 1
USB摄像头 1
硬件说明

①搭建MR眼镜(REAL SEER 头盔+ LattePanda+LCD)

    

②Lattepanda安装Unity3D

   安装32的unity3D(windows一样的方法)

②IMU传感器模块(IMU+Arduino串口输出)

  Arduino IIC驱动MPU6050,从串口转发

   


软件说明

这里贴出 loop代码


void loop() {
  int readouts[nValCnt];
  ReadAccGyr(readouts); //读出测量值
  
  float realVals[7];
  Rectify(readouts, realVals); //根据校准的偏移量进行纠正

  //计算加速度向量的模长,均以g为单位
  float fNorm = sqrt(realVals[0] * realVals[0] + realVals[1] * realVals[1] + realVals[2] * realVals[2]);
  float fRoll = GetRoll(realVals, fNorm); //计算Roll角
  if (realVals[1] > 0) {
    fRoll = -fRoll;
  }
  float fPitch = GetPitch(realVals, fNorm); //计算Pitch角
  if (realVals[0] < 0) {
    fPitch = -fPitch;
  }

  //计算两次测量的时间间隔dt,以秒为单位
  unsigned long nCurTime = micros();
  float dt = (double)(nCurTime - nLastTime) / 1000000.0;
  //对Roll角和Pitch角进行卡尔曼滤波
  float fNewRoll = kalmanRoll.getAngle(fRoll, realVals[4], dt);
  float fNewPitch = kalmanPitch.getAngle(fPitch, realVals[5], dt);
  //跟据滤波值计算角度速
  float fRollRate = (fNewRoll - fLastRoll) / dt;
  float fPitchRate = (fNewPitch - fLastPitch) / dt;

//更新Roll角和Pitch角
  fLastRoll = fNewRoll;
  fLastPitch = fNewPitch;
  //更新本次测的时间
  nLastTime = nCurTime;

  //向串口打印输出Roll角和Pitch角
  Serial.print("Roll:");
  Serial.print(fNewRoll); Serial.print('(');
  Serial.print(fRollRate); Serial.print("),\tPitch:");
  Serial.print(fNewPitch); Serial.print('(');
  Serial.print(fPitchRate); Serial.print(")\n");
  delay(10);
}

③编写Unity3D程序

1、串口接收IMU数据,IMU四元数计算

      unity3D实现串口接收,读取IMU数据,这里贴出,IMU数据处理过程(四元数法)

void Update()

2、RealSee SDK:双目3D+图像反畸变运算

     由于RealSee的头盔是两面曲面HUD半反半透镜,LCD图像直接投影上去会发生严重的畸变

     因此需要反畸变算法,为了项目方便,这里直接采用RealSee官方SDK中的摄像头Object和反畸变算法脚本,

      

    将这个脚本绑定到AR camera object上即可实现图像反畸变运算。

3、VOID AR SDK:单目摄像头+IMU实现SLAM算法

      这里的SLAM算法直接采用 VOID AR SDK中的 单目摄像头+imu的SLAM算法,配置如下

       


4、编辑场景,设置地球Object

       


演示效果


①:三维融合成像显示功能(将虚拟物体以三维立体虚像的方式投影到现实世界中)

②:三维跟踪注册功能(能够实现虚拟物体和真实环境做到精确对准,即将虚拟物体固定在现实世界的指定位置

效果演示内容:项目体验者通过MR混合现实眼镜,可以观看到虚拟的地球和一个白色立方体,实时叠加在现实世界的桌子上,体验者可以通过移动头部,前进后退来观察虚拟地球。

效果演示方式:项目图片,屏幕录屏,视频拍摄

屏幕录制,视频地址:


评论区(1 )
  • 交流群1646516: 路过

    回复