Robot arms are fantastic fun, but you tend to get a trade-off. Do you want something cheap that won't work particularly well and is pretty tricky to learn robotics with, or do you invest over $1000 on something that might not be your area of interest at the end of the day?
Elephant Robotics saw this problem and tried to come up with a compromise. The MyCobot series is a collection of 6 Degrees of Freedom robotic arms, ranging from the $599 MyCobot (Based on the M5STACK series of development boards) and $699 MyCobot Pi for hobby robotics, through to the significantly more expensive MyCobot Pro range for industrial use. There is also a MyCobot playground kit with a camera and various items for the robot arm to use.
This review looks at the MyCobot Pi, a Raspberry PI 4 based robot arm with a variety of features.
What is the MyCobot Pi?
MyCobot Pi is a 6-DOF (degrees of freedom) robotic arm based on the Raspberry Pi 4 Single-Board Computer and M5STACK Atom development board. The six high-performance servo motors are enclosed in a white PVC frame, and the end of the arm houses an RGB LED Matrix and GPIO breakout along with a connector compatible with Lego and various option add-ons for interaction.
The version I reviewed came with two optional attachments. The first is a gripper, comprising of a single servo driving two arms capable of clamping up to 150g, and the other is a suction pump capable of holding objects up to 250g in weight. The Raspberry Pi is set into the base, which is cut to expose all of its ports including the SD Card slot. The Pi's GPIO pins are broken out to a female pin header, and there is a separate power switch.
You get all the cables and tools you need to get started - including a table clamp for stability. We'll take a deeper look at all the features of the MyCobot Pi later in the review.
MyCobot Pi - The Verdict
Robot arms are fun, though the majority are difficult to build and calibrate and come with little to no support in terms of documentation. On the other hand, MyCobot has created an incredibly easy-to-set-up robot, and it does have a decent API with documentation - though the latter could do with some work.
The MyCobot Pi is a fantastic piece of hardware, especially when combined with the suction pump grabber. Where many Raspberry PI and Arduino-based robotics kits are underpowered to the point of being unusable, the MyCobot Pi feels robust enough to really learn about functional robotics. Having everything in the same case makes it among the easiest to set up and maintain too. The combination of a main computer in the Raspberry Pi paired with the Lego block compatible M5 Atom equipped "hand" end makes for a simple way to control and extend the MyCobot usage, and I could see this robot being very easy to extend and customize as a result. The only part of the hardware I found badly designed is the positioning of the power switch and barrel jack, which the robot arm can easily hit - frequently turning itself off, which, while quite funny the first time, got quite tiring quite fast!
If I was recommending a robotics kit based solely on what the hardware is capable of, I can't think of any that do what MyCobot does at this price. The Python API for the arm also has some fantastic helper functions for getting things going too.
Unfortunately, the documentation for the Raspberry Pi version of the MyCobot isn't very good, and many of the example projects haven't been ported to the Pi particularly well - one glaring example of this is part of the base class for the suction arm of the robot still being targetted at the M5 Basic version of the MyCobot.
The MyCobot GitBook seems a great resource for the M5STACK versions of the robot but is lacking when it comes to the Raspberry Pi version. Most of the source materials aren't relevant to the Pi, and the Python API is aimed more at a separate Linux machine controlling an M5 board. Beginners would be far better suited to getting an M5STACK driven MyCobot, but that doesn't mean the Pi version is a failure. Far from it. If I had the choice of any of the MyCobot range, I'd pick the Pi version.
The design of the MyCobot Pi - a Linux-capable computer inside the robot arm base - makes it by far the most extensible of the bunch. In the short time I had with the MyCobot Pi, I saw huge potential, and wirelessly accessing it via SSH and VNC made it much easier to work with than any other robotics kit I've ever used.
If you are interested in the MyCobot Pi, you can get them direct from Elephant Robotics by following this link:
Getting Started with MyCobot Pi
Getting started with the hardware is incredibly simple. The MyCobot Pi comes fully assembled, and the pre-flashed Micro-SD card has a regular version of Raspbian OS with various pieces of software and drivers pre-installed.
Setting up the table clamp is also an easy process, as MyCobot uses Lego compatible holes for all collections and provides plenty of clips to attach everything together. This is also how you'll attach the Grabber and Suction Pump accessories if you choose to get them.
From getting started to actually interacting with the robot (albeit by changing the color of the RBG LED matrix on the M5 ATOM head) took only a few minutes, and it was refreshing to skip the lengthy build process most robot arms require.
Elephant Robotics provides a "GitBook" for the MyCobot Pi, but it's actually a general working book for all of the MyCobot range. That said, there are a few basic examples provided by the GitBook that show how the Python API for the arm can work, and for the most part, the API provides helpful functions for moving the robot between positions.
What Systems does MyCobotPi Use?
The base OS for MyCobot Pi is Raspbian OS, though this can, of course, be swapped out for almost any operating system the Pi supports. In my brief tests with Mate, I found that installing the pymycobot library made it pretty easy to get started in a purely code-based environment.
That said, the Raspbian OS that comes pre-flashed has a number of options for robot control.
By far, the most robust way of working with MyCobot Pi is the Python API. It's a fully-fledged API that accounts for most of what the robot is capable of, and with a few exceptions is well designed for learning how the robot arm can move.
The MyCobot GitBook has two separate sections on pymycobot, providing both example code and an overview of the API, though the GitHub link above seems to provide the most complete picture of the API.
One issue you will come up against fairly frequently is that the Python API isn't actually designed for the Raspberry Pi. While the base porting seems to be almost complete, all documentation for pymycobot assumes you are using a separate Linux development machine to communicate with the M5 BASIC housed in the other version of MyCobot. For the most part this doesn't affect the experience, though there were times when things simply did not work - and after much debugging, it was simply dead code that wasn't relevant to the Pi.
Despite this, the API is still among the best for a hobby robot of this type, and with a little tinkering, you can get complex movements going using relatively simple Python code.
MyBlockly is a visual programming tool similar to Scratch and other block-based coding programs. It combines common Python-style blocks with MyCobot specific blocks for moving the Robot, and a GPIO block module for working with GPIO pins.
It is the most beginner-friendly option, and the examples given in the documentation are good. A nice touch is the ability to view the generated Python code alongside the blocks to see what is going on under the hood.
All of the Python API is exposed in block form, so if you were working with complete beginners or kids, this would be a great way to teach basic robotics concepts.
MyCobot Pi is also compatible with ROS, and they provide a version for the Pi. If you are already familiar with ROS will be a welcome addition, and the ROS Kinetic version for Pi runs decently enough. That said, I ran into significant issues using the visualizer, and after a full reinstall of the latest ROS for Pi still was running into issues. This is possibly down to current incompatibilities with the Pi in general though, so isn't something I can really pin on MyCobot.
Given a little more time I'd be interested to see what can be done with ROS and the Pi 4 in general, and MyCobot Pi would be a perfect vehicle for that!
MyStudio and RoboFlow
Elephant Robotics has created two pieces of software for use with the MyCobot series - MyStudio and RoboFlow.
MyStudio is aimed for use with the M5 version of the robot, so while it came pre-installed on the Raspberry Pi, it didn't actually worth with the robot arm. RoboFlow is a full-scale visual system for industrial robotics and can be installed as a touchscreen control system for in-situ robot assemblies. It seems like a powerful piece of software, but in my testing, I found it to be poorly optimized for the MyCobot Pi, with many features simply not working and others behaving erratically. I'm not sure if this was a calibration issue, or simply that the software is designed for the pro series of robots, but other than a quick test I didn't find it something easy to use for general robotics testing.
For most hobby roboticists I feel RoboFlow might not be the best option anyway, as MyBlockly and the Python API are more appropriate learning tools for general robotics.
Addons and Accessories
The base version of the MyCobot Pi comes with no accessories but is easy to work with due to the Lego compatible header. That said, MyCobot provides accessories that really enhance the experience. I received both the servo-driven grabber attachment and the suction pump which uses a small compressor to hold items to a sprung rubber tip.
The grabber works well, which is nice as many single-servo-driven robot attachments are too weak to really move properly. In tests, it was more than capable of grabbing and moving around blocks, and the Python API has specific functions for the M5 ATOM the arm attaches to making it neat in terms of wiring. One slight issue I found is that the way the grabber is supposed to fit (according to the guide) wasn't compatible with the example code, and the grabber would hit the robot arm. This is something easy enough to change in code but was initially a bit of a turn-off.
The suction pump gives a decent amount of power and seems well built. It is powered using the same barrel jack as the Pi, and a splitter is provided to power both from one plug. It was a little difficult to get going, however, as the documentation for it is aimed at the M5 BASIC version of the MyCobot. Even if you attach the wires to the corresponding Raspberry Pi GPIO pins, the example code won't work.
This is down the Python API targeting the M5 Basic version. Writing up your own version of the code in gpiozero isn't a particularly hard task. Still, it's one of the cracks in the MyCobot documentation and API that is the only real letdown of the experience.
The documentation also covers using machine vision to identity and move blocks using the Artificial Intelligence kit - an optional extra including a camera and items to manipulate.
What makes the MyCobot Pi so compelling is that, in theory, you could have a complete machine vision system enclosed in one unit. Whether you attach a webcam to the Lego compatible tip or above so the robot can use a static image, you'll be able to run basic OpenCV recognition scripts on the Pi, moving the robot accordingly.
In practice, this is something I would have loved to try out, but in the limited time I had with the MyCobot Pi I couldn't develop a full computer vision project from scratch - and given that the documentation is once again aimed at the M5 STACK system of development boards you would need to work from the ground up to get computer vision working.
Regardless, a robot this competent with the Linux operating system makes is probably the most versatile robotic arm for hobby machine vision development available.
How Well Does it Perform?
In terms of performance, the MyCobot Pi has been solid for the duration of testing. It's picked up and held everything I asked it to (except a rather heavy tripod arm which was intentionally over the weight limit), and movement has been smooth.
There are some limitations, but these are not so much problems with the robot, and more expectations you should have when using any cheaper robotics system. For example, there isn't much to stop you from catching the robot arm on itself and overworking the servos. This comes from a lack of limit switches at the ends of each range of motion and isn't a problem - it would add a ton of complexity and cost to the build.
The only minor hardware gripe I have is a small one. The robot arm's field of motion overlaps with the physical on-off switch of the robot. That means any arbitrary movement in that direction can turn the whole thing off - Pi included!
Documentation and Libraries
As I have mentioned several times in this review, the documentation and libraries are a mixed bag.
I get the sense that the effort mainly went into the M5 version of the robot, and since then, things haven't been updated. Most of the links in the GitBook are broken, and it does seem like the port from M5 over to Raspberry Pi is somewhat incomplete.
On the other hand, the API is generally excellent, with numerous pre-built functions for reporting and setting different kinds of movements, along with controlling the M5 ATOM at the end of the robot arm.
There are some holes - like the base class of the suction cup driver not being written for the Pi, but for the most part, the Python API is great to use and will be a good learning tool. While there were some issues, it is still head and shoulders above the poor API provided for many other budget robotic arms.
MyCobot Pi is a fantastic piece of design at a low price. The MyCobot arm is something that has clearly had a lot of development put into it, and pairing it with a Pi is a great idea in principle. This is something Elephant Robotics has managed to pull off fairly well, and other than the power switch placement, the Pi is a perfect addition to their hardware.
Unfortunately, Elephant Robotics seems to have fallen into the trap that many other hardware manufacturers do. The GitBook documentation is plagued with broken links throughout, and it's clear that many of the Python API examples are incomplete ports of the M5STACK code. This isn't a massive issue for a lot of the robot movements and anything relying on the M5 ATOM at the robot's end, but anyone wanting to use the Suction Pump will need to write their own code in as the example code won't work.
Hopefully, these issues will be addressed in the future, but with the upcoming WIO Terminal MyCobot variant along with the recent 4 DOF MyPalletizer - all of which will require their own documentation and example code - I'm not holding my breath.
The RoboFlow and myblockly software are similar in that the documentation more or less gives you a rough idea of what everything does but lacks examples or gives examples that don't work - presumably as they are targeted at a different mainboard for the robot.
These are, in the scheme of things, not actually that much of a problem. Ultimately, a good robot arm is an investment for learning, and the API provides more than enough for long-term students to teach themselves the principles of robotics, from basic movement through to complex kinematics.
The MyCobot Pi is not a robot for complete beginners, but it is one of the better-built robot arms I've ever used. Despite its shoddy documentation, I can't think of a better bang-for-your-buck robot on the market today.
- Well built robot Arm
- Enclosed in nice looking PVC - no cable spaghetti!
- Raspberry Pi 4 is a great base for a robot
- Documentation for Pi version sub-par
- API incomplete in places