Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Mapping #13

Open
6 tasks
nepython opened this issue May 27, 2021 · 0 comments
Open
6 tasks

[WIP] Mapping #13

nepython opened this issue May 27, 2021 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@nepython
Copy link
Member

nepython commented May 27, 2021

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

@nepython nepython added documentation Improvements or additions to documentation enhancement New feature or request labels May 27, 2021
@nepython nepython self-assigned this May 27, 2021
@nepython nepython mentioned this issue Jun 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant