As the wikipedia page of Occupancy grid mapping explains, the result of the mapping process is a binary 1 or 0, occupied or not, the decision itself may be based on noisy data, which involves the probabilistic assessment of prior information to infer the posterior probability of the occupancy.
Cause of the intrinsic noise in sensory data, we have to consider a probabilistic model (mostly Gaussian) for the sensor measurements. As a matter of fact, the description and definition of the mapping problem will be probabilistic. The goal is to compute the most likely map given the sensor data and commands given to the robot:
In occupancy grid mapping as ...
The most traditional method is to keep looking at the trajectory and see if your current location is close enough to the previously visited place. Once this happens run the ICP. If ICP converged normally, that is your loop closure.
A bit more advanced method is doing a place recognition. Generate a keyframe every few meters and extract a feature descriptor ...
I am just going to explain from the basics. So feel free to skip through the first part and scroll to the bottom if you want the answer.
The 3 parameters of your pose are $x,y,\theta$.
These can be stored as homogeneous matrix which is the combination of the translation($x,y$) and the rotation($\theta$).
It looks like so
Concatenation will work only if your positioning/localization is super precise which is seldom the case. What you want to be doing is scan registration. ICP and NDT are the two most widely used registration techniques which you can speed up by matching only the features you are extracting. In scan registration, your sensor gets a scan (from which you will ...
The core part of the HectorSLAM is in the file hector_slam/hector_mapping/include/hector_slam_lib/matcher/ScanMatcher.h and hector_slam/hector_mapping/include/hector_slam_lib/map/OccGridMapUtil.h.
The implementation of the scan matching in HectorSLAM uses the maximum likelihood estimator (MLE), which is implemented in the function estimateTransformationLogLh....
Maybe you are looking to crop the occupancy grid. Map server provides some api's for cropping. This sample script from their documentation would shed some light
from PIL import Image
x_min = map_image.size
x_end = 0
y_min = map_image.size
y_end = 0
If you intend to stitch images together, you don't need to strictly implement slam. As long as there is good overlap between images, you can use SIFT/SURF features to extract matching keypoints and stitch the images together. Take a look at this tutorial on panorama creation.
However, given your setup, I believe SLAM would be the way to go! since you already ...
Actually, the HECTOR_NAVIGATION package depends on other packages and one of them is ceres_catkin (https://github.com/tu-darmstadt-ros-pkg/ceres_catkin) which you need to clone and build in your catkin workspace. However, this ceres_catkin further depends on catkin_simple (https://github.com/catkin/catkin_simple), glog_catkin (https://github.com/ethz-asl/...