Dobot AI Starter Review

The AI Starter is a Robotic Car based on the well established Arduino architecture. It is primarily intended to be used in education for programming, automation and robotics.
After posting a couple of videos on the Dobot Magician Robot I was contacted by a local Dobot supplier Dobot.nu. They asked me if I would like to have a look at some of the other products Dobot has on offer.

In this article I will have a look at the AI starter kit they sent over for review. I will cover the assembly of the kit, programming and a mini project with a tipping bucket I designed, to demonstrate the expandability of the platform.

Disclaimer: I did not receive any form of payment for this review and any of the opinions expressed here are my own.

First impressions

The AI Starter seems to fit in well with the STEM learning system which focuses on developing learning skills such as problem solving, research and creativity among others. STEM stands for Science, Technology, Engineering and Mathematics. It looks like Dobot have tried to tick all of these boxes  with the AI starter kit. In this article we will try to find out if they succeeded. I will also try to answer the question if it is interesting for hobbyists or people that want to educate themselves on programming and robotics, since I fall into the latter category.

The overall impression of the used materials is good. The AI starter has an exoskeleton frame made from aluminum, in which the electronics and motors are fitted, giving it a clean industrial appearance. It is no cybertruck of course, but I think they did a nice job for a small robotic car. The circuit boards and mechanical components in general appear to be of good quality.

Regular phillips screws are used to fix the couplers onto the shaft. You have to make sure to tighten them properly, or the couplers may come loose. If you do tighten them properly there is no issue, but I think a set screw with a hex socket would have been better here.  The set comes with a phillips screw driver, but it is quite small. It is better to get a larger PH1 screw driver from your own tool box to tighten the larger screws.

A universal ball bearing is mounted near the front. It works, but when the car is moving it makes a bit more noise than I would like, especially on hard surfaces. I hope they can find a more quiet solution for this. Maybe nylon bearings are an option here.

The AI starter is perfectly usable with the supplied roller bearing and axis couplers, but it would be nice if some improvements could be made for these parts on the next version of this product. With the rest of the mechanical or electronic components I did not experience any issues. 

18650 batteries

My Demo unit did not come with batteries so I used some of my own. These are Nitecore batteries with a built in protection circuit which protects from overcharging, over-discharging and is has a thermal protection. This is great, but it should be noted that these batteries are typically longer than Unprotected batteries. The 18650 standard indicates the batteries are 18mm in diameter and 65 mm long. The length of the Nitecore batteries is 68.8mm and they just barely fit in the battery holder. With unprotected batteries the fit should be much better and the protection circuit is not really needed for the AI starter. So, unprotected batteries seem to be the better option here.

The documentation is easy to understand. The assembly instructions follow the IKEA approach: every step is explained using clear illustrations. There is also a full user manual, which provides useful information on the hardware and discusses some example programs to help you get started with programming in both the graphical Mixly environment and the Arduino IDE.

The AI starter set seems to be mainly targeted at the educational market, but given the relatively low price point might also appeal to hobbyists with an interest for programming, Artificial Intelligence or just robotic toys in general.

The control board has an atmega2560 CPU which is also used in the very popular Arduino Mega 2560. As such, the board can be programmed from the regular Arduino IDE, which is very nice if you have already tinkered with Arduinos before.

There is also a Mixly graphical programming environment, which provides a programming experience which is much easier to understand for beginners. It is based on the Google blockly framework and allows the user to create programs by dragging components into a working area and arranging them to get the desired functionality. The Mixly editor directly generates the C++ code compatible with the Arduino. This is great since not only does it generate code that runs on the Arduino, but allows you to see the generated C++ code to and learn how to create programs in the regular Arduino IDE should you want to.

Hardware

The Ai starter has a whole array of sensors to work with in your projects. There is an infrared sensor array which is used for line tracking. There are 3 ultrasonic sensors, which can be used for objection and there are 2 color sensors, which can be used to read the color of the surface the unit is driving on, I will show an examples how to use these sensors further down.

On the control board there are more interesting components, like a light sensor, buzzer, geomagnetic sensor, an Xbee interface for wireless communication, 3 customizable buttons and a couple of plugs which have a 5V power connection and I/O pins. These can be used to connect your own sensors, servos or other hardware. I am quite impressed with the amount of built-in hardware, which allows you to create a great variety of projects right out of the box. This is very useful for use in the educational market. However, if you do want to add your own components there is nothing stopping you from doing so. I think the approach Dobot have taken with the AI starter is very similar to that of the Dobot Magician. It is a very flexible learning platform for programming and robotics.

Mixly Visual Code Editor

The user manual links to the official Mixly website for installing the software, but this website is only available in Chinese. Automatic translation by google did not work for each page on this website making it quite hard to download the correct software.

After contacting the Dobot support team, they sent me the Mixly software with all of the AI starter specific functions baked in. Also the Arduino IDE is included but this is nicely hidden from the user, which makes sure less experienced used are not overwhelmed.

Example 1: Blinking LED

Before we start driving the car around, let’s start off with a very basic example, just to get familiar with the Mixly programming environment. The most simple Arduino program is probably the blinking LED. An Arduino typically has a built in LED which can be used for this purpose, so we do not have to add any parts to make this work. The left LED is connected to pin 13, the right LED to pin 12. In this example we will make the left LED blink with a delay time of one second.

From the Input/Output section you can drag a digitalwrite command into the work area. Then indicate pin 13 should be high, which means the LED connected to pin 13 is turned ON. Next, drag a delay command from the control section and set it to the desired value, in this case 1000 milliseconds. It is possible to copy and past the commands with Ctrl+C and Ctrl+V. Attach them to the string of commands and change the second command for the LED to LOW. Now simply press upload. The Mixly software will compile the program and send it over to the AI starter over the USB interface.

Sample program for blinking LED

This is all that is needed to make this program run on the AI starter. It is possible to make much more sophisticated programs for the AI starter without ever seeing any line of code.

For a typical Arduino program to achieve this you would have to write the code as shown below, which may be much more difficult to teach, especially in schools. With a graphical programming interface the user can just focus on the logic of the program and doesn’t have to worry about the correct syntax of a specific command.

void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}

The Mixly environment has an even simpler way of blinking the LEDs, with a dedicated command that you can use anywhere in your program. Just drag the LED command onto the working area and select blink.This is really as simple as it gets.

In the code that this generates, we can see it just uses a function from a specific AI starter library, which is a nice solution, because you don’t have to set a delay yourself and also you do not even need to know the pin number the LED is connected to.

#include <AIStarter.h>
void setup()
{
AIStarter_SmartBotInit();
}
void loop()
{
AIStarter_SmartBotSetLED(LED1,BLINK);
AIStarter_SmartBotSetLED(LED2,BLINK);
}

Example 2: Ultrasonic Sensor

And finally an example with sensor readout and some driving action. Again, a very basic example just to show the concept. This uses an IF loop from the control section. The IF-statement needs a part to verify and if the statement is true it will execute whatever you put in the “do-section”.  In this case we will place a statement verifying if the front ultrasonic sensors detected an obstacle. In the Do-section it is specified that the car has to move back, with a speed setting of 100, for a time period of 0.5 seconds.

Ultrasonic sensor example program

A benefit of this type of visual programming is that it is very easy to read back the program to see if it meets your needs. Just for good measure, the C++ code as generated by the Mixly software below:

#include <AIStarter.h>
void setup()
{
AIStarter_SmartBotInit();
}
void loop()
{
if (AIStarter_SmartBotGetBarrier(SONAR3)) {
AIStarter_SmartBotSetMovmentTime(BACK,100,0.5);
}
}

There are many different commands included in the specific AI starter section, which I think address most, if not all of the functionality of the sensors and other hardware.

AI starter moves back when detecting hand

Line tracking demo

There is an array of infrared sensors mounted to the front of the AI starter, which are intended for line tracking. The Kit comes with a foldable track. On the left and right side there are markers added to the track. If the car drives over these markers, all sensors are triggered simultaneously. This can be used to stop the car and perform an action. One of the stop markers has a red field in front of it and the other a green field. 

In order to try out the line tracking capabilities I used an included demo file, this time in the Arduino IDE. The program lets the AI starter follow a line and halts at every stop marker that it finds. At the red marker it beeps 3 times and at the green marker it beeps once. The line tracking works very well. The only issue I came across was that the unit sometimes skipped the green stop marker, while it always found the red one. The user manual states that the infrared line tracking sensors can be adjusted for detection distance, which might fix the issue. Or maybe the folds in the paper caused this behavior, I am not sure at this point. If there are any updates on this item I will update the article. The line tracking function gives you a nice possibility to play around with PID controller parameters. The AI starter uses only the Proportional and Integral action, making it a PI controller, which is a popular choice for speed controllers. The demo program shows some optimal settings for several speed settings. You can start with the suggested settings, but you can also play around with the kp and ki parameters and see how the car reacts to the changes parameters. With some settings there are large overshoots and with other settings it follows the line very tightly. You can adjust the settings to you personal preference or based on what is needed for your project.

Below is an example of the default kp and ki variables for a specific speed setting, in this case 70:

Custom Tipping Bucket

Since this platform lends itself perfectly for some experimentation, I thought it would be nice to expand the functionality of the AI starter by adding a tipping bucket. I believe Dobot actually uses a similar tipping bucket for school learning material and programming challenges, but instead of trying to get one from them I thought it would be more fun to design one myself and hopefully learn something new while doing so.

The CAD model for the tipping bucket can be found on GrabCAD through the following link:

https://grabcad.com/library/dobot-ai-starter-tipping-bucket-1

As I usually do when designing a part that has to fit some existing geometry, I imported a picture into Fusion 360. I found that, especially with larger parts tilt is very critical, so I made sure to take a picture from straight above.

The design is printable as a single part, including the hinge. To tilt the tipping bucket I used a small SG90 hobby servo, which has enough torque to lift the bucket including the items inside it as long as they are not too heavy. My first design was a bit rushed, which lead to a couple of issues. The first one was that the geometry of the hinge did not allow the bucket to fully open. Looking at the hinge in CAD it was actually quite obvious that this wouldn’t work, but sometimes I don’t take the time to check everything in detail, assuming that I will have to make another prototype anyway. So that is more of an iterative approach. In this case it might have been better to take more time on the first try since it is quite a long print. The second issue was that the hinge was moving with a lot of friction, which meant I did not use enough clearance. For the next iteration I increased the diameter gap between the pin and the hole from 0.15 to 0.25 mm. Also I removed some material where bridging was taking place, to allow for some sagging, since at these points the material is printed in mid-air.

This time I took a smarter approach and printed only a section of the print that contained the hinge, so I could quickly check if it was now okay, before committing to another 6 hours of print time for the entire part. In Prusa Slicer you can cut away unwanted sections of your part, which is very helpful, since you don’t have to cut up your native model in your CAD software. The printed section showed that the hinge now worked fine, so I started up another print. This time for the entire bucket.

I also found that printing such a part on the Prusa Mini without a brim does not work. The very first part I printed actually warped so much that it came loose and fell over. I am still in the process of figuring out what type of parts I can print without a brim on this printer, but for larger parts like these it is typically best to play it safe and use a brim.

The standard servo arm was a bit too short for this application, so I looked up a customizable model on thingiverse and found a model by “Oregondesign”. https://www.thingiverse.com/thing:2737914. I selected the servo type (Futaba 2F-21T) and entered an arm length of 25 mm. The print came out very nicely and even more important, the fit on the servo motor was spot on.

I used the built in function for a tipping bucket in the Mixly software. This basically drives a servo motor, which is in this case connected to pin 7. The Ai starter has a connector at the back called Servo1, which can be used for this purpose. If you look closely at the text on the print board, you can see the function of each pin. For the Servo we need Ground, 5Volts and a digital outputpin for setting the angle of the servo, which is in this case pin 7.

For the initial test I just pushed some dupont connectors onto the pins and this actually works fine. However to clean things up a bit I ended up using a JST connector, but especially for experiments this is not really necessary.

I made a test program that adds some basic autonomy to the AIstarter. It will keep driving around and avoid obstacles and walls until it finds a blue area. If it drives over a blue surface it will back up, turn by roughly 180 degrees and dump the parts on the blue location.

Click the picture below to open a PDF file in the browser or press te button to down load the file:

Mixly sample program for autonomous driving with tipping bucket (click to enlarge)

Creating the program in Mixly was easy and very intuitive. I did go through several iterations before I had something that worked as intended. Modifications to the program can be made and uploaded very quickly, which makes it suitable for doing multiple quick iterations to get to your end goal.

Tipping bucket in action

Conclusion

Time for some final thoughts:

I think for some people it might be a bit confusing that the term AI is used for this product. I personally associate AI with machine learning and neural networks. However in this case you provide the intelligence to the robotic car yourself, by creating a program that allows it to interact with the environment. I actually think that the approach Dobot has taken here makes a lot of sense, because this type of programming is much better suited for schools and indeed fits the STEM learning system very nicely.
I think the AI starter kit has a couple of rough edges in the software installation and some hardware components as mentioned earlier. However, overall I think it is a very nice product for schools looking to teach their students about programming and to give them an introduction in robotics and automation.

The AI starter can also be purchased for personal use and also in that case it offers a lot of learning opportunities. Because there is a proper manual and software with examples it is easy to get started. Currently the kit retails for around 250 euros, so it is not exactly cheap but I think based on what is included in the kit it is a reasonable price. This is my personal opinion of course. I hope this article has provided you with enough information to form your own opinion on the AI Starter.

If you have any questions, please let me know in the comments section and I will do my best to help.

Cheers,

Robin

Leave a Reply

Your email address will not be published. Required fields are marked *