What is autonomous mobile robotics and how can I make one?
If you have this question, you’re at the right place! This space will not only teach you what these concepts are, but will also give a practical tutorial using which you can make your own autonomous mobile robot!
Well, the name Autonomous mobile robots is very descriptive of the type of robots that they are. Here’s a breakdown:
Autonomous: Can plan and execute commands on its own without human input
Mobile: Can move around freely in space
So by definition autonomous mobile robots (AMRs) autonomously navigate around in the environment it is in. Mars rover, self driving cars, floor cleaning robots are examples of AMR.
How to make your own Autonomous Mobile Robot?
There’s a lot of different tech stack you can use to make your own AMR. The easiest way to make it is using CK-9 robotics development kit and ROS based packages. The following tutorials will give you a step by step process for making your AMR.
Core requirements for building an AMR
- Base controller
- Odometry data
- Laser scan
- Map (optional: pre-built map)
Base controller
This is responsible for moving the bot around. On CK-9 it controls the speed of the DC geared motors for the differential drive, and receives data from IMU and encoders, which will be used for odometry.
Odometry
Just like humans in an unknown town, bots need to know the environment and their location in it to move to a goal position. The odometry data, in the form of ROS odometry messages gives us the pose (position and orientation) information of the robot at any given instant. The base controller outputs the odometry messages on the /odom topic.
Laser scan
A sensor like lidar allows the robot to detect its environment and scan obstacles at any given instant. A lidar with an appropriate ROS compatible driver is capable of publishing laser scan messages on the /scan topic. Apart from a lidar, you can even use RGB-D, stereo cameras, etc. Although lidar is the best option.
Map
A map is served using map server and allows the robot to locate it, thereby locating it in the real world environment. To reach that answer, a series of transforms are calculated from sensor axis to base axis to position axis to the map origin axis.
For accurate localisation, packages like amcl are used. Essentially, it fuses information from /scan and /odom to give out a more reliable pose value.
To serve the map, map_server package is used. The same package is used to save maps built while mapping.
Mapping is the process of building an initial map of the environment. For mapping, packages such asgmapping, hector_slam or rtabmap are used. CK-9 uses gmapping.
Finally, for autonomous navigation, move_base package is used, which in turn uses a combination of global and local planners, which plans the trajectory of the robot from its current location to the goal location, taking into account the obstacles from the map as well as dynamic obstacles.
Sounds like a lot? Don’t worry! We have things pre-built for you. With CK-9 you can get an AMR running in just 30 minutes. Follow the rest of the tutorials to know how.
Next
Robotics require robots.
Get yours.