2-way communication for HoloLens 2 + CrazyFlie 2.1 (with Lighthouse v2)
Posted: Fri Apr 29, 2022 8:36 am
Hello all,
I am doing a mixed reality project. The expected outcome, in a nutshell, should be a scenario like this: The user, wearing a HoloLens 2 (HL2), has a CrazyFlie 2.1 drone hovering in front of her. But through HL2, the drone is overplayed with a helicopter model. As she reaches out her hand, the drone (seen as a virtual helicopter in HL2) flies closer to her hand, then hovers around her hand.
Therefore, this project needs two-way communications between a HoloLens 2 and a CrazyFlie 2.1 drone. And I am using Lighthouse Base Station v2 for positioning.
These are the methods I find for implementation, along with questions:
><Method 1>>
This tutorial allows a HL1 to control a CrazyFlie 2.0. But having taken a quick look at the tutorial’s projects file, my questions are:
(a) Is this two-way communication, i.e., can the drone update its current status (position, rotation, batter life, etc.) to the HL1? (Doesn’t look like so, but I would like to make sure.)
(b) Will this work well for HL2?
(c) Will Bluetooth be a reliable communication? (The tutorial mentions that Bluetooth has some latency. Plus, my HL2 cannot discover my CrazyFlie during in Bluetooth system setting. So I don’t even know if it will work in Unity.)
<<Method 2>>
Using a computer as the “middle broker”. Like this:
Drone ---> Computer ---> HL2 (Drone sends position etc. to HL2)
Drone <--- Computer <--- HL2 (HL2 sends commands to Drone)
My questions:
(a) If I go with Method 2, it’s going to be: Drone <---> Computer communication run on CrazyRadio (and positioned by Lighthouse); Computer <---> HL2 run on Wifi. Will this structure likely to run better than Method 1’s Bluetooth? (in terms of coverage, latency, stability, et.)
(b) So it looks like I will need to establish a Python-supported server, or basically a cross-device data reading/writing mechanism, on the middle computer. Could you share your suggestions on establishing such mechanism? REST API? ROS API? Or just read/write a local text file?
Thank you!
I am doing a mixed reality project. The expected outcome, in a nutshell, should be a scenario like this: The user, wearing a HoloLens 2 (HL2), has a CrazyFlie 2.1 drone hovering in front of her. But through HL2, the drone is overplayed with a helicopter model. As she reaches out her hand, the drone (seen as a virtual helicopter in HL2) flies closer to her hand, then hovers around her hand.
Therefore, this project needs two-way communications between a HoloLens 2 and a CrazyFlie 2.1 drone. And I am using Lighthouse Base Station v2 for positioning.
These are the methods I find for implementation, along with questions:
><Method 1>>
This tutorial allows a HL1 to control a CrazyFlie 2.0. But having taken a quick look at the tutorial’s projects file, my questions are:
(a) Is this two-way communication, i.e., can the drone update its current status (position, rotation, batter life, etc.) to the HL1? (Doesn’t look like so, but I would like to make sure.)
(b) Will this work well for HL2?
(c) Will Bluetooth be a reliable communication? (The tutorial mentions that Bluetooth has some latency. Plus, my HL2 cannot discover my CrazyFlie during in Bluetooth system setting. So I don’t even know if it will work in Unity.)
<<Method 2>>
Using a computer as the “middle broker”. Like this:
Drone ---> Computer ---> HL2 (Drone sends position etc. to HL2)
Drone <--- Computer <--- HL2 (HL2 sends commands to Drone)
My questions:
(a) If I go with Method 2, it’s going to be: Drone <---> Computer communication run on CrazyRadio (and positioned by Lighthouse); Computer <---> HL2 run on Wifi. Will this structure likely to run better than Method 1’s Bluetooth? (in terms of coverage, latency, stability, et.)
(b) So it looks like I will need to establish a Python-supported server, or basically a cross-device data reading/writing mechanism, on the middle computer. Could you share your suggestions on establishing such mechanism? REST API? ROS API? Or just read/write a local text file?
Thank you!