ysoldak / HeadTracker

Zero configuration, auto-calibrating wireless DIY Head Tracker, for Nano 33 BLE and XIAO BLE Sense boards
The Unlicense
58 stars 8 forks source link

Configuration via Original HeadTracker GUI #46

Open dzaro-dev opened 3 months ago

dzaro-dev commented 3 months ago

Is it possible to have a firmware that would be compatible with the original HeadTracker from @kniuk so that the GUI can be used?

I'm asking this querstion for two reasons:

1) The GUI allows you to chose which channel you want to use for each axis.

2) It allows you to select between a HT transmitter and receiver.

I have installed the Arduino Nano 33 BLE in my radio because and it is working as a receiver, but it is waiting for a transmitter to be able to connect to it and receiver the information. I belive that this does not run the same way or am I mistaken? Since there is no GUI, I don't know how this is configured.

Would be nice if you can clarify these things and maybe make it compatible with the original HeadTracker at least as a trasmitter.

Maybe having two firmware, one for TX and one for RX would also be a great alternative.

ysoldak commented 3 months ago

Hi @bishko

Short answer: no, not possible, and no plans to implement this.

Long answer: Let me unpack the short answer here.

I see there is some confusion about different open source head tracker projects we have now. To my knowledge, here are 3 major HT projects on GitHub:

Denis Frie started original head tracker project in 2012, it run on Arduino Nano board and requires a separate IMU board connected to the Nano board. It is a wired solution. This head tracker was presented on RC Groups and inspired many, including us with Cliff to try and make our own, improved HTs.

Some time in end of 2020, both me and Cliff had an idea to implement a head tracker on Arduino Nano BLE board: it has both IMU and Bluetooth on board, so no extra soldering was required and, potentially, we could try and connect it to our radios via wireless trainer link (bluetooth). So we naturally joined forces and had shortly had first working version, with both orientation and bluetooth link working!

Almost from start though, we had different visions on how to proceed. I guess, Cliff wanted the best HT that works for everyone, means lots of features, a nice desktop configurator for calibration and settings. The real deal, THE project.

I, on my part, just wanted something simple that works for me (and great if for someone else too), and easy to maintain, very opinionated. I did not want this to become THE project for me, I'd rather go build and fly my planes :D So no configurator app, no manual calibration -- all, unavoidable and minimal, configuration happens in the radio. Then I've added a mini display, because it's fun and a centering button, because why not. But they both are extras, not needed for HT to work. Then I've switched to XIAO BLE Sense board to 1) simplify flashing with drag-n-drop and 2) because I like how small XIAO is. XIAO has no magnetometer (compass), that is believed to be absolute necessary to avoid pan drift. Formally speaking it is true, in practice though, the drift can be compensated in software good enough to be unnoticeable during regular 5-15 mins FPV sessions. Without magnetometer, the last reason to have a configurator app (for magnetometer calibration, tedious and unreliable task) disappeared for me.

So, by design, this head tracker project has no configurator and does not support any and will not in the future, it's just against the project's idea/philosophy.

Now, to your actual questions:

  1. This HT always outputs on first 3 channels. It is VERY easy to MIX these three trainer channels (TR1,2,3) to any random output channel in radio (I use CH13 for pan and CH14 for tilt). So there is absolutely no reason to have a separate configurator app for that. Please see an article how you can configure your OpenTX radio to achieve that. Example is for FrSKY's EthOS, but any OpenTX/EdgeTX radio is basically the same.

  2. This head tracker is only a "transmitter", it connects over Bluetooth to a master radio (or any other device) that supports PARA wireless trainer protocol. You may have Arduino Nano BLE connected to your radio that acts as a "receiver". That's fine, you need to configure it to connect to XIAO BLE Sense board running this head tracker firmware. Or Cliff's head tracker firmware, if that is what you prefer.

I hope this clarifies things a bit and answers your questions! Good luck!