SLAM navigation is a complicated topic, which is related to many mathematics model and algorithm. While in ROS platform, these models and algorithms have been implemented and encapsulated as a function package within ROS architecture, so in diego 1#, we use ROS navigation framework.
1. ROS navigation framework
Following figure is navigation framework illustrated by ROS, you can find more detail from http://wiki.ros.org/navigation/Tutorials/RobotSetup
In the navigation stack, function packages in white and grey have been encapsulated in ROS, while function packages in blue require customized development based on hardware platform.
- acml：Positing on existing map based on laser data http://wiki.ros.org/amcl
- move_base：Path planning to avoid obstacles based on map and laser data when robot moving http://wiki.ros.org/move_base
Though both gmapping and hector can be used to construct map, they have different algorithm, that is, gmapping relies on odom data while hector not when constructing map. You can choose one of them for application.
2. Diego 1# related function package
Following figure shows function packages and corresponding hardware of Diego 1#.
|odometer source||ros_arduino_bridge||.Arduino UNO|
|sensor transform||无||. 树莓派||tf基本上都是静态的，可以在launch文件中实现|
|sensor source||rplidar A2 Driver|