A simulator/client/server that features autonomous localization (using a 'particle filter') and distant control of an arduino/raspberry pi powered car.
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
img Updated readme with more info and screenshots of the mobile app May 22, 2013
maps Updated server / client and visualisations May 21, 2013
.gitignore Updated to ignore .pyc Feb 14, 2013
README.md
Ubuntu-L.ttf Corrected all bugs in the car viz. + animation Mar 31, 2013
astar.py Code cleanup: Removed unused imports, trailing spaces, etc. Dec 5, 2014
auto.py Code cleanup: Removed unused imports, trailing spaces, etc. Dec 5, 2014
autonomee.ino Added arduino sketch May 23, 2013
car.h Added arduino sketch May 29, 2013
carsocket.py Moved SFML import to make it possible to run the app without it Dec 5, 2014
compass.h
config.ui Added more options to probabilities May 19, 2013
engine.py Code cleanup: Removed unused imports, trailing spaces, etc. Dec 5, 2014
geometry.py Added angle/distance based path simplfication May 3, 2013
interface.ui No commit message Feb 14, 2013
log.ui Visual improvements, log window May 11, 2013
main.py Code cleanup: Removed unused imports, trailing spaces, etc. Dec 5, 2014
manual.py
probability.py Updated features (pre-RC version) May 20, 2013
server.py
svg.py
widgets.py Code cleanup: Removed unused imports, trailing spaces, etc. Dec 5, 2014

README.md

autonomee

Picture of the car

A client/server for robot localization (using a 'particle filter') and distant control.

For the (real) car, an arduino (for motor control and sensor readings) and a raspberry pi (for communication) are used. You can the robot's arduino sketch, autonomee.ino, car.h and compass.h.

Features

Screenshot of the app's UI

  • A basic SVG parser
  • A pathfinder (A*)
  • Nearest obstacle detection (to simulate the sensor's measurements)
  • Basic probability model : particle filter. (hopefully we'll also implement one based on Kalman's filter)
  • Visualization of the robot's movements and the particles used to localize it.
  • A client/server to push commands to the car and control it (through serial ports)

Dependencies

  • Python 2.7
  • Qt and PySide (Qt's python binding)
  • Numpy
  • PySerial
  • Scipy

Communication protocol

The packets sent to the server (TCP) respect this format:

OPCODE(2 chars) + "#" + OPERANDE 1 (6 chars) + "#" + OPERANDE 2 (6 chars)

Supported operations

  • Running forward: OPCODE=01 ; Example : 01#000000#000000

  • Running backward: OPCODE=-1; Example : -1#000000#000000

  • Turning right : OPCODE=02 ; Example : 02#000000#000000

  • Turning left : OPCODE=-2 ; Example : -2#000000#000000

  • Setting speed : OPCODE=05, first operand is a factor ranging from 0 to 250. ; Example : 05#000180#000000

Mobile app

A (responsive) mobile (Android) client compatible with the communication protocol used has been developped by Alexis Fasquel.

Tablet view of the mobile UI Phone view of the mobile UI UI

Updates :

22 May 2013

We presented this project (initally a class project) to our fellow students (@INSA Lyon) today. You can check the presentation (in French) here: https://slid.es/halflings/autonomee

2 May 2013

The project's name has changed from 'Carosif' to 'Autonomee'.

28 April 2013

We've added many major features, including a dashboard showing the sensors' data, a dialog to configure the car's properties and the visualization of the particle filter.

Here's a video showing the particle filter in action :

http://www.youtube.com/watch?v=Mcl2Vz46rro

25 March 2013

This now also includes a server/client made to be used in a Raspberry Pi connected to the Arduino controlling the car. Check how that work out in a 'joystick controlled' mode :

https://www.youtube.com/watch?v=rbX47X8HtGU