Giter Site home page Giter Site logo

h-montazer1998 / ece276a-particle-filter-slam Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jevancc/ece276a-particle-filter-slam

0.0 0.0 0.0 9.68 MB

UCSD ECE 276A Winter 2020 Project 2: Particle Filter SLAM

License: MIT License

Python 0.29% Jupyter Notebook 99.71%

ece276a-particle-filter-slam's Introduction

Particle Filter SLAM and Texture Mapping

This is the project 2 of the course UCSD ECE276A: Sensing & Estimation in Robotics.

Simultaneous Localization And Mapping (SLAM) is a challenging topic in robotics and has been researched for a few decades. When building a map from the observations of a robot, a good estimate of the robot's location is necessary. However, a robot needs a consistent and reliable map for localization. SLAM is the computational problem to simultaneously estimates a map of environment and pose of a moving robot relative to that map, without any a-priori information external to the robot except for the observations of the robot. SLAM approaches are capable of building the map online while correcting the errors of its pose estimate as it sensing the surroundings.

In this project, we develop a solution for SLAM based on particle filter and occupancy grid. We extend this solution for texture mapping, which project color points from the RGBD sensor onto the occupancy grid in order to color the floor. Our solution is evaluated with real-world odometry data, indoor 2-D laser scans, and RGBD measurements from THOR, a humanoid robot with lidar and Kinect v2 installed. It is able to estimate reliable map and robot trajectory on various dataset in reasonable time.

Project Report

Screenshots

Demo videos

Particle Filter SLAM Texture Mapping

Implementations:

Source files:

  • src/map.py: Classes for occupancy grid map.
    • Map2D: Class for 2D occupancy grid map. By setting the range of x and y axis and resolution, this class automatically builds the grid map and provides methods to convert world coordinates to pixel indicies
  • src/robot.py: Classes and functions for THOR robot.
    • Transform: Transform matrix generator. By creating an instance with the current THOR robot state, this class automatically build transform matrices between different frames.
    • undistort_(ir/rgb): undistort color and depth image with predefined calibration parameters
    • align_ir_rgb: align color and depth image with predefined extrinisic and parameters.
  • src/slam.py: ParticleFilterSLAM class for experiment
  • src/util.py: utilities for robot trajectory, occupancy map, and texture map visualization
    • plot_map: plot and save the map and robot trajectory image

Tools:

  • tools/make_traindata.py: making training data pickle files, this script load robot data from raw files (.mat) with project provided function, align timestamps, transform lidar scan to lidar frame in [x, y, z], and save the data to a pickle file. The experiment notebooks all use the pre-processed pickle file instead of raw robot data.
  • tools/make_video.py: make video from experiment output images

Notebooks:

  • SLAM_<id>: The particle filter SLAM experiment on data set <id>.

Training data

Download data from UCSD ECE276A 2020 PR2

Download and extract files to directory data.

References

ece276a-particle-filter-slam's People

Contributors

jevancc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.