Windows Release 2016.01.30.00



I assume the figure 8 needs to be done on the Horizontal plain?

nope, in fact, part of the pattern is tipping the device upside down for half of the 8. Watch any video of calibrating an iPhone or Android phone to see the motion. Takes 2 or 3 passes to calibrate.




You had mentioned you have an adventure bot and that you were going to install the compass board like I have it in the photo. I was wondering if you have tried this out yet and recalibrated it and if it helps out and improves accuracy? Haven't seen a photo of your adventure bot, but you could extend it above the camera to help with interference? Rick Smile Smile Smile Smile


Have you found a way to invoke the Calibate button from a script?

I plan on having the Adventure Bot do the Figure 8 dance at her than me picking it up, if I could find a way to start the calibration process



Calibration is limited to physically pressing the button. A "figure 8 dance" could never work because the robot cannot move upside down. Remember, the compass is 3 axis and the robot therefore needs to move across all 3 axis. When you do a figure 8 with your hand, it's moving across 3 dimensions. If the robot is to drive in a figure 8, it's only moving across 2 dimensions.

Also, even if the robot could magically flip upside down or rotate, the robot driving won't get enough loops of the figure 8 to get enough data points for a proper calibration.

Lastly, the servo motors, as you've seen from using the compass, will affect the readings while the motors are activated. This is because motors use electromagnetic process to spin.


ah, good points... Smile

Does the compass need to be calibrated every time the robot power cycles or just once we notice its getting inaccurate?


Generally every time it power cycles, because there are no min/max values for calibration.


Although this software change was great, I have found the need to calibrate every power cycle has limited me to only using the compass on my adventurebot since I can easily pick it up, but I run into issues because it is hard - though not impossible- to get it far enough from the servos that they don't effect it.

I am thinking for my larger robot(s) about either getting an old iPhone and using the Sensor Stream object, or finally learning C# and making an Android version of Sensor Stream since I already own several old Android devices. that way I could make a bracket to hold it on the robot, but pull it off when it needs calibration. I find my work provided iPhone 6S only needs to be calibrated once every 3 weeks or so. the Android phones seem to need it every few days. This would also have the advantage of GPS and tilt sensors as well as compass all in one package.




Interesting idea. I'll give it a try



If you're going to use sensor stream, let me know and i'll make the control create variables


That would be great. Ideally, I would actually like to use one of the following three Android IMU (sensor streaming apps), but updating the current object to create variables would be better than nothing. (maybe turn it into a plugin and open source it to kick start my conversion to make it work in one of the Android apps. It looks to me like they are very similar to the one iPhone sensor streamer app, but the sensor IDs are different. Otherwise, I think the conversion should be pretty simple.

HyperIMU seems most up to date, but has very few reviews.

Wireless IMU specifcially mentions it can run in the background, which would be nice, but it hasn't been updated since 2012, so if there are issues, I doubt I could get support.

SensorStream IMU+GPS looks like a port of WirelesssIMU last updated in 2013.

All three have links to sample Python code for reading the stream. None seem to have C# APIs.