After what seems like a dog’s age, a new release of ROBOTC has been, well, released (as is often the case with releases). Here’s what I know so far.
Many platforms, one program
They’ve done a major overhaul of the internal workings of the ROBOTC program and compiler, you no longer need to install multiple versions for each platform you want to program for. Enabling a new platform is as simple as installing and activating the appropriate license. This is a great advantage for educational institutions as there is now no need to keep several pieces of software up to date but just one.
There is still support for the Mindstorms NXT, VEX Cortex and PIC. Support for Arduino will be added at a later date. I have played with an early Arduino version of ROBOTC several months ago and wrote about it here: [LINK] and here: [LINK]
If you don’t have a robot, never fear! You can now use Robot Virtual Worlds, a completely 3D environment where you can run your simulated robot through a number of obstacles on virtual table tops. There are many different tables to pick from and many more to come. Just take a look at some of these awesome looking ones: [LINK]. Now all the kids in the classroom can have their own robot and you’ll never lose another LEGO piece or break a sensor again. The virtual battery packs on these robots also don’t run flat, at least I would hope not.
You can now also chose to run your program on an emulated NXT. That’s pretty handy if you don’t have a brick handy but you want to try out your program anyway. Naturally you can’t emulate everything but it’s still very useful.
Making things easier
As mentioned in a previous post, the folks at the Robotics Academy have been working hard on making ROBOTC more accessible to beginners. They have a new API called “Natural Language” which allows you to program your robot with very simple sequential commands, much like an NXT-G program. Below you can see an example of such a Natural Language program.
task main() { robotType(rembot); // We are using the REMBOT. forward(50); // Move forward at speed 50. wait(2.0); // Wait 2.0 seconds. stop(); // Stop the robot. wait(); // Wait for 1.0 seconds. backward(50); // Move backward at speed 50. wait(2.0); // Wait 2.0 seconds. stop(); // Stop the robot. wait(); // Wait for 1.0 seconds. }
The sensor and motor configuration dialog has had a total revamp to make selecting the correct sensor easier. You can also make it preconfigure the motors and sensors for a standard robot, so you don’t need to fiddle with these settings yourself. This is a robot that is also used in the official ROBOTC curriculum. There is also a standard robot configuration for the one you drive around in the Robot Virtual World for the NXT (and presumably also for VEX). This avoids misconfigured motors and sensors but it won’t stop you from connecting the sensors to the wrong port of course! Now the teacher can focus on teaching instead of debugging.
It’s this type of feature that makes the time between building, programming and actually having a moving robot shorter and allows you to focus on the fun stuff: completing the programming challenge.
Many of the previously cryptic compiler errors have been overhauled and made more informative. After all, what’s the use of issuing error if nobody can understand what it means, right?
New Language Features
The developers also added a number of new functions and features to ROBOTC to make it even more powerful than it was before.
ROBOTC finally has semaphores, so you can now protect your critical pieces of code to make them truly atomic. Just be mindful of deadlocks and resource starvation issues. They have added many new string functions and you can now convert your strings to integers and floats using atoi() and atof(). If you ever needed to move large chunks of data inside an array, you can now use memmove(), which behaves just like its C counterpart.
Other Miscellaneous Improvements
Besides all the above enhancements and additions, there are a number of other very cool new features. In the editor you can now comment and uncomment blocks of code with a press of a button or, better yet, a keyboard shortcut (CTRL-Q). You can also instantly reformat your file to make it look uniform (it’s the little magic wand button next to the comment button). This is especially useful when working on a project with a number of people. ROBOTC will also warn you if a file was changed on the disk while you were working on it, rather than just overwriting it. I am sure the FTC teams will find these new features very useful.
The documentation has had a good thorough update and has been rewritten where necessary.
New License Model
As much as we’d like it to, all of these wonderful enhancements and features don’t come for free. Up until now, ROBOTC has always given free updates if you had a license. This proved a little bit unsustainable and they have reworked the license model. It’s a little complex but it basically boils down to two main license types with several bundle and bulk options for each type.
Annual License – 365 Day license that starts the day the first license is installed on a computer; you are eligible for all software upgrades for the 365 day term of your license.
Perpetual License – The software does not expire and you are eligible for all software upgrades for the life of that version of the software.
If you have a ROBOTC 2.x license, you’ll be happy to learn that they have license upgrades at a reduced price. You can still continue to use your 2.x license for your 2.x software but if you want to start using ROBOTC 3.x, you will need to purchase either an upgrade or a new license. You can find out more detailed information about all the various licenses, bundles and discounts on the license pages:
If you bought a ROBOTC license this year, you can upgrade your license for free. If you have bought a license for ROBOTC 2.x in the past, an upgrade to 3.x will set you back a mere $30. This is the price for a single license, of course.
Still to come
There are some very exiting features in the works that will be added to ROBOTC 3.x in the coming months:
Support for the Arduino platform
- Multi-Robot Tools and libraries to allow your robots to communicate via XBee. If you ever fancied starting Armageddon with your robotic NXT or VEX Cortex swarm, nothing stands between you and world domination anymore.
- VEX I2C Sensors and Integrated Motor Encoder support
Complete list of changes
The fairly complete list of changes can be found here: [LINK]. It’s a very big list and you’ll see why I didn’t add them all to this article. Please note that this list is not an official list, it’s one compiled by me from documents sent to me and posts on the forums.
Conclusion
While they increased license costs may seem like a bit of a hurdle for some, I really think that the new version of ROBOTC is well worth the money. So many improvements have been made and there seems to be something new in there for everyone.
Most importantly, all the drivers in my suite. Version 2.1 can be found bundled with ROBOTC 3.x in the samples for NXT folder. Of course, you can always find the latest version of the suite here: [LINK].
You can download the latest version of ROBOTC 3.x right here: [LINK]. It’s the NXT page, but remember that there’s only one single program now, so this one will work for VEX Cortex and PIC, as well as the Robot Virtual World.
But wait…
The give-away is over, the lucky winners have been drawn. Check if your name is on the list here: [LINK].
That’s not all! I have 75 ROBOTC 3.0 annual single-seat licenses for the Mindstorms NXT platform to give away! Just sent an email with your name to xander_at_botbench.com (replace the _at_ with @) with the subject “ROBOTC LICENSE GIVE-AWAY”. Only one license per person, don’t be greedy. On Tuesday 20 September I will compile a list of all the people who have sent me a mail and I will draw 75 random names from it. I will publish the names (not email addresses) of the lucky winners on my blog and you will receive your license in the mail in the days following (it takes a lot of work to type 75 emails!). I promise I will try not to subscribe your email addresses to any spam lists and will only sell them to the highest bidder, offers can be sent to…nah just kidding.
Hiya Xander, quick question about RobotC for FTC. Is it necessary to update to the 3.0 version for Samantha Module reasons? Some guys in our school were deciding not to buy the new version. I told them otherwise, but I need you to back me up. I saw the complete changes pdf with the samantha stuff, but is it necessary for FTC, is my question.
P.S. I sent the email! Thanks for this opportunity.
There are many, many new features bug fixes in 3.x that make this upgrade worth it. I will inform about the Samantha module thing. I don’t own one and am not familiar with how it works or how it worked in 2.x. Can you be more specific than “Samantha Module reasons”. Are there specific features? I know you can now upload new programs and debug via Wi-Fi.
Well, here are some of the things we experienced as “Samanthad Module Issues”
1. Durring gameplay, there times for 10 seconds or so where the samantha would lose connection with the robot, and the robot would not repsond to the joystick, so it would just move forward until Samantha established connection again. Maybe if something like this happends, RobotC 3.0 has faster protocol to deal with this, I dunno
2. It is hard to setup unless you have someone with more than average skills in networking. I do, but some of my teammates don’t. But the main reason is numero uno.
Did you report these issues to the support email address or the forums?
Well, no. That is because there was an “Email Blast” talking about upgraded samantha protocol. I just thought you would know something about it, since you work on the RobotC stuff and all.
They can’t fix what they don’t know about.
Hi Joraaver,
Issues of communication loss are not related to ROBOTC, but rather with the Samantha Module and Access Point you are using. ROBOTC sends the message via your Network Card, but if the Samantha module is out of range or mis-configured, there isn’t much we can do.
I do agree that setting up the Samantha Module does require some “networking” ability, but once it is set up, it should be pretty seamless.
You should talk to the FIRST/Samantha developers – they are very responsive to technical issues. Thanks!
– Tim Friez / ROBOTC Developer
Thanks for the reply Timothy
Oh yes, did I forget to mention? September 20th is my birthday 🙂
Jooraver, here’s hoping you’ll get lucky! May the rand() Gods be with you 🙂
Hi Xander! I’ve a question about RobotC, if I install it on my NXT brick the bluetooth communication syntax will be changed? I ask this because I made a program in Visual C# that communicates with the brick via bluetooth.
Thanks!
I am not sure, to be honest. Some things will be different, I am sure. However, I am intending to use Mindsqualls (C# library) on my PC and use simple Mailbox messages to control the NXT. I want to have a small program on my brick that interpret these short messages and take action that way. In any case, switching back and forth between the ROBOTC firmware and the standard LEGO one (or John Hansen’s enhanced firmware) is not much trouble at all. You can download ROBOTC and try it for free for 30 days anyway. Just enter the give-away for the annual license and you can then just change the license if you win 🙂
hi Xander
i would like to joint yr lucky draw to get a copy of robotc 3.0 😉
thanks
You need to send me a mail. Make sure you read the instructions at the bottom of the article.
[…] for the ROBOTC 3.0 annual license give-away, to do so now! All the details can be found here: [LINK]. Submissions end Tuesday 20 September 2011 (tomorrow) at 18:00 CEST (UTC+2). Any submissions […]