Having got bored of not being able to fly due to the CoronaVirus lock-down and trying to justify my recent purchase of a VR headset I have been playing with using a SteamVR tracker for position feedback.
Thanks to PYopenVR I was able to interface SteamVR with MAVProxy to stream vision position and vision speed MAVLink messages to copter. This works in the same way as the T265 camera however in this case the information is coming in from an external score, rather than a self-contained unit on the vehicle. The ArduCopter setup is much the same as the T265 however we set VISO_TYPE to 1 for MAVLink. For this example i’m using the dev vision of ArduCopter as support for the vision speed message has recently been added (thanks @chobitsfan!).
The tracking works very well, especially considering the cost of a Vicon system that would typically be used for such a positioning system. In this case the minimum setup is two base stations and a tracker along with a couple of dongles for them to communicate with the PC (although I would totally recommend getting a head-set too, very good fun). If you intested in how the system works this is a excellent video form Alan Yates.
For the demo I set aggressive accelerations and speeds to try and push the capability of the tracking, the various crashes are due to operator error and lack of space. The EKF and positioning system remains happy for all the flights. It should be theoretically possible to use up to 16 base stations cover a area of 65m^2. Each base station is quoted to give a 6m range, so 25m^2 should be possible with just two base stations, although my room is much smaller than that.
I found the trackers extremely susceptible to vibrations, they are designed to track people after all. I had to mount mine on a anti-vibration mount to maintain good tracking at all times. Possibly this would not be such a issue on a vehicle with larger props. My copter has very nasty high frequency vibrations. Nothing special about the copter, except I’m using a Wifi telemetry link to deal with the high bandwidth required to send position messages at a high rate. A vehicle with prop guards is a must if you plan on being in the same room as it.
This is a demo of the MAVProxy setup, the code can be found here.