LaneDetectionAndLaneKeeping - Lane Detection And Lane Keeping

Overview

LaneDetectionAndLaneKeeping

This project is part of my bachelor's thesis. The goal is to get a gopigo car to detect lanes provided by the raspberry pi camera v2. Return an information about the direction of the lane and keep the lane with a p-controller. Additionally, I implemented an obstacle detection with a haar cascade for cars.

Pipeline

Pipeline Pipeline

The workthrough of the lane detection and lane keeping is the following:

  • A possibly distorted input image is provided by the raspberry pi camera. With the file camcalib.py the input image is getting undistorted.

Undistorted distorted Image Undistorted Image

  • After that the region of intested is being set. A lot of different lane detection projects use a trapezoid for the ROI, but this wasn't possible for this project since in turns the inner lane disappears and I need a the information that I get. ROI also helps with the computing power needed -> smaller images, faster computation

cropped image

  • The image process contains of canny edge detection and a threshold image. The combination of both is the combo_image and is used to warp the image. To visualize the lanes a hough transformation is used (right image)

canny image theshold image combo image combo image

  • The warping of the image into a birdeye-view provids an optimal image perspective to extract the lane information especially in curved lanes.

birdeye image

  • To calculate the aimed trajectory the birdeye-image is being halfed. This halfed image is being scanned for the lanes. As a return a few middlepoints are generated and averaged. The trajectory is drawn into the birdeye-image from the middle of vehicle (bottom of the image) to the half of the image. As a x-value the averaged middlepoints is used. After that I rewarped the image to display the image in normal perspective as well!

birdeye image with trajectory image with trajectory

  • The detect_lanes_img function returnes the direction of the trajectory and the center of the car for a variance analysis.

  • The last part is the implementation of a p-controller that is correcting the error between the trajectory and the middle of the car

The workthrough of the obstacle detection is the following:

  • First you need a haar cascade for cars -> cars.xml
  • After that take a reference image of an obstacle you want to detect
  • Meassure the distance to the object and the width of the object and correct the variables KNOWN_DISTANCE and KNOWN_WIDTH
  • Adjust the wanted distance before stopping
  • After that drive onto the object and hope that all goes to play and nothing get's smashed :) Obstacle Obstacle
Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Detection"

M-LSD: Towards Light-weight and Real-time Line Segment Detection Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line

NAVER/LINE Vision 357 Jan 04, 2023
Deep Learning and Reinforcement Learning Library for Scientists and Engineers πŸ”₯

TensorLayer is a novel TensorFlow-based deep learning and reinforcement learning library designed for researchers and engineers. It provides an extens

TensorLayer Community 7.1k Dec 27, 2022
An implementation of RetinaNet in PyTorch.

RetinaNet An implementation of RetinaNet in PyTorch. Installation Training COCO 2017 Pascal VOC Custom Dataset Evaluation Todo Credits Installation In

Conner Vercellino 297 Jan 04, 2023
Pure python PEMDAS expression solver without using built-in eval function

pypemdas Pure python PEMDAS expression solver without using built-in eval function. Supports nested parenthesis. Supported operators: + - * / ^ Exampl

1 Dec 22, 2021
An official implementation of "Exploiting a Joint Embedding Space for Generalized Zero-Shot Semantic Segmentation" (ICCV 2021) in PyTorch.

Exploiting a Joint Embedding Space for Generalized Zero-Shot Semantic Segmentation This is an official implementation of the paper "Exploiting a Joint

CV Lab @ Yonsei University 35 Oct 26, 2022
End-to-end beat and downbeat tracking in the time domain.

WaveBeat End-to-end beat and downbeat tracking in the time domain. | Paper | Code | Video | Slides | Setup First clone the repo. git clone https://git

Christian J. Steinmetz 60 Dec 24, 2022
Jittor implementation of PCT:Point Cloud Transformer

PCT: Point Cloud Transformer This is a Jittor implementation of PCT: Point Cloud Transformer.

MenghaoGuo 547 Jan 03, 2023
Main repository for the HackBio'2021 Virtual Internship Experience for #Team-Greider ❀️

Hello 🀟 #Team-Greider The team of 20 people for HackBio'2021 Virtual Bioinformatics Internship πŸ’ πŸ–¨οΈ πŸ‘¨β€πŸ’» HackBio: https://thehackbio.com πŸ’¬ Ask us

Siddhant Sharma 7 Oct 20, 2022
Meshed-Memory Transformer for Image Captioning. CVPR 2020

MΒ²: Meshed-Memory Transformer This repository contains the reference code for the paper Meshed-Memory Transformer for Image Captioning (CVPR 2020). Pl

AImageLab 422 Dec 28, 2022
Repository for the paper : Meta-FDMixup: Cross-Domain Few-Shot Learning Guided byLabeled Target Data

1 Meta-FDMIxup Repository for the paper : Meta-FDMixup: Cross-Domain Few-Shot Learning Guided byLabeled Target Data. (ACM MM 2021) paper News! the rep

Fu Yuqian 44 Nov 18, 2022
PERIN is Permutation-Invariant Semantic Parser developed for MRP 2020

PERIN: Permutation-invariant Semantic Parsing David Samuel & Milan Straka Charles University Faculty of Mathematics and Physics Institute of Formal an

ÚFAL 40 Jan 04, 2023
Audio-Visual Generalized Few-Shot Learning with Prototype-Based Co-Adaptation

Audio-Visual Generalized Few-Shot Learning with Prototype-Based Co-Adaptation The code repository for "Audio-Visual Generalized Few-Shot Learning with

Kaiaicy 3 Jun 27, 2022
ICNet and PSPNet-50 in Tensorflow for real-time semantic segmentation

Real-Time Semantic Segmentation in TensorFlow Perform pixel-wise semantic segmentation on high-resolution images in real-time with Image Cascade Netwo

Oles Andrienko 219 Nov 21, 2022
Learning-Augmented Dynamic Power Management

Learning-Augmented Dynamic Power Management This repository contains source code accompanying paper Learning-Augmented Dynamic Power Management with M

Adam 0 Feb 22, 2022
OpenGAN: Open-Set Recognition via Open Data Generation

OpenGAN: Open-Set Recognition via Open Data Generation ICCV 2021 (oral) Real-world machine learning systems need to analyze novel testing data that di

Shu Kong 90 Jan 06, 2023
Meta graph convolutional neural network-assisted resilient swarm communications

Resilient UAV Swarm Communications with Graph Convolutional Neural Network This repository contains the source codes of Resilient UAV Swarm Communicat

62 Dec 06, 2022
Caffe: a fast open framework for deep learning.

Caffe Caffe is a deep learning framework made with expression, speed, and modularity in mind. It is developed by Berkeley AI Research (BAIR)/The Berke

Berkeley Vision and Learning Center 33k Dec 28, 2022
Delta Conformity Sociopatterns Analysis - Delta Conformity Sociopatterns Analysis

Delta_Conformity_Sociopatterns_Analysis βˆ†-Conformity is a local homophily measur

2 Jan 09, 2022
CALVIN - A benchmark for Language-Conditioned Policy Learning for Long-Horizon Robot Manipulation Tasks

CALVIN CALVIN - A benchmark for Language-Conditioned Policy Learning for Long-Horizon Robot Manipulation Tasks Oier Mees, Lukas Hermann, Erick Rosete,

Oier Mees 107 Dec 26, 2022
Official PyTorch implementation of the paper "Graph-based Generative Face Anonymisation with Pose Preservation" in ICIAP 2021

Contents AnonyGAN Installation Dataset Preparation Generating Images Using Pretrained Model Train and Test New Models Evaluation Acknowledgments Citat

Nicola Dall'Asen 10 May 24, 2022