3.2 Assembly Arm - Dobot Magician

10 minute read

Dobot Magician

1. Requirements

These kinds of robots belong to the groups stationary and online. The members of the class should be able to move objects within a restricted three-dimensional area with high precision and speed. Different tasks, like moving objects or drawing something within this area should be possible as well.

2. Actor

In the OMiLAB environment, there exists one CPS (Cyber-Physical-System) that belongs to this class. The robotic actor is a Dobot Magician robot arm. The Dobot Magician comes with its own controlling unit, additional hardware endpoints for the arm and a software package.

The basic hardware which one possible endpoint (the gripper) can be seen in the following image: Dobot Magician with gripper endpoint (by dobot.cc). A connection can be established over USB or Bluetooth. This controlling unit is supported by a Raspberry Pi, which manages the controlling of the different motors of the arm and offers a wireless network connection to a laptop. The Dobot Magician is connected over a USB cable to a Raspberry Pi 3. On the Raspberry a REST interface is implemented, which handles the functionalities that are offered to the users and which can be called over the Internet. The single-board computer receives the calls, processes and forwards the commands to the Dobot Magician hardware. A detailed description for the original Dobot Magician robot arm can be found here.

The arm itself offers movements on four axes and has a payload of 500g. Three axes are for the movement of the whole arm, which includes the rotation of the base, the stretching and the contracting and the lifting and the lowering of the arm. The fourth axis is the rotation of the servo motor with an additional endpoint, which can be mounted to the end of the arm and is useable with different extensions. The available extensions in the OMiLAB environment are a gripper, a vacuum suction cup, a 3D printing kit and a pen or laser holder. The servo motor can be used to rotate the gripper and the vacuum suction cup.

In specific, the movements of the arms are based on a three-axes coordinate system.

The x-axis is for stretching or contracting the arm, the y-axis is for moving the arm in a 90-degree angle to the x-axis and the z-axis is for lifting and lowering the arm. If coordinates are sent to the arm, the endpoint with the mounted extension will be moved to these coordinates. Only one extension can be mounted at a time and the change must be conducted manually. The vacuum suction cup can be rotated through the servo motor and has a pump and a valve for grabbing and dropping an object. The gripper can also be rotated through the servo motor and the gripper itself can be opened and closed through an own motor. It should also be mentioned that coordinates can not necessarily be transferred from one robot arm to the other. This means, that if someone has the coordinates of objects in front of one arm and places these objects with the same distance in front of the other robot arm, the coordinates for the different robots to reach the objects can be different. The movement of the arm in its coordinate system is calculated based on fixed positions of the arm. These positions are captured through light barrier sensors, which are directly mounted onto the robot arm. If the CPS collides with an obstacle, it is possible that the coordinate system gets shifted and that the original coordinates of the objects doesn’t fit anymore. For such cases, a reset function was implement, which uses the light barrier sensors to recalibrate the calculated position. One sensor is mounted onto the basic plate as fixpoint for the rotation and the other two are fixpoints for the segments of the arm. During a reset, the arm moves until the sensor reacts and then the software knows, where the arm is in the moment.

The different actions that the robot arms are capable of are also offered by a REST interface, which can be called over the Internet. For the two arms, the same source code is used and therefore they are offering the same functionalities. There are functions for moving the arm to a specific position, grabbing an item, getting the coordinates of the arm and rotating the extension of the arm. An example setting with fixed positions of objects can be seen in the following image with the Dobot Magician with suction cup endpoint, air pump and Raspberry Pi. In this case, the arm moves to the object. Afterwards it is grabbed with the suction cup, transferred to the plate and dropped.


The main addresses of the REST service of the robot arm is reachable within the local OMiLAB network and follows the structure: [http://:8080/dobot/api/operation](http://:8080/dobot/api/operation)

The already implemented functions for controlling a robot arm and how they can be used, are described below. The names of the functions are the REST resource names, which must be added to the URL of the basic address given above:

  • /moveToHomePosition: This command is a POST operation for resetting the arm and requires no attributes. It should be executed before working with the robot, so that the robot can adjust.
  • /turnOnSuctionCup: This function is for the suction cup endpoint. It is a POST request that enables to pick up an object.
  • /turnOffSuctionCup: This function is the opposite of /turnOnSuctionCup. It is a POST request as well and drops a picked up object.
  • /moveToPosition: This POST request requires three parameters in Json format. The coordinates for x, y and z must be given as integer values. In order to avoid crashes, it is recommended to move the robot arm with slightly changing values until the user is familiar with the coordinate system.
  • /getPostition: This POST operation delivers the three coordinates for the current position of the arm in Json format.

The web interface for using the robot is simple and intuitive to use. It is implemented with Swagger, allows the input of parameters, shows an example output and gives back a HTTP response code after the execution of an operation. As the robot is currently only connected via the Raspberry Pi to the local OMiLAB network and a moveable router, the laptop must be connected to the same alternative as the robot arm for using the operations.