Release 2017.06.23.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

  • When ez-bits are missing, do not allow user to SKIP. Now first time users must SYNC or CLOSE. Skip is no longer an option.

  • Script Flow control bug fix for 3rd party controls. Find out more about script flow by clicking HERE

  • Dynamic Turning with camera control Movement Tracking (see below)

This is a fun release because it has a pretty significant update to the camera movement tracking. The movement tracking is a setting in the camera configuration which tells the robot to physically follow the specified tracking type using the movement panel. Of course, a Movement Panel is required in the project for this to work. The old movement tracking would stop the robot and turn toward the object. This new addition uses a Dynamic Turning option. This means the robot will turn toward the object while moving forward. The further the object is to the edge of the screen, the harder the robot will turn in that direction.

User-inserted image

  1. Enabling this checkbox instructs the camera control to use the Movement Panel and have the robot physically follow the object.

  2. Enabling Speed Settings tells the robot to use the specified speeds when tracking with the movement panel. Forward, Left and Right speeds can be specified and tested here.

  3. Enabling Dynamic Turning will have the robot turn toward the object at a variable speed. The values in this area are the SLOWEST speed the robot's wheel will turn in that direction. This means SLOWER = MORE TURNING. The further the detected object is from the center grid lines, the faster the robot will turn. Having this number as low as possible is usually best. For Roli, it would be set for a 1

Here is an example of the robot NOT using dynamic turning. Notice how the robot STOPS and TURNS and STOP and TURNS and STOPS and TURNS, etc...

Here is an example of the robot USING dynamic turning. Notice how the robot continues straight while tracking the object...

ARC Downloads

ARC Free


  • Includes one free 3rd party plugin robot skill per project
  • Trial cloud services
  • 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
  • Cloud backup
  • 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
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

Elevate your robot's capabilities to the next level with Synthiam ARC Pro, unlocking a world of possibilities in robot programming.


@DJ Nice work! As usual. These refinements in steering and navigating are really going to benefit IPS especially....Until recently I didn't think it would be possible but I really think I can have an inMoov or inMoov type robot serve drinks at one of our (Sue's) house parties. I mean actually do it and not be just be a novelty or topic of conversation because it just looks cool... I keep saying this but I will be doing another video eventually on this kind of theme... Thanks for your hard work...:)


ah dynamic turning, can this apply to a custom movement panel? Like a robot moving forward but then turn SOME to the right without stopping. Similar to how you would expect a rc car to gradually move left or right as it is already going forward?


You described what dynamic turning is. So I'm uncertain about the question.

Any Movement Panel that supports speeds for left and right wheel can use dynamic turning option. Obviously the Movement Panel will need to support the left and right wheel speed settings. If you're using a custom Movement Panel due to some unsupported hardware, ensure your code is using the GetSpeedLeft() and GetSpeedRight() values for your hardware.


@DJ I pretty much get what you saying... So let me get this straight... In the instance of using the custom Movement Panel (not the built in sabertooth movement panel) with a sabertooth controller (this is usually my setup). In order to use dynamic turning I will have to use or manipulate GetSpeedLeft() and GetSpeedRight() variables in order to drive the sabertooth channels correctly... Or just use the built in Sabertooth control? Do I have this straight?



The built in sabertooth controller supports speed, so dynamic turning applies. Speed means the speed of what a wheel turns. If you were to go full speed, the wheel will turn X number of times per minute. If you go half speed, the wheel will turn X/2 Per minute, etc.

The speed ability is what allows the robot to dynamically turn.

Without speed ability in a movement panel, there's no way to adjust the speed of a wheel. Controlling the speed of a wheel is necessary for dynamic turning.

A robot cannot dynamically turn if the wheel speeds cannot be controlled. The only way a robot can turn without wheel speed is to stop the wheel.

Stopping a wheel is not dynamic. Stopping a wheel to turn is binary.

Dynamic turning uses the wheel speed to turn. Dynamic turning will slow the wheel down in the direction the robot needs to turn. Without wheel speed control, dynamic turning cannot work and your robot will always move straight.


@DJ Thanks got it my friend... :) This will work nicely with my roomba's too...


I don't think the roomba has speed control, does it? I forget


@DJ I am not sure about the built in roomba control as I mostly use the custom movement panel. But yes, the Roomba does use speed control... Even if it doesn't exactly match up to GetSpeedLeft() and GetSpeedRight() simple math will correct for variations...


Getspeed and setspeed is a number between 0-255

If there are two speed sliders on the roomba control, then it supports two speeds and will work with dynamic turning.


@DJ The Map() function could be useful when 3rd party hardware doesn't match 0 - 255 as a speed control. Anyway, I think your dynamic turning ( and ez scripting) is pretty flexible and probably can be used with any 3rd party robot or controller... A little bit of math never hurt anyone...:)


All ezrobot controls for speed accept 0-255. There's an internal mapping function in ARC for that.


Show me your roomba code and i'll show you how to turn it into a plugin with speed ability if you want


@DJ Here is a project I created when I was messing with roboRealm for visual navigation. It should provide you with info on how I use the custom Movement Panel and getting other info from the roomba... I am a little embarrassed because I am a little bit of a messy coder...:)... Let me know if you need anything else... Create_2_Mapping.EZB


Yeah looks like you should be using the Map function. Here's how to use it...


Map( input, inputMin, inputMax, containerMin, containerMax ) Returns a scaled value of input between containerMin and containerMax. Specify the known input’s minimum and maximum values, and the known container (output) values. For example, if you were to scale a value between -1 and 1 to 0 and 180, enter this, which returns 135. Example: $x = Map(0.5, -1, 1, 0, 180)

User-inserted image


This will work fantastic with IPS... I am almost as excited as when I first got my ezb3 4 years ago... :)


@DJ, thanks for this new release. You've been pumping these great releases out, it will take me 3 more years to caught up.:). You must have figured out how to clone yourself.