Raspberry pi robot

  • November 2016

Robot made with Raspberry pi and Lego mindstorm NXT.

Overview

This robot was made as part of the Robotics course at Imperial College London in the Autumn Term, 2016. The team consisted of 4 members which was just the appropriate number of people for effective communication and work.

The end goal of the project was to create a Robot that could navigate accurately in a given and known map ( Localisation only ) with a single sonar sensor for sensing the depth of surrounding objects/walls. The final task also consisted of accurately finding and bumping into 3 obstacles which could be placed anywhere in the given map.

The course was divided into several milestones which have been explained in detail below in a chronological order. There is also a video of one of the final test runs before the challenge !

Task 1 - Tuning PID Control for Odometry

The first task was to tune the PID control and calibrate the robotics for Odometry.Odometry refers to calibrating the distance travelled by a robot based on internal sensors ( like a Rotary encoder). This was a little tricky as it involved several parameters that we were required to tune. In order to test this, the first task was to calibrate the robot to trace a Square region of 10 cm sides , a total of 10 times, on a sheet of paper, and return back to the start postion.

A complete specification of this task can be seen here.

Task 2 - Forward/Backward Proportional Servoing with Touch and Sonar Sensor

The second task was simple and involved using the sonar to detect obstacles and try to avoid it by moving away ( forward or backward ) from a potentially moving obstacle.If the robot hit an obstacle , the touch sensor was used to detect it. In order to test this, the second task was to follow a wall in the lab room.

A complete specification of this task can be seen here.

Task 3 & 4 - Way point Navigation and Monte Carlo Localization ( MCL )

These two tasks were the most crucial in learning about how Probablistic Robots navigated accurately in a given map.

task 3 - Way point navigation

This involved represnting the particles ,the coordinate system,walls in the map and the angle of the robot with the horizontal axis. In order to test this, the task was to follow a wall in the lab room.

Task 4 - Monte Carlo Localization ( MCL )

MCL uses a particle filter to accept/reject particles that represent/misrepresent the current position ( as a pair of coordinates ) of the robot accurately. Complex math was involved in representing the Sonar Likelihood and using the probability value for an Update of the particles position. After the update a little more processing is involved and then some particles are rejected. If the formulae and the tuning is correct, the longer the robot moves around, the particles tend to gather densely around the actual coordinates of the robot.

The particles are initialized randomly and then the following steps are taken.
Steps involved in the algorithm
  1. Motion Prediction based on Odometry
  2. Measurement Update based on Sonar
  3. Normalisation
  4. ReSampling.

A complete specification of these tasks can be seen here and here.

Task 5 - Final Task

The final task was simply to find 3 obstacles placed in the map. It involved using the sonar to detect walls and obstacles (which were bottles for this task) and them bump into the bottles and then return back to the starting position in a certain time limit to gain maximum points.

A complete specification of this task can be seen here.

Video

This was not the best run. Sadly, In the excitement of the challenge, we forgot to take a video of the best run.Instead this shows a somewhat short example of the task

Conclusion ...

Enjoyed the course/project as it was my first robotics course and the tasks were very well organized , thanks to Mr.Andrew Davison for that, fit right into the schedule and at the same time challenging upto the level of a very basic introductory course to Probablistic robotics. It also taught me to work in a team and use version control software Git.

Other Projects

Drone State Estimation and Navigation

Drone State Estimation and Navigation

Successfully designed and implemented a cost-effective and complete system for real-time state estimation and navigation of a Parrot A.R. Drone using IP cameras and LEDs.

See Github code directly.

Exploring LLVM API

LLVM compiler

Worked with LLVM Compiler Toolchain as part of an internship at Arm.

C++ MIPS simulator

MIPS CPU simulator

Built a CPU simulator and testbench for the MIPS I instruction set.

See Github code directly.

C++ Write-back Cache Simulator

Write-Back Cache Simulator

Built a write-back cache simulator with LRU replacement policy in C++.

See Github code directly.