Servers by jDrones

Aggressive indoor copter flying with SteamVR tracking

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.

23 Likes

That is excellent, thanks for sharing :+1:

Thanks for sharing the bloopers as well :rofl::rofl::rofl:

2 Likes

It’s incredible how quickly it’s moving in such a small space. Really well done! amazing.

1 Like

Great job! This is incredible cool! :+1:

1 Like

Ive got the same frame and tried getting a Matek 405 CTR tuned but din not like it im am thinking of trying a mRo zero seven as that was auwsome your video

1 Like

I had very nasty vibrations, had to take a huge chunk out using the harmonic notch filter. See: https://ardupilot.org/copter/docs/common-imu-notch-filtering.html#common-imu-notch-filtering

These are my params, the tune is not great as I just did a manual tune indoors. These params might give you some hints, I have the 6S version.

TrackerQuad.param (18.1 KB)

1 Like

Are you using the stock Mamba FC with Arducopter.

No, frame only, the Mamba FC doesn’t have enough flash for AP.

Its got a Matek F765-Wing instead.

Nice! I did a similar project with an HTC Vive on a drone for my master’s thesis (https://youtu.be/4jUyKBdEDlI, https://github.com/RianBeck/DroneDemo) (not with Arducopter though), and I remember struggling terribly with the vibrations and the Tracker losing measurements. We 3d printed a mount and added rubber bellows and an polyurethane foam earplug (cad file is in the github repository), but it wasn’t entirely stable. What mount and what damping material did you use?

1 Like

Cool!, it took me a while to work out that vibrations were at the root of the tracking issues. The anti vibration mount is just one I had left over from a cheap hobbyking gimbal, maybe I just lucked out that it worked straight away with that.

I would quite like to add some sort of controller interaction like your demo, looks like you had it working very nicely.

Servers by jDrones