Windows Release 2016.01.30.00

(Autonomous Robot Control Software)
Make robots with the easiest robot programming software. Experience user-friendly features that make any robot easy to program.

Change Release Notes

  • MPU9150 (All-In-One) sensor update

ARC Downloads

ARC Free


  • Includes a free 3rd party plugin robot skill per project
  • GPT-Powered AI support
  • Free with trial limitations

For schools, personal use & organizations. This edition is updated every 6-12 months.



Only $8.99/mo

  • 2 or more PCs simultaneously
  • Includes unlimited skills
  • Premium support discount
  • And much more

Experience the latest features and bug fixes weekly. A Pro subscription is required to use this edition.



  • Load and run any ARC project
  • Operates in read-only mode
  • Unlimited robot skills
  • Early access fixes & features

Have you finished programming your robot? Use this to run existing ARC projects for free*.

  • Minimum requirements are Windows 10 or higher with 2+gb ram and 500+MB free space.
  • Recommended requirements are Windows 10 or higher with 8+gb ram and 1000+MB free space.
  • ARC Free known-issues can be viewed by clicking here.
  • Get more information about each ARC edition by clicking here.
  • See what's new in the latest versions with Release notes.

Compare Editions

Feature ARC
  Get ARC for Free View Plans
Usage Personal
Premium support $14.99/ticket $9.99/ticket
Feature requests Yes
Early access to new features & fixes Yes
Simultaneous microcontroller connections* 1 255
Robot skills* 20 Unlimited
Skill Store plugins* 1 Unlimited
Cognitive services usage** 10/day 6,000/day
Auto-positions gait actions* 40 Unlimited
Speech recongition phrases* 10 Unlimited
Camera devices* 1 Unlimited
Vision resolution max 320x240 Unlimited
Interface builder* 2 Unlimited
Cloud project size 128 MB
Cloud project revision history Yes
Create Exosphere requests 50/month
Exosphere API access Contact Us
Volume license discounts Contact Us
  Get ARC for Free View Plans
* Per robot project
** 1,000 per cognitive type (vision recognition, speech recognition, face detection, sentiment, text recognition, emotion detection, azure text to speech)


Upgrade to ARC Pro

Join the ARC Pro community and gain access to a wealth of resources and support, ensuring your robot's success.


wooHoo! Compass and temperature both working. compass still a little jumpy, but hovers right around the actual direction it is pointing. I can definitely make this work.

Now I need to start working on how to script 45 and 90 degree turns. Easy except where I cross the 360/0 boundary. Calculating the heading is easy, but measuring that I have reached it I need to think about a bit.



This may help @Alan... I wrote it years ago for a robot that followed a GPS to a waypoint... Maybe it might help you? Or not LOL:) I cleaned it up for ARC but it may be of no use with the compass. Maybe you can adapt it somehow?...

# $wp1 = desired heading
# $tr1 = current heading
# twp = number of degrees to rotate

$wp1 = 90
$tr1 = $CompassHeading

repeatUntil($wp1 = $tr1)
$tr1 = $CompassHeading #update the compass
IF($wp1 < $tr1)     #calculate the shortest direction of turn to waypoint bearing

IF($twp <= 180)              # 'move right
right() # more code may be needed here
ELSE                           # 'move left
left() # more code may be needed here


Thanks @Richard. This is very similar to what I was thinking of doing, but has triggered some additional ideas.



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


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:):) :)


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...).



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 :):) :)


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, I assume the figure 8 needs to be done on the Horizontal plain?



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 :):):) :)


@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


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... :)

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.




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

Regards, Frank


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.



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



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


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.