Here at Banana Robotics, we're very lucky to have a sneak peak at the Arduino Robot. It's about 7 inches in diameter and features two separate Arduino microcontroller boards. The upper deck is the Control Board and the lower deck is the Motor Board. Each board has TinkerKit type connectors for expansion. The two boards talk to each other via a serial port.
The Robot's Brain
The Control Board is the robot's brain. It has a small color graphic display, five button keypad, a knob and a speaker which make up the robot's UI. Most of the time, when you program the Arduino Robot you will actually be uploading your sketches to Control Board. It integrates seemlessly with the Motor Board "firmware" so that it can operate every major function of the robot. We like the mini UI that the robot provides using the LCD and keypad. The general purpose knob is also useful for tasks such as varying the motor speed during runtime. We also like the ability to play tones and melodies. There's also an SD card reader attached to the LCD module. There are some special functions that grab graphic and sound content from the SD card but it can be used for general purpose storage as well.
Built-In Sensors
The Arduino Robot has a few built in sensors: five relectance sensors and a compass. We really like the addition of a compass as a base part. It can be useful for orienting the robot and provides some level of direction that is really difficult to achieve otherwise.
We feel the robot needs some kind of obstacle detection or perhaps an accelerometer with rubber bumpers around the edge to detect when it crashes. Adding ultrasonic or infrared distance sensors is probably one of the first things most users will want to do. There is a cutout at the front of the lower deck that seems like the perfect spot to add some forward crash sensor, micro switch type feelers or bumpers.
The Robot's Muscle
The Motor Board handles the task of driving the motors and has five reflectance sensors on the bottom for line following. The Motor Board has enough intelligence to be able to follow a line by itself without any help from the robot's Control Board brain.
The five reflectance sensors could be used for edge detection as well but they seem to be located a bit too far from the edge for that purpose. Your robot had better react very quickly to detect an edge it could fall off and every additional centimeter from the wheel axis helps in this regard. I guess the Motor Control board could be programmed to automatically stop quickly and alert the Control Board when an edge is detected. Meanwhile, be careful running this bot on your table top.
The motors are pretty fast and you'll likely want to slow the robot down quite often. Choosing too slow of a motor speed reduces the torque needed to move the robot. We couldn't get the robot to move well on a carpeted floor but it runs very well on a flat surface. The "Disco Bot" dancing demo is a bit scary with the robot darting back and forth so quickly. Add a razor blade edge and that demo could do some serious damage.
We really like the ability to calibrate the motors so that the robot goes straight. Calibration is performed using a screwdriver and the robot seems to stay calibrated very well.
The motors automatically shut off when attached via USB. This is a great feature because it keeps the robot from taking off after you upload a sketch. We found that we had to reset the robot after unplugging the USB in order for the motors to work.
The lower Motor Control deck also holds four rechargeable AA batteries. We like having the battery charger built into the robot.
Expansion Abilities
As far as expansion goes, the Arduino Robot is designed to use TinkerKit connectors. It will not accept any Arduino shields. The top deck has eight analog input connectors and the bottom deck has four connectors that can be as analog input or digital I/O ports. There are also a few extra ports that require soldering to access additional digital I/Os and I2C ports. We'd like to see future revisions come with connectors pre-soldered to every port.
There are penty of solder pads available and a few mounting holes but we would prefer more mounting holes and additional male or female I/O headers. We really don't want to encourage anyone to solder directly onto the Arduino Robot circuit boards. Perhaps a few stick-on mini breadboards would do the trick. We kind of miss the easy access female headers available on the Arduino microcontroller boards and the ability to plug in a variety of shields. But the simple TinkerKit connectors and I2C ports are a lot more flexible.
What we really like about the Arduino Robot is how we expect it to influence the future. We have noticed that there are a lot of 3 pin sensors and other modules out there that use different connectors and pinouts. This has really driven us bonkers at times and we really hope that the Arduino Robot finally pushes everyone toward a common connector and pinout. The TinkerKit 3 pin connectors may not be ideal but they are readily available and cheap. They are common Molex type connectors and can accept the standard "male plug with female pin" servo type connectors.
Programming API
The Control Board and most of the robot's features are accessed through a single RobotControl class. This class provides access to most of the robot's functionality such as motor control, reading the sensors and performing UI. The Motor Board has its own RobotMotor class that can be used for advanced purposes. We haven't tried programming the Motor Board at all yet. Most users will not mess around with the Motor Board except to update its "firmware" from time to time.
To be honest, we are a little disappointed by some of the choices made when designing the RobotClass API. For example, the graphics and sound functions are quite limited and some of the functions had us scratching our heads like the ability to read and write the user name, city and country into EEPROM. At times it feels like the API was designed for a specific project and then quickly made public rather than being designed for the public from the start. We are not big fans of the automated line following mode either. However we do feel that overall the RobotControl class is fairly easy to use and perhaps beginners will have a greater appreciation for it. Of course, you can modify the RobotControl and RobotMotor source code all you want or make your own robot code from scratch as needed. I suspect we'll see a lot of improvements to the API in the near future.
Conclusion
Overall we are excited about the Arduino Robot. We like Arduinos because they are friendly and approachable. Our first impressions of the new Arduino Robot are mixed. There are features we really like and some important features that are missing. We feel the API could have been designed a lot better and we wish all of the I/O ports were easily accessible.
However, we are excited to see the Arduino team release the first official Arduino Robot and we are sure that this robot will have a big influence on the future of small robots. If nothing else, we expect to see lots of "TinkerKit compatible" sensors and modules as developers strive to make their modules Arduino Robot compatible. And having a standardized connector for sensors and modules would be a great milestone that would benefit all of us.
Available at Banana Robotics
We have a fun unboxing video on our Banana Robotics TV channel and will be adding more videos of the Arduino robot in action. The Arduino Robot is available today at the Banana Robotics shop.
The Arduino Robot is a great option for anyone who wants to get started with robotics. They also make great gifts.