Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

lokalisierung-vrob

  • Clone with SSH
  • Clone with HTTPS
  • Toolkit for locating a vehicle on the race track

    This project deals with the localization of a vehicle on a race track. This is a student project from Bochum University of Applied Sciences.

    The main approach of the localization is to locate the vehicle based on the current and previously driven section types. A section type can be a right turn, a left turn or a straight section.

    Robot

    To test the algorithm, the robot LEGO EV3 Brick is used. It follows the trace with the help of a line tracker.

    The robot uses MicroPython. A guide on how to install MicroPython, how to set up Visual Studio Code and how to connect the robot can be found at the following link: https://assets.education.lego.com/v3/assets/blt293eea581807678a/bltb470b9ea6e38f8d4/5f8802fc4376310c19e33714/getting-started-with-micropython-v2_enus.pdf?locale=de-de

    Important notes regarding the robot:

    • The robot has differential drive.
    • The motors / sensors are connected to the following ports of the robot:
      • Motor: OUTPUT A & OUTPUT B
      • ColorSensor: INPUT 4
      • GyroSensor: INPUT 1

    Getting started

    How to run MicroPython programs on LEGO EV3:

    1. Download and flash the EV3 MicroPython image onto a micro SD card
    2. Insert the micro SD card into the SD card slot on the EV3 Brick
    3. Download, install, and launch Visual Studio Code on your computer
    4. Install and activate the LEGO Education EV3 extension
    5. Connect the EV3 Brick
      • After installing the extension, a device can be connected in Visual Studio Code (at the bottom, left).
      • The LEGO EV3 Brick should be listed and can be selected in the list.

    The following Python-packages must be installed on the computer to run the algorithm:

    • numpy
    • pandas
    • matplotlib
    • tkinter
    • socket
    • datetime

    Preparations before running

    • Clone this git.
    • Connect the EV3 robot to the same network as your executing device.

    The following adjustments might be necessary, before the algorithm is executable:

    • Change the ip-address in Lokalisierung_LEGO/main.py to the ip-address of the executing device.
    • Insert the sections of the race track in localization.py (get_set_of_section_*()).
      • structure of a section: [name, section_type, previous_sections_type]
    • If the track plotter is used, insert a set of track parts in the file grafic (get_set_of_trackparts_*()).
      • structure of a section: [URL, name, start position(x,y), start orientation]
      • Images of the race tracks are not included in this git. If interested, please contact the authors.

    The following measured values are stored and must be adjusted if necessary (in main.py):

    • wheel circumference (radumfang)
    • wheel spacing (d)

    Notes on constant values (in race_management.py):

    • CHAR_RECIVING: number of chars in one UDP-message This value should only be changed if the sent string changes.
    • THRESHOLD_LEFT, THRESHOLD_RIGHT: value to detect a left or right turn These values can be changed to possibly improve the algorithm.
    • BLOCK_SIZE_DA: number of iterations to analyse the section type This value can be changed to possibly improve the algorithm.
    • S = 0, R = 1, L = 2: value for a straight part, a right turn, a left turn of the track These values should not be changed in order to maintain the functionality of the algorithm.

    Run

    1. Connect the robot via Visual Studio Code.
    2. Start the python file race_management.py
      • Some pop-up windows will appear.
      • The windows can't be moved until the UDP-connection is established. When you want to stop the script you have to restart the python kernel.
    3. Start the main.py file on the robot:
      • Select the file in the Lego-EV window in Visual Studio Code (lower left corner).
      • Start the file by right-clicking.
    4. The robot drives and sends data to the executing device, which prints the current detected section to the console and plots further data.
    5. To stop the robot / program press the left upper button on the robot or close the dashboard window.

    Description

    The main branch contains the following files:

    • localization.py: localization algorithm
    • driving.py: detection of section type, calculation of odometry, calculation driven distance in section
    • grafic.py: graphical output
    • race_management.py: main program
    • Lokalisierung_LEGO (folder), main.py: programming of the robot LEGO EV3

    Code overview

    Alt text

    Authors and acknowledgment

    Jessica Dreyer, Sebastian Böttger

    License

    This project is licensed under the MIT License - see the LICENSE file for details.

    Project status

    Project closed.

    Please don't hesitate to develop this project further.