Dobot MG400

Hi, welcome to an overview of the Dobot MG400 desktop robot arm. A local supplier, was kind enough to send me a unit to play around with. What I would like to do in this article is give my first impressions of the Robot from the perspective of a new user. I will have a quick look at the hardware, end effectors and the supplied software for programming.

The contents of this article is also covered in the YouTube video linked below. If you prefer reading, please scroll down for the full written version of my first impressions of this robot arm, enjoy!

A quick disclaimer; I have no agreement with the supplier on making any type of content, no money has exchanged hands and all the opinions expressed here are my own. I am also sending the unit back to the supplier.

The vertical and horizontal area of the work envelope are shown in the illustrations below:

Work envelope side view
Angle coverage of Joint 1

The robot arm weighs in at around 8kg, (~18lbs). The maximum payload is 500 grams, (~1 lb). There are 4 axes of motion: the arm can rotate around the base, it has 2 joints in the arm and lastly the end effector can be rotated for positioning parts at the correct orientation. All of the axes are driven by proper servo motors, of course with position feedback. This enables the robot to work at high speeds, have smooth motions and be strong enough to handle a 500 gram payload.

All 3 joints in the arm and base are using a geared transmission by means of a timing belts. The belt drive ratio helps in the strength and accuracy departments. Also it is nice and quiet.

The 4th axis, to which you mount the end effector is also driven by a servo motor, but here no gearing reduction is in place, so you mount the end effector directly to the motor shaft. This makes for a very compact and responsive drive system, however, it does mean that the motor has to continuously steer the end effector to its intended position. Before starting any work you have to enter in the weight of the end effector, so the motor drive circuit can make sure it is held steadily in position without being either to weak or to stiff. As far as I can tell you can only enter the mass of the end effector and not its moment of inertia, which would make more sense to me. Also, as far as I know there is no auto tuning routine for this axis.

On the back of the base most of the connectors can be found: there are 16 inputs and 16 outputs, as well as connections for 24V so you can directly power your end effector or any of your own accessories. There is also a power connector, the ON/OFF switch, E-stop and connectivity ports like USB, LAN and an encoder interface for dynamic tracking of a conveyor belt. Furthermore, there is an Air fitting, that is connected to an air line going to the front of the robot arm, so you can directly plug in a suction cup end effector into the front of the arm, which is very nice.

Connections on the back side of the base

The arm itself seems to be made out of aluminum castings and all of the joints have roller bearings. Overall, my impression is that the build quality is very good. Having only limited experience with the unit, I cannot say anything about durability over long term use, but from what I can see it does look like a solid mechanical platform.

At the front of the arm we have the air connection, another IO port and the unlock button that can be used to unlock the arm and manually move it around to teach it where to go in your application. When doing this the arm actively compensates for gravity, making it very light to move it around. This is a very nice feature, but I typically just jog the arm around to set new coordinates. That is just my way of working, the dobot platform allows you to program it any way you like, from teach in to scripting. You can use whatever works best for any given application.

Just for comparison, here is the new MG400 next to my own Dobot Magician Robot. The Magician as far as I know is still being sold but more targeted towards the educational market. Some key differences are that the Magician is smaller and the drive system is less sophisticated as it uses stepper motors instead of servo motors. Also you have to home the Magician after turning it on, while I have not homed the MG400 even once. It recalls its position even after being powered off.

Dobot Magician (left) and MG400 (right)

While the MG400 is part of the industrial series of robots I see no problem using it in schools or universities for educational purposes. It all just depends on your needs and you budget. The MG400 goes for a little under 3000 euros excluding end effectors, which is more expensive than the Magician, but I think can be justified given the larger size, more professional build quality and more advanced drive system.   

In order to have any repeatability in with you setup it is highly recommended to fix the robot to the work surface.

To start working with the robot the E-stop, power supply and LAN cable have to be connected, which is used to communicate over the local area network.

The supplied software is DobotStudio2020, which is still the latest version. The software is updated when needed, but so far they have kept the 2020 year in the name. Connecting to the Dobot is very easy. When both your laptop and the MG400 are on the same local area network, the software is able to find the robot automatically. It should be noted that the MG400 has a fixed IP address which cannot be changed. It is For the majority of people this works fine. My network however has a different number instead of the 1 (the third one). Since I do not want to change this for several reasons I am using a second cheap router set to the correct address range. This router sits between my laptop and the Dobot. If, like most people you are using the typical IP range, you have nothing to worry about and it will be plug and play.

The software can apply inverse kinematics. This means you can move along a specified path, while the movement for each axis is calculated by the motion controller. The good thing is that you don’t have to worry about this, since this is all taken care of by the robot.

At the business end of the robot arm there is a shaft where you can mount the generic end effector flange. On this flange grippers, vacuum cups or any other custom end effector can be mounted. I received the optional electromagnetic gripper and a couple of vacuum cups to test with.

The gripper is a very compact unit that allows you to pick up parts of varying sizes. The gripper size can be adjusted by screwing the supplied clamps into any of the threaded holes at the end of the gripper. This approach makes it also suitable to attach your own custom designed clamps. The gripper is then mounted onto the universal flange an secured to the 4th axis. The cable for the electrical signals is to be routed over or through the arm to the back of the robot. Since there is no cable duct available for this I just used some tie wraps. If this was my own robot I would probably replace some of the existing cable clamps under the arm with a design that has a clip of some sorts to hold additional cables. It is important to leave enough length of cable at the joints to make sure the arm can still freely move.

Electromechanical gripper

The 4th axis to which the gripper is mounted can make up to 2 full revolutions, which should be plenty for most applications.

All that remains now is to connect the cables for power and closing the gripper to the IO port on the back of the robot. Any output port can be used. You make sure to use the corresponding port number in your program. I am using ports 1 and 2 for the vacuum cup and port 3 for the gripper.

I am using simple wood planks for testing. These are parts of a construction set that is sold under the Kapla brand name. They are quite consistent in size, so a good candidate for some pick and place testing.

Building a tower with Kapla

In order to make an array of parts that the robot can pick from I printed a template with rectangles to match the parts. Something like this is only works when you align the template perfectly to the coordinate system that you are using.

Kapla tower program for vacuum cup (click image to enlarge)
Kapla Spiral program for gripper (click image to enlarge)

I also ran a test program with the Vacuum Cup end effector. It is necessary to adapt the program to this type of end effector, especially with light parts. Even after the vacuum is turned off it might take a while for the part to release due to residual vacuum in the lines. One of the possible solutions to this is to apply a short burst of compressed air when the part has to be released, which actually works very nicely.

The MG400 offers the ability to use an end effector that is off center compared to the 4th axis and compensate for the offset with its inverse kinematics, so you don’t have to do any math to keep the end effector in a fixed position when it is rotating. This does require an initial calibration of your specific end effector. In this procedure you align the tip of the end effector with any arbitrary reference point. Then rotate the end effector and position it back over the reference point. Poth points are saved in the software after which the robot arm can compensate for the offset. This can be demonstrated by just rotating the 4th axis manually while the tool coordinate system for this end effector are selected.

CAD files for the flange, pen holder and calibration parts can be found here:
Pen holder and calibration parts:

The 4th axis is directly driven by a servo motor. In fact the end effector is mounted directly to the motor shaft. This enables a very compact setup, but it does mean that it is more sensitive to external forced applied to the end effector. There is not anything inherently wrong about this setup, you just need to be aware of the limitations. I would not consider this suitable for an end effector that is expected to apply any significant amount of torque to the 4th axis. Having said this, it can be used for lighter applications like dispensing glue for example. If you need rigidity while using the 4th axis, make sure to place you end effector in line with the motor shaft, instead of it being off center. Also a heavier end effector will help, as this will enable the 4th axis to have a mire rigid position control loop.

Any time you place a new end effector on the 4th axis you have to indicate the weight. This will have an effect on the control settings for the servo motor. Entering a number that is too high might lead to oscillations, so make sure to put in a number corresponding to the weight of your end effector.

To see how you can integrate the Inputs on the back of the Dobot into your project, I made a simple test program that will move the robot to a different position when a button is pressed, which is demonstrated in the video. The input ports respond to a 24V DC input signal. I am placing a button between the integrated 24V connector at the back and a randomly selected input port. Number 16 in this case. Make sure to double-check your connections and power on the robot. The simple program I made is shown below. It loops continuously and checks for the status of the button. The robot then moves to one of 2 positions, depending on whether or not you are pushing the button.

Test program for responding to an input signal using a push button

The MG400 has 5 different levels of safety to protect the user while being in the working area of the robot arm. I am using level 5 which is the safest setting. If the arm detects that there is a collision it will stop and give an alarm.  Only limited force is required to stop the robot arm on the level 5 setting. I also tested the level 3 setting, but there quite a bit more force is needed to trigger the alarm, so I am sticking to level 5. It is good to see it is possible to set the safety level based on your own preferences and use case.

To test the position repeatability, I placed a dial test indicator at several positions to measure repeatability of the different axes.

Dial test indicator position repeatability

I was very pleasantly surprised as it kept returning to the same position to within a couple of microns. This is far better than I expected. I do not have the means to test the repeatability in a dynamic situation when following a specified path, but measuring the position repeatability in a fixed position does help to estimate how it will perform in situations where the robot needs to stop at a specific coordinate. Note that Dobot indicates a repeatability of ±0.05mm, so make sure to keep that in mind. The couple of measurements I performed are not sufficient to demonstrate repeatability in all use cases.

Finally, a quick look at the provided software program. There are 3 ways you can use for programming, ranging from basic functionality for programming. The teach & Playback as well as the Blockly options are easy to use and intuitive, while still offering the use of most functionality. Of these 2 options I prefer the blockly method because I think it is very intuitive and just fun to create and modify programs. The Script option allows more flexibility for people that like coding in the more traditional way. A user manual and online help is available for all programming methods.

If we first have a look at the Teach & Playback option, you can see all of the commonly used commands on the left side of the screen.

Teach & playback programming

These are things like selecting a specific type of move command, speed or the activation of an output port that is used for an end effctor. Variable names can be declared here, to reference in you program and also the use of typical things like IF statemens and loops are supported. When you select a command it is placed in the screen on the right side, where you will build your program. The steps in your program can be moved around, edited or deleted as you see fit.

The Dobotblockly programming interface is even more visually oriented. On the left sidebar the commands are grouped into logical sections and color coded.

Dobot Blockly programming interface

The Control section contains all the common types of IF statements and loops. Anything that you want to use in your program can simply be dragged into the working area. The operators section allows you to add some logic or math to the program. Also with Blockly you can create your own variable for use in your program. After making a new variable it can be set to a value ar used in any equation. From the Move section you can add motion commands, varying from linear moves to jump moves and arcs.

In the I/O section commands can be found for setting outputs high or low, as well as reading the status of inputs. These all refer to the IO ports on the MG400 and can be used however you see fit for your project.

There are several more sections that I did not use in my testing like Modbus, Vision, Pallet and others. Feel free to look at the online manuals for all features. The Vision commands should work with the Dobot Vision Machine Module I tested earlier. I will leave a link to that video in the description below. A vision system enables an automated system that is far more flexible compared to programming alone, so I would highly recommend to look into that as well if you are thinking about automating your process.

There is also a script environment. All of the available commands are again listed on the left side of the screen.

Script programming interface

Clicking on them adds it to you program, and if you double click on the icon next to the command it includes the full syntax. There is also a help button for each command that provides you with a short explanation. I have not used this environment myself, so I can’t really give my opinion on it, but at least you know it is available if this is your preferred method for programming.

My overall impression of the software is that it is a cohesive experience and very intuitive, making is easy to use and most importantly also fun to work with.

To wrap up the article, I would like to discuss some pros and cons:

Cons: Starting of with the cons, I would say that the 4th axis has limited capability in terms of dealing with high torque applications. Besides that it can start to oscillate if you enter the wrong mass for the end effctor. Also it emits a high pitch sound that you may have heard throughout the video. The noise level is very low but the high pitch nature of it makes it a bit annoying if you are sensitive to this. Having said this I did get used to it and you can always disable the robot arm when programming it , making it completely quiet. The overall noise level of the robot is very low, even when taking the 4th axis in consideration.

The other things I would like to see improved are some minor bugs in the software. When you give a name to an IO port for ease of use, it is not consistently updated in all menus. Also the 3D display is a bit glitchy, sometimes showing the arm in impossible positions. I was rarely looking at this 3D view, so this is not a big deal, but still something that should be fixed in my opinion. The last con is the fixed IP address. As mentioned before there is a workaround if you can’t use this IP address, but it would be nice if you could choose another address.

Pros: The arm has a professional build quality, with an all metal frame. All of the connectors, wiring and injection molded covers look like high quality parts. This is good to see considering the relatively low price, which is another pro by the way. There are a large number of IO ports that can be used freely within your projects. Several different end effectors are available and the robot can work together with a vision system and it has a conveyor belt synchronization option. Furthermore, there are several ways to program the robot, so there should be an option to match your preferences and skill level. From what I can tell the motion system on the robot is very accurate and for the small form factor it has a relatively large work area and high payload capacity of 500 grams.

That concludes this quick overview of the MG400. If you have any questions, please leave them in the comment section below and I will do my best to help.



10 Replies to “Dobot MG400”

  1. Hi Robin,
    I came across your profile and video on YouTube and I might say it one of the great videos so far.

    I have a few questions to ask you.
    So, I am doing an assembly where I need to pick and place two components (a paper strip and a cup) with the double end effectors of the MG400. I intend to key the cup and paper strip in a vertical position, that is, keeping the X value constant and then varying the value of Y as it moves on the XY plane. the value of Z would be kept constant same as R. In simple terms, the picking would be done at the X coordinate whilst the placing would be done on the Y coordinate with varying values.
    More so, the picking at the X plane would have 5-6 and could be more paper strip and cup, that is they would be stacked on each other and would need to be pick and place at the Y plane one after the other.

    Please, do you have any Blocky coding that you have done in relation to this, if yes, can you point me to it or possibly share with me? Thank you!


    1. Hi Maxwell,
      Sorry for the very late reply, I missed your message initially. I unfortunately do not have any of the Blockly files anymore (not sure if they could even be exported from te software). By now I assume you have come up with a solution yourself.
      Best, Robin

  2. Hi Robin,

    Thanks for the detailed post. I was interested in picking and place small parts about 2mm big (resistors etc). I had a magician but it will move horizontally 2-3mm when I order it to go downward along Z. I’m wondering can the mg400 go down straight, or at least way more straight than magician?

    1. Hi, sorry for the late reply. I have not tested how accurately the arm can move along the z-axis, only repeatability for single points. However, if well calibrated to the world coordinate system, my guess is that it should be much more accurate than 2 mm. Again, I do not have data to back this up. Also for the magician, 2-3mm of deviation seems quite large. It might indicate that there is some mechanical tilt in your system. I don;t think there is a method to align this in software, but you could make a program that moves the arm to 4 points in the XY-plane and then measure the z-distance from the table for all points to get some idea of if the XY plane is parallel to the table.

  3. Dear Robin,
    thanks a lot for you reply! I understood well what you said, surely is better a ‘regular’ 3d printer but I explain you better what I need.
    I am writing to you from Italy. I’m doing a project on ceramic 3d printing and I use 3DWasp printers.
    I am mainly producing vases (also for bonsai) in stoneware and would like to use a robot arm. I do workshops around Europe and moving the printer is very complex (too heavy).
    For me is important, a light device that is easily transportable and could print large, wide but low pieces (for example 60x40x20cm).
    I have direct contact with Universal Robot in Italy but we can’t get ceramic extruder to communicate with this Cobot. (their Cobots read the Gcode).
    I need to manage during printing the extruder, and change the parameters such as flow, start/stop… and i don’t know how to do it.
    I’ve also contacted universities that are already doing robot printing but I haven’t had any help.
    Can you help me? Thanks for your availability.
    Best Regards,

    1. Hi Igor, thanks for the additional information. This seems like a very cool application! In your case using a robotic arm due to portability makes more sense. I think you will run into the same issues with the larger robotic arms from Dobot. I think that this is due to the market they are targeting with these larger arms. More intended for handling, assembly, etcetera. The MG400 will probably also not reach the dimensions you mentioned (EDIT: maybe just). Dobot sells arms with a larger work envelope. Since I have no experience in getting those arms to work with 3D printing I think it is best if you try to contact a local Dobot supplier or Dobot themselves by emailing support or via the forum. I hope you will be able to find a solution that doenn’t require extensive work on software or hardware. Sorry I am not able to provide more help.
      Best regards, Robin

  4. Hi Robin,
    congratulations I read the review and it is really well done.
    I would like to approach this type of robot and try 3D printing. Have you had experiences? What do you suggest me?
    Actually I would like to assemble a small ceramic extruder and print pots. I know it’s complex to make the extruder interact with robots… Regards ad happy new year. Igor

    1. Hi Igor, I have not looked into 3D printing with the MG400. I did some 3D printing with my own Dobot Magician when I started with it around 6 years ago. The Magician comes with the software for 3D printing (it had a custom version of Repetier software, might have been updated by now). The Dobot MG400 does not have any 3D printing software as far as I know. So this means you would have to create a custom link to reptier or any other open source 3D printing software like Slic3er or Cura. This is above my current skill level, so I also would not be able to give any advice on how to make that link or how to have the MG400 execute Gcode. So if you are determined to use a robot arm for 3D printing I would go for the magician, but I think that that would be more to use as a demonstration or gimmick. It is much harder to get a good print from a robot arm than it is to get it from a “regular” 3D printer. My 3D printing experience with the Magician was not very good: mediocre print quality and hard to level. If there is no specific need for a robot arm, I would just buy a suitable 3D printer and mount your custom extruder to that machine.

        1. Hi Igor, the other messages ended up in a spam folder. The only difference I see is that you used another email account for those. I manually un-spammed one of your messages and will reply to that.

Leave a Reply

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