Skip to content

[WIP] Mapping #13

@nepython

Description

@nepython

Brief info

  • We need to create two kinds of map using the autonomous drone, the local and global map.
  • The former for immediate maneuvers and the latter for global path planning and future reference.
  • This issue is in continuation to 2. Map a room #2 and details what we have done, are currently working on and need to achieve finally.

Packages, algorithms and tools used so far:-

  • Canonical Scan Matcher - The C(anonical) Scan Matcher (CSM) is a pure C implementation of a very fast variation of ICP using a point-to-line metric optimized for range-finder scan matching.
    • Limitation: PLICP algorithm is very fast and easy to integrate however it has been strictly written to work with LaserScan. Hence to use it in our project we needed to convert PointCloud2 data to LaserScan. However, since we want the final output to be in 3d and not in 2d, we had to drop it.
  • OctoMap - The OctoMap library implements a 3D occupancy grid mapping approach, providing data structures and mapping algorithms in C++. There are multiple advantages in storing the map as an occupancy grid and not as pointcloud, chief ammongst them is the less storage.
  • GMapping - This package can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot.
  • PointCloud library - It is not possible to move ahead with mapping without having sufficient understanding of PCL library. To start with it C++ basics and tutorials would come in handy.
  • RTABMAP - RTAB-Map (Real-Time Appearance-Based Mapping) is a RGB-D Graph SLAM approach based on a global Bayesian loop closure detector. The loop closure detector uses a bag-of-words approach to determinate how likely a new image comes from a previous location or a new location.
    • Strengths: It is a very well maintained library with very active community, tutorials and lots of flexibilty.

Current Tech Stack (for mapping)

RTABMAP (primarily for mapping) + PCL (handling pointcloud data) + RViz (for visualisation) + OctoMap (for storing the occupancy grid).

Things that need to be done:-

  • Using RTABMAP (which by default uses ICP), generate local and global maps - This is currently under progress, a quick way to reach the current setup would be to use the docker image (root password is hardik).
  • These maps need to be in OctTree format (binary format would do) - should be straight forward as rtabmap provides built-in support to occupancy grid.
  • Both maps should be visualizable from RViZ
  • Global Map should be saved while local map should be published to another topic (to be used by other subsystem).
  • The steps needed to generate octomap using this repo's packages need to be documented in the README.md.
  • The steps for setup needs to be well documented.

Additionally

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions