ARC 2020.04.03.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

Welcome to the new ARC (Autonomous Robot Control) Software!

ARC includes many innovative features to empower you to lead the next generation of robotics. Such as an incredibly fast JavaScript ECMA 5.1 compiler for scripting, new threading engine, and many behind the scene performance enhancements. The new ARC is not only significantly faster, it offers the the dynamic power of JavaScript for robot programming.

Why ARC? Synthiam has been active as a leader in robotics for a number of years. Trail blazing many approaches that are now common place to robots. We've been successful at making advanced technologies available to creative users, who want to build robots without messing about with complicated code.

"A story ARC (also narrative arc) is an extended or continuing story line in episodic storytelling media such as television, comic books, comic strips, board games, video games, and films with each episode following a dramatic arc. On a television program, for example, the story would unfold over many episodes."

We see our robot software being part of the story ARC of robotics. By connecting your ideas to reality as we progress toward a future where robots co-exist alongside humans. It's our passion to connect the dots, fill in the gaps, and find the missing links of the industry.

For this, we're all part of an ARC in the story of robotics.

Significant Changes With this release, you will notice a much faster response in the UI and increased scripting execution time. The new JavaScript engine allows user definable functions, access to .Net objects through reflection, and functions defined by plugins. With .Net reflection, your programs have access to the entire operating system, .Net controls and ARC framework. That means presenting user dialog boxes, creating custom UI interfaces, and a lot more.

We'll begin updating the website documentation to provide examples of how to use these new features during the upcoming weeks.

User-inserted image

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

Experience early access to the latest features and updates. You'll have everything that is needed to unleash your robot's potential.


I think this is a good place to ask my rookie questions. I also just switched to ARC today. So far so good. My project is all written in EZB scripting. If I understand correctly, my EZ scripts will not run faster in ARC. I have to convert them all to Javascript ? Can EZ scripts coexist with Javascripts ?


Welcome to the new ARC:D

EZ-Script will run slightly faster in ARC than they did in ARC. However, they won't run nearly as fast as JavaScript. You don't have to change over - but for the added reliability and improved performance, it's not a bad idea. Also, JavaScript is a lot of fun!


I'm finding a couple issues. I don't know if it's my new laptop or ARC.

I have a large project that is spread across all three virtual desktops. Screen one looks fine. I have no scroll bars on screen two and three even though my controls extend way down below the bottom of the screen of both desktops. There is no way to scroll down to the controls down under.

I can't find a way to see what version of ARC I have. I do see the version if I load a blank project but if I load my project from a shortcut on my windows desktop there is no way of knowing. I thought it would be visible under the "About" tab but no.

When I do a "Check For New Version" under the Help tab all I see is a quick flash of a window opening and closing and then nothing. I would think there would be a message telling me I had the latest version or tell me I do not and give me instructions on how to get the latest version.

If I have my windows founts set to 125% I get a message at ARC startup that I should run within a recommended resolution and then miss states what resolution I am actually running at. For example I'll have my res set at 1366 X 768 and it ill tell me I'll be running at 1093x614 (96x96 dip). When I change Windows founts back to 100% the error goes away. Your tutorial says fount sizes of 100-125% is recommended. It seems that setting the fount size above 100% messes something up in ARC reporting the actual resolution the computer is running at.

Other then this it's a wonderful experience and works nice.

#4   — Edited
  1. In software programs, the ABOUT window displays the version information - this also includes how to get the version of your windows program. So, click ABOUT in the ARC top menu and you will see the version:)

  2. The scrolling has always been a strange issue with windows and the way ARC works. By clicking and moving a control, the scroll bars appear. It's not desired but it's the only way we can seem to get ARC to do that. Also, pressing Smart Arrange seems to fix it as well.

  3. The screen resolution that is prompted is because you have the size set to 125%. So your physical resolution + the size scaling. That's what the size scaling does.


@DJ Sures Thanks for your response. It does confirm my understanding. I'm actively converting now, and yes, Javascript is a lot of fun. Somehow, it is kind of familiar as I did some  C# programming years ago.

I do stumble on some obstacles here and there, but with reference to the as suggested, I'm able to resolve them (except my current array definition issue). Is there Javascript script examples that we can look at ?


OK, Using the Beta-2020-04-05-00-19321 version I now have scroll bars on desktop 2 & 3. Thanks.

I also see the person number in the About section. I guess I'm just blind. LOL.

Thanks once again!


@ DJ Sures Progression from EZB srcipts to ARC scripts progressing very well, and I'm learning too. But back to arrays. I'm still stuck. Creating and accessing array within an ARC script, no problem: Pixel = ["P0","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15"];

_count = 0; while(_count < 16) { print("count = " + _count); print("Pixel = " + Pixel[_count]); _count++; }

But  I need to create the array in Init ARC script, and access the elements in another ARC script (global variable). But when I try to define with the same way as I do for global variables with the setVar(), I get: <<Variable is an array: $Pixel>>   and $Pixel is not shown in the global variable list i(t is not defined) Init script: setVar("$Pixel",["P0","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15"]);

How to define the arrays ?


Oh - I see... You want to push an array from JavaScript to the global variable. You're right, it seems to be not working. I just fixed it now and will publish it in tomorrow's beta channel for ya:)


Oh, btw... you can get the length of an Array in JavaScript with .length... like this...

Pixel = ["P0","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15"];

_count = 0;

while(_count < Pixel.length)
print("count = " + _count);
print("Pixel = " + Pixel[_count]);

or you can simply loop through like this...

Pixel = ["P0","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15"];

for (int i = 0; i < Pixel.length; i++) {

  print("Pixel = " + Pixel[i]);


@DJ Sure Thanks.:) The global variable array definition works (They show up in the global variable listing) setVar("$Pixel",["P0","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15"]); But for some reason, I can not use a variable as an index to retrieve an element. This is ok: print(getVar("$Pixel[15]") ); But this does not work ( I get: << Input string was not in a correct format. >> _count = 0; x = getVar("$Pixel[_count]");

Same thing with a local script: << Input string was not in a correct format. >> _count = 0; x = getVar("Pixel[_count]");

Also, I can not get the .length to work.  setVar("$Pixel",["P0","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15"]); print(getVar("Pixel".length) ); That gives me << Variable not defined: $5 >>



Assign the global variable to a local one.

var myArray = getVar($globalArray);

and then do stuff to that array


It says I have 2020 4.7 beta , a later version


@DJ Sures Yooohooo, it works !!!:D It took me a while to figure out a syntax error, but I'm not about to gorget it now (hope not). When retrieving elements from the array in the loop, I was coding getVar("$Pixel[_count]"); instead of getVar("$Pixel[" + _count + "]");xD Now that I have control over the individual pixels of my Neo-Pixel Ring, I got to figure out how to write to the serial port. In EZB scripting, I was writing: $NeoPixelSerialPin = "0.d18" // Define serial pin (init script) SendSerial($NeoPixelSerialPin,9600,"C0,0,0") // Send string "C0,0,0" to serial port at 9600 baud But now, I assume I must use the COM.  So just open port and send data ? Open port:, baud);, 9600); Send data: com.writeString(port, str); COM.writeString(???, "C0,0,0"); Am I close ? What do I write for port ?


Use UART not COM. COM is a com port on the PC. THat's different

User-inserted image


@ DJ Sures Working perfectly. Thanks

I may have found an new "feature" with Servo.decrement(port, position) on ARC Version 2020 04.09 Something as simple as <<Servo.decrement(4, 5, 1);>> or <<Servo.decement(4,1)>> moves the servo way more than the value 5 or value 1. It moves all the way to limit setting and it appears that the servo can not be released. ?!?


Servo.decrement fixed in tonight's build on ARC's beta channel