myAGV is the first mobile robot of Elephant Robotics. 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.
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.
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.
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.
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
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 is no new Scans are 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).
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:
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.
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.
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.!
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!
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.