The highest cost-performance mobile robotic platform for individual developers

1. Introduction

myAGV is the first mobile robot of Elephant Robotics. :heart_eyes: It uses the competition-level Mecanum wheels and a full wrap design with a metal frame. There are two built-in slam algorithms to meet the learning of mapping and navigation directions. It provides multiple interfaces and can be equipped with different robotic arms to become a compound robot to achieve more applications. :grin:

1.1 Mecanum Wheel:

The installation of the Mecanum wheel enables myAGV to perform the all-direction moving, which can save a lot of unnecessary paths when moving towards the destination and move more flexibly for a massive range of motion.

1.2 Detachable

The fully wrapped design with a metal frame makes the myAGV more compact and tough. The built-in Raspberry Pi 4B and split structure make the robot can be disassembled independently, and users can design and create a DIY robot. :disguised_face:

2. Functions

2.1 Mapping

SLAM mapping is required in the use of myAGV because the core of the mobile robot to achieve autonomous walking is to achieve autonomous positioning and navigation. In independent positioning and navigation technology, problems such as positioning, mapping, and path planning will be involved. The quality of the map construction will directly affect the walking path of myAGV. If myAGV wants to reach a specific destination, it must draw a map like humans. The process of describing the environment and understanding the environment relies on the map. The two mapping algorithms used by the myAGV are introduced below.

2.1.1 Gmapping algorithm

Gmapping is an efficient particle filter. It is a SLAM algorithm based on 2D lidar using the RBPF (Rao-Blackwellized Particle Filters) algorithm to complete the construction of a two-dimensional grid map. Gmapping can build indoor maps in real-time, requiring less computation and higher accuracy in making small scene maps.

First, place the mobile robot at an appropriate starting point in the environment where the map needs to be built because opening the launch file will open the IMU sensor and Odom odometer, and artificially moving it will cause the mobile robot to be distorted. First, open the SLAM Scan file,

Run the command:

cd myagv_ros
source ./devel/setup.bash
roslaunch myagv_odometry myagv_active.launch

Then open the gmapping mapping file, and control the myAGV to move in the required space.

Run the command:

roslaunch myagv_navigation myagv_slam_laser.launch

Save the map when you see that the required space is created in the image
Run the command to save the created map:

rosrun map_server map_saver

2.1.2 Cartographer algorithm

Cartographer is a set of SLAM algorithms based on graph optimization.

The cartographer algorithm mainly uses the concept of Submap. Whenever the data of a laser Scan is obtained, it is matched with the currently recently established Submap so that the laser Scan data of this frame is inserted into the optimal position on it. The Submap is also updated while inserting new data frames. A certain amount of data is combined into a Submap, if there are no new Scans inserted into the Submap, it is considered that the Submap has been created, and then the next Submap will be created. The specific process is as follows.

All created Submaps and the current laser Scan will be used for Scan matching for loopback detection. Loopback detection is performed if the recent Scan and all created Submaps are close enough in the distance. After the loopback detection is completed, the map construction is completed, too.

The process of building a map with the cartographer algorithm is the same as the process of building a map with the Gmapping algorithm. First, open the radar and the cartographer algorithm file to control the myAGV to walk in the area built to complete the map.

Some people may doubt why introducing two algorithms for building a map.

Let’s compare the two algorithms to solve this doubt.

Gmapping can build indoor maps in real-time, requiring less computation and higher accuracy in building small scene maps. Compared with Cartographer when building a small scene map, Gmapping does not require too many particles and has no loopback detection, so the amount of calculation is less than that of Cartographer, and the accuracy is not much worse. When building a small scene map, compared with Cartographer, Gmapping is not only fast but also can build high-precision maps, and the number of particles required for Gmapping to expand the map can easily burst the memory. The latter can solve the problem of map expansion, and the effect of mapping can be excellent (the above picture is in the same terrain).

2.2 Map Navigation

In the map we built in the previous step, the robot can automatically navigate to a certain destination on the map. This all stems from the navigation function package of ROS.

move_base in navigation:
global planner:
The overall path planning is carried out according to the given target position.
In the navigation of ROS, the global route of the robot to the target position is calculated first through international path planning. The Navfn package implements this function. Through Dijkstra’s optimal path algorithm, Navfn calculates the minimum cost path on the cost map as the robot’s global route.

local planner:
Plan the avoidance route based on nearby obstacles.
Local real-time planning is implemented using the base_local_planner package. This package uses the Trajectory Rollout and Dynamic-Window approaches algorithms to calculate the speed and angle (dx, dy, dtheta velocities) the robot should travel during each cycle.
The base_local_planner package uses map data to search for multiple paths to the target through algorithms, uses some evaluation criteria (whether it will hit an obstacle, the time required, etc.) to select the optimal path, and calculate the required real-time speed and angle.
Next, we will introduce the process of our reproduction:
In the beginning, we had to determine the location of myAGV and used ACML in ROSto locate it. (Find the location of myAGV on the map)

After a few laps in place to complete the positioning, we can start automatic navigation.

When we click “2D Nav Goal” and then click the point we want to reach on the map, myAGV will start towards the target point, and we can also see in RVIZ that there is a planned path for myAGV between the starting point and the target point, it will move along the route to the target point.

2.3 PS2 handler control

As a mobile robot, wireless control is essential.
We developed the ps2 handler to control myAGV so that myAGV can move freely and realize more possibilities.
The following is the sequence diagram of our handle control. Maybe it can provide some ideas for you to do more development on the handle.

3 Summary

What would you do if you had a mobile robot like this? What kind of myAGV can you refit it into in its split-structure detachable mobile robot? Is it to add some weapons to the mobile robot as a combat vehicle or to refit it to carry a variety of machines full of the future sense?
Thank you for watching. Please comment if you have any good ideas! :robot:
The above is our initial introduction to myAGV, and the follow-up will introduce myAGV equipped with different robotic arms, including the myCobot, myPalletizer, and mechArm. :smiley:


Looks very nice. A couple of questions:

  • Your website says that the payload is 2000g – is that a typo? 2kg payload is not a lot and the arm that you show mounted on it looks like it might weigh a lot more than that.
  • Omni-directional wheels have notoriously poor odometry. Does the robot have an IMU that is used to compensate for that for localization?
1 Like

Thank you for your approval! :face_with_peeking_eye:
1 The maximum weight of a robotic arm is 1kg. The trolley can actually bear more weight, but it is not recommended to use it with more weight, as the motor cannot bear it.
2 Yes, the myAGV has an IMU to compensate for that for localization. :grin:

This looks great, but I would like to know some information.

  • How does it work with other robotic arms?

  • How is it achieved?

1 Like

This seems an interesting platform but it appears it only supports ROS. Are there any plans to support ROS 2? If so, by when?

1 Like

You can use myAGV combined with myCobot280 to solve the limitation of distance and can complete functions such as mobile grabbing and suction.
We can connect myAGV to the robotic arm through TCP/IP,vnc, WiFi, etc.

1 Like

Yes, only ROS is supported. ROS2 support is under development and will not be supported in a short time.

Any time estimations you can share?

ROS 2 and Gazebo (ideally Ignition Gazebo, to favour the community jump towards it) enablement will surely get a few of us excited to go ahead and make a purchase.


Sorry, I can not share the time. :smiling_face_with_tear:
Our team is currently working on ROS2 support for the myCobot series. We will release it as soon as we complete the support of ROS2. Thank you.

1 Like

How long can it run? Will the machine overheat if it is run for a long time?

The use of myAGV should not exceed 60 degrees Celsius, it can work normally for 1~1.5h

1 Like

As a recent purchaser I need to warn that the ROS support is rudimentary only with missing or incorrect documentation where it exists. The mecanum wheels are exposed as standard left-hand and right-hand wheelsets which does not permit sideways travel which should be possible with mecanum wheels. Only forwar/back and turn. There is no public repo at this stage so one is restricted to the barely operational code snapshot that is loaded on purchase. On contacting customer support, while courteous, I was told that this is something I would have to develop myself. This appears to be something aimed at the STEM market with a blocks-style programming. If ROS/ROS2 is a requirement then look elsewhere. Does anyone here have experience with the UP series from ? This looks to have comprehensive docs and a modern, public codebase focused on ROS2.


I’m very sorry for causing you a bad experience. myAGV can move laterally when we test it. We don’t know much about the myAGV you have. You can contact us, we will learn more about the problem and give you a solution to the problem.
Contact us

I have two of the mycobot arms and I was hoping to use them to develop some MoveIt features. However, due to the limitations of the serial interface for commanding joint positions the maximum control rate I’ve achieved is ~6hz. This results in rather poor performance. I have one each of the micro-controller and rpi-based robots. I was hoping that the rpi version would be more open but when disassembling it I found it has the same motor control board and the rpi is just connected over serial to it. I have tried to find the firmware for the control board so I could improve it to achieve higher rates but sadly it is all closed source. It would be really helpful if the firmware was open-sourced.


We are glad to receive your feedback about the problem you mentioned. Our current communication method between the servo and the controller is RS-485 bus, 6hz is the fastest communication rate we can achieve at the moment. Our firmware open source code is available on GitHub. If you need a faster communication rate, you need to use TCP/IP protocol, the overall architecture is different. Our industrial robots can do it, so if you need it, you can contact us.