Skip to main content

Long Thin Hauler - Graduation Project

Welcome to the official GitHub repository for the "Long Thin Hauler," an innovative autonomous vehicle designed to navigate and self-park within a constrained environment. This project is a result of extensive research and development by the BeyondTech team as part of our final-year project for METU Electrical Electronics Engineering program.

Project Overview

The "Long Thin Hauler" is an autonomous ground vehicle optimized for precise parking within narrow spaces. Using a combination of sensor fusion, wireless communication, and visual-based algorithms, our vehicle can autonomously navigate and park in a designated area measuring 3m x 3m, no matter its starting position.

Features

  • Autonomous Navigation: Navigate autonomously using sensor data and localization techniques.
  • Wireless Communication: Components communicate wirelessly in a plug-and-play manner using a custom but extensible communication protocol.
  • Visual Positioning: Utilizes cameras and fiducial markers for precise positioning and navigation.
  • Custom Mechanical Design: Features a unique mechanical design optimized for narrow spaces.

Getting Started

To get started with the Long Thin Hauler project, clone this repository and install as a Python package.

git clone https://github.com/shadymeowy/longthin
cd longthin
pip install .

Usage

While the Long Thin Hauler is designed for a specific application, the core components can be adapted for other projects. There are several modules available for use, including:

  • longthin.filter: Includes an extended Kalman filter for sensor fusion and localization utilizing preintegration of IMU data with visual odometry. Generated symbolically using the sympy library.
  • longthin.controller: Includes many controllers such as visual odometry based controller, Dubins path controller, and a PID on the heading controller.
  • longthin.calibration: Includes IMU calibration for accelerometer and magnetometer using the ellipsoid fitting method.
  • longthin.geometry: Includes geometry functions for calculating distances, angles, and transformations.
  • longthin.graphics: Includes functions for rendering the vehicle and environment in a 3D simulation.
  • longthin.model: A full vehicle model with dynamics and kinematics for simulation and control.
  • longthin.path: Includes functions for generating and manipulating Dubins paths using pure vector algebra based on the Dubins path equations.
  • longthin.ui: Qt6 based dockable UI for visualizing, tuning and monitoring the vehicle.

The project also includes a communication protocol for different transport layers and a simulation environment for testing and development. While using this project on actual hardware not trivial. However, it is easy to use the modules in a simulation environment. The simulation environment is designed to be modular and flexible. Any module that is compatible with the simulation environment can be used to test and develop the algorithms.

To run the simulation environment, use the following command:

longthin-runner --config sim.yaml

This command will run necessary modules and start the simulation environment. This method requires the tmux terminal multiplexer to be installed. If you don't have tmux installed, you can run the modules separately. To run the modules separately, check longthin/config/sim.yaml for the necessary modules.

One of the most critical feature of the project is the communication protocol that allows the modules to communicate with each other. The messages can be defined once, then can be used on microcontrollers, simulation environments, or any other platform. The project supports the various transport layers such as ZeroMQ (with its associated transport layers), UART, and ESPNOW. Any module (software or hardware) can communicate with each other in a plug-and-play manner. To see how the communication protocol works on the firmware side, check the firmware directory.

The firmware also includes a few AHRS implementations for sensor fusion. While the project itself implemented for rp2040, the individual parts are included in C99 and can be used on any platform. See the firmware directory for more information.

Documentation

There is no dedicated documentation for the project. However, we believe the project structure is quite self-explanatory. The code is well-documented, and the modules are designed to be modular and reusable. If you want the read the associated report, you can find it in the report directory. I cannot guarantee the completeness of the report. While implementing a robust system is hard, documenting the methods and implementation details is quite impossible if there is no incentive to do so.

Contributing

While this is a mere student project of ours, it may serve as a starting point for your own projects. We hope you find it useful and welcome any feedback or contributions. Feel free to reach out to us with any questions or suggestions.

License

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

longthin-0.0.1.tar.gz (62.8 kB view details)

Uploaded Source

File details

Details for the file longthin-0.0.1.tar.gz.

File metadata

  • Download URL: longthin-0.0.1.tar.gz
  • Upload date:
  • Size: 62.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for longthin-0.0.1.tar.gz
Algorithm Hash digest
SHA256 15c5e738c5df6cc79ba0dd8f29154187ecffbeeafb92ab4047d11bc60e1240b4
MD5 f696c1a63cb2a40acc18b196b7dda1b9
BLAKE2b-256 36a7af363d9c73cea999b31edbbbb8205d081bd57ea9741afd52dacb95f47ddf

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.1 This release

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page