Windows Release 2016.01.30.00

Download and install the latest ARC robot programming software to experience these updates.

Download ARC
Software Information
Changes:

- MPU9150 (All-In-One) sensor update
#3  
Thanks @Richard. This is very similar to what I was thinking of doing, but has triggered some additional ideas.

Alan
#4  
Hi Richard,
This is similar to my need also. Thanks for posting it.

Hi Alan,
I am interested in seeing your ideas also, once developed.

Ron R
#5  
Hello All,

I purchased an mpu9150 on line and it appears to be working per the lattest tutorial, etc. I have an adventure bot and not sure how to mount and calibrate it on the robot? I have included a photo of how I have it mounted and was wondering if this will work for proper compass readings. Also I watched video on how to calibrate an iphone compass but not sure how this relates to my adventure bot and where the sensor board is located. Maybe someone with an adventure bot or other robot with this sensor board may have some ideas or a video?
User-inserted image


Thanks much ! Rick
:):):)
#6  
That is a good location for it. I had mounted mine on the front, above the wheel servos, and the motors generate enough magnetic interference that it is not as accurate as it could be. I think I'll try moving to the back like this as well.

To calibrate, you do it just like an iPhone or Android phone. With the compass control active, pick up the robot and move in a figure-eight pattern. (this is going to be tricky when I mount on my robot dog that is going to weigh ~90 lbs. I may need a different solution by the time I get it built...).

Alan
#7  
Hello Alan,

Thanks for the reply ! I've searched on you tube and have found several methods to calibrate the iphone compass.

With the compass in the location it is at how do I initially hold it when starting the calibration? Does it need to be held flat with the sensor board to the right and would north be zero degrees once it is calibrated properly? Thanks much Alan ! Rick :):):)
#8  
It doesn't matter how you hold it to start. It is the figure 8 movement that matters.

Yes, 0 degrees will be north when you are done.

Alan
#9  
@Alan,
I assume the figure 8 needs to be done on the Horizontal plain?
#10  

Quote:


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.

Alan
#11  
Alan,

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 :):):):)
#12  
@thetechguru
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

Regards,
Frank
Synthiam
#13  
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.
#14  
ah, good points...:)

Does the compass need to be calibrated every time the robot power cycles or just once we notice its getting inaccurate?
Synthiam
#15  
Generally every time it power cycles, because there are no min/max values for calibration.
#16  
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.


Alan
#17  
@thetechguru

Alan,
Interesting idea. I'll give it a try

Regards,
Frank
Synthiam
#18  
If you're going to use sensor stream, let me know and i'll make the control create variables
#19  
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.
https://play.google.com/store/apps/details?id=com.ianovir.hyper_imu

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.
https://play.google.com/store/apps/details?id=org.zwiener.wimu

SensorStream IMU+GPS looks like a port of WirelesssIMU last updated in 2013.
https://play.google.com/store/apps/details?id=de.lorenz_fenster.sensorstreamgps

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

Alan
#20  
That would work for me too.

Using an IOS device, I can the blue item in the control display in ARC tracking the compass, but of course not the specific compass variables (yet) :)

$accelerometerXYZ, $altitude, $GyroscopeXYZ , $Latitude & $Longitude, $MagneticHeading all seem to be there and working

Only downside I see, is that the app needs to have focus on the IOS device

Frank
Synthiam
#21  
All apps on ios will need focus to run. Android has "services", but they're not used often because it'll slow down the device. Remember, these are phones we're talking about:D Not computers.

The ARC mobile app, for example, doesn't let the device sleep when it is loaded. That would be a good option for a compass/geo app
#22  
In my case at least, the Android device would be plugged in to a 5v power source on the robot. Either in settings, or enabling developer options for devices that don't have a setting for it, you can disable sleep when externally powered.

Also, if I were to run the IMU app in the background, it would be because I would be running Skype or Duo or Hangouts in the foreground to have remote video conferencing with whoever is in front of the robot, so it would be held awake anyway.

Alan