Coder Social home page Coder Social logo

shangzhouye / ekf-slam-on-turtlebot3 Goto Github PK

View Code? Open in Web Editor NEW
30.0 3.0 12.0 161.95 MB

Feature-based EKF-SLAM on Turtlebot3 with landmark detection

Home Page: https://shangzhouye.tech/featured-projects/ekf_slam/

CMake 26.65% C++ 73.35%
ekf-slam slam-algorithm turtlebot3

ekf-slam-on-turtlebot3's Introduction

Feature-based EKF SLAM on Turtlebot3 from Scratch

Overview

This repository builds feature-based EKF SLAM on Turtlebot3 from scratch. The demo below shows the algorithm in action (2x speed).

  • Trajectories
    • The pink path shows the odometer estimated path.
    • The green path is the groundtruth.
    • Yello path is SLAM results.
  • Landmarks
    • Blue landmarks are groundtruth.
    • Green landmarks are measurements.
    • Indigo landmarks show where the SLAM algorithm thinks their positions are.

The figure below shows the result of the landmark detection algorithm using a 2D laser scanner:

The system has the following major components:

  • A 2D Lie Group library for differential drive robots with complete unit testing
  • A waypoint following feedback controller
  • Turtlebot3 URDF built from scratch for Gazebo simulation
  • Gazebo plugins to control the robot and return the groundtruth data for evaluation
  • An odometer that estimates robot states based on encoder reading
  • Turtlebot3 interface that controls the motors with given velocity command
  • Feature detection algorithm that identifies landmarks using a 2D laser scanner
  • EKF SLAM algorithm that estimates robots states

A detailed description can be found in my portfolio.

File structure

Packages

Six packages are in this repository.

  • nuturtle_description develops Turtlebot3 URDF, and visualizes the wheeled robot in Rviz
  • nuturtle_gazebo includes Gazebo plugins to simulate the robot in Gazebo
  • nuturtle_robot implements the Turtlebot3 interface, and includes the test node for the odometer on the real robot
  • nuturtle_slam includes the feature detection algorithm and the EKF SLAM algorithm
  • tsim implements the waypoints following feedback controller
  • rigid2d is the 2D Lie Group library, including SO(2), SE(2) calculations, the odometer, and the fake encoder

Major launch files

  • nuturtle_description/launch/view_diff_drive.launch launches the URDF model in Rviz
  • nuturtle_robot/launch/test_waypoint.launch drives the robot through waypoints using the fake encoder with visualization in Rviz
    • Service /start_waypoint would start the movement
  • nuturtle_gazebo/launch/diff_drive_gazebo.launch drives the robot through waypoints in Gazebo simulation
  • nuturtle_slam/launch/landmarks.launch launches the landmark detection algorithm with visualization in Rviz
  • nuturtle_slam/launch/slam_in_control.launch launches the actual SLAM algorithm
    • Rviz visualization is in map frame
    • Pink path shows the odometer estimated path.
    • Green path is the groundtruth.
    • Yello path is SLAM results.
    • Blue landmarks are groundtruth.
    • Green landmarks are measurements.
    • Indigo landmarks show where the SLAM algorithm thinks their positions are.

Dependencies

Quick Start guide

  • Install all the dependencies
  • fork this repository, then clone the package using wstool
    • rosinstall file is included in the repository
  • Build the package using catkin_make
  • Use roslaunch nuturtle_slam slam_in_control to launch the SLAM algorithm

Future work

  • Data association is currently assumed to be known. SLAM with unknown data association can be achieved by calculating the Mahalanobis Distance

ekf-slam-on-turtlebot3's People

Contributors

shangzhouye avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ekf-slam-on-turtlebot3's Issues

shangzhouye.tech

hello, Mr.Ye, I'm really interested in your repo - EKF-Turtlebot, but I' can't get access to this web which is called shangzhouye.tech,
are you available to share the code of that web? if you are not, can I add your qq or wechat so that we could learn more things about the repo ? my qq : 479875948, thank you from the bottom of my heart!

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.