-
Cleaning up code
09/30/2016 at 16:26 • 0 commentsI've made some good progress cleaning up the code, going from rough POC hacks to a more solid design th build off from. The next big change will be to add in support for more than one sensor. I also have now converted the angle information from a time into proper angles.
I mentioned earlier how stable the signal is. Below is an example of a sensor placed ~15 ft (4.5m) from the lighthouse. The sensor is near the center of the lighthouse's field of view (90 degrees is centered in X and Y), although I don't expect that to affect precision.
Units are degrees.
74.7528 96.7279 74.7538 96.7282 74.7540 96.7269 74.7543 96.7285 74.7556 96.7264 74.7558 96.7274 74.7556 96.7300 74.7538 96.7261 74.7553 96.7282 74.7538 96.7264 74.7538 96.7282 74.7497 96.7292 74.7530 96.7277 74.7530 96.7267 74.7533 96.7277
-
Lots to do...
09/29/2016 at 06:48 • 0 commentsI made a little more progress on this tonight, but I'm also starting to see just how far there is to go. While I can still get an awesome positioning signal for a sensor (specifically, angular position relative to the lighthouse), there's still a ton of work to be done before you can spit out a 3D position in a Cartesian coordinate system.
In my attempts to understand the signals, I've been relying heavily on this page for its deconstruction of the lighthouse signals: https://github.com/nairol/LighthouseRedox
So, here's my current To Do List:
- Clean up code
- Must be done-- right now it's just a hacked together POC
- Add support for at least 5 sensors
- Don't think this will be too bad. Should jsut be duplicating what's already there.
- Figure out the math/ algorithm for generating a full pose
- This is starting to look pretty wicked. If anybody else is knowlegable and interested in this area, I could use some help here.
- Decode the OOTC frame
- Thanks to nairol's work, I've come a long way. But the payload is still very much a mystery. I've started looking into the payload, but haven't made much progress.
- Figure out how to decode data in the presence of 2 lighthouses
- I'm guessing that the OOTC frames are just interlaced here. Shouldn't be too hard to check this out.
- Clean up code
-
TS3633-CM1 Arrived in the Mail
09/28/2016 at 08:00 • 3 commentsThe HTC Vive's position tracking system is a thing of absolute beauty. Instead of trying to describe it here, check out this description. All the credit for this design goes to Valve. They're very generously freely licensing the technology to anyone. And they've gone further by really enabling the community by designing and making available tracking hardware that can trivially be connected to a microcontroller. Big kudos to Alan Yates for designing this system, and to Valve for opening it up.
The first TS3663-CM1 parts went up for sale late last week and I was fortunate enough to get my hands on a 10-pack. They showed up on my doorstep this afternoon. Time to get building!
A couple of important considerations in using this sensor for determining position are 1) you need to measure the spacing of pulses with very high precision, and 2) you need to be able to read from a bunch of the sensors at once (5 are needed to get full 3D position and orientation). Of the various Arduino boards in my toolbox, the Due looked the best to me. It has an 84Mhz clock, and can measure time at 42Mhz (~24ns per timer tick). It also has a ton of digital IO pins, all of which support interrupts.
With that in mind, I've written a first proof-of-concept program to read a single sensor and report basic position data back out the serial port. The code is ugly, but it works great. The position information is incredibly stable, and the precision appears to be sub-centimeter even when the lighthouse is ~15 feet (4.5m) away.