Giter VIP home page Giter VIP logo

silvery-botlab-f22's Introduction

ROB 550 Botlab

In the Botlab, movement control, obstacle detection, maze exploration, and self-localization functionality was developed on the MBot robot, a mobile robot platform. It is designed to explore the fundamentals of robot autonomy by developing MBot with autonomous mapping, localization, and exploration capabilities.

Motion Controller

Motion control can be separated into three hierarchical levels:

  • Wheel PID controllers
  • Nonholomic state feedback controller

The wheel controllers are responsible for maintaining the speed of individual wheels in response to set-point inputs by controlling the duty cycle of PWM signals sent to wheel motor drivers through a open loop duty mapping plus a PID feedback term.

The motion controller further abstracts robot control by taking an input path of waypoints, and generating velocity set-points that result in the robot following the path. It uses the nonholonomic drive model, and computes the linear and angular velocities such that the deviations in x and y direction are driven to zero.

SLAM

Occupancy-grid based mapping was combined with Monte Carlo localization to create a SLAM system. It consists of the action model, the sensor model, and the particle filter. In addition to maintaining a map of the robot's environment, SLAM is also responsible for outputting a single estimate of the robot's pose at each timestep. To do this in an outlier-robust way, the most likely 10% of particles are selected, and their likelihood-weighted mean pose is used as the SLAM pose estimate.

botlab_slam_ckpt.mp4

Planning and Exploration

Planning and exploration components are the highest level of abstraction, making use of SLAM and motion control systems. Path planning is implemented using the A* algorithm, and the motion controller is used to execute paths that explore these areas. During exploration, the planner attempts to find paths from the robot to the center of each frontier, and the nearest frontier is selected as an exploration target, where frontiers are identified by searching for unobserved cells which are adjacent to observed unoccupied cells.

This demo video shows a solution to the global localization problem, where the global map is given but the robot starts at a unknown initial pose.

Kinapped.Cat.mp4

silvery-botlab-f22's People

Contributors

pgaskell avatar silvery107 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

wdliu356

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.