• Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    Jupyter Notebook
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Implementation of an autonomous mobile robot with semantic segmentation, object detection, motion planning and control systems

autonomous_mobile_robot

[Paper] [BibTex]

01_results

SemanticV4.mp4

This is the implementation of an navigation system for an autonomous mobile robot using only front-facing RGB Camera. The proposed approach uses semantic segmentation to detect drivable areas in an image and object detection to emphasize objects of interest such as people and cars using yolov5. These detections are then transformed into a Bird's-Eye view semantic map that also contains spatial information about the distance towards the edges of the drivable area and the objects around the robot. Then, a multi-objective cost function is computed from the semantic map and used to generate a safe path for the robot to follow.

The code was tested on both simulation and a real robot (clearpath robotics' jackal).

The simulation is implemented in gazebo and uses dolly and citysim.

Semantic segmentation is strongly based on PSPNet and FCHardNet.

Install

  1. Install ROS 2.

  2. Install Docker following the instructions on the link and nvidia-docker (for gpu support). Semantic segmentation will be run inside docker container, however it could be run on the host with the proper configuration of pytorch.

  3. Clone this repo and its submodules

    git clone --recursive -j8 https://github.com/jdgalviss/autonomous_mobile_robot.git
    cd autonomous_mobile_robot
  4. (Optional if you want tu use PSPNet, FCHardNet are already included) Download Semantic Segmentation pretrained models for PSPNet from the following link: Google Drive. This is the required folder structure for these models:

    autonomous_mobile_robot
    |   ...
    └───pretrained_models
        |   ...
        └───exp
            └───ade20k
            |   |   ...
            |
            └───cityscapes
            |   |   ...
            |
            └───voc2012
                |   ...
    
  5. Build Dockerfile.

    cd semantic_nav
    docker build . -t amr

Run

  1. Run docker container using provided script
    source run_docker.sh

Run Simulation

  1. Inside the docker container, run ros2/gazebo simulation using the provided scripts (The first time, it might take a few minutes for gazebo to load all the models)
    source run.sh

Test Semantic Segmentation and calculate perspective transformation matrix

  1. Run docker container and jupyterlab

    source run_docker.sh
    
    jupyter lab --ip=0.0.0.0 --port=8888 --allow-root --no-browser
  2. Follow the instructions in the Jupytenotebook located inside the container in: /usr/src/app/dev_ws/src/vision/vision/_calculate_perspective_transform.ipynb

Additional notebooks are provided in /usr/src/app/dev_ws/src/vision/vision/ to explain some of the concepts used in this work.

Note: Old Implementation using DWAin citysim: dwa

Citation

If you find this project useful for your research, please consider citing:

@inproceedings{galvis2023autonomous,
  title={An Autonomous Navigation Approach based on Bird’s-Eye View Semantic Maps},
  author={Galvis, Juan and Pediaditis, Dimitrios and Almazrouei, Khawla Saif and Aspragathos, Nikos},
  booktitle={2023 27th International Conference on Methods and Models in Automation and Robotics (MMAR)},
  pages={81--86},
  year={2023},
  organization={IEEE}
}

More Repositories

1

jetbot-ros2

ROS 2 implementation of a Teleoperated robot with live video feed using webrtc and SLAM using realsense's stereocameras. Running on a Jetson Nano
Python
150
star
2

realsense_ros2

Ros 2 wrapper for intel realsense cameras d435 and t265
C++
16
star
3

full-scene-reconstruction

Full Scene Reconstruction of a 3D scene (geometry, instance ids, semantic labels, and color) from an RGB Image
Shell
7
star
4

PathPlanning

Path planning algorithm for highway driving
C++
4
star
5

semantic-scene-completion

Semantic Scene Completion on the SemanticKITTI dataset
Python
4
star
6

TFMiniPlusROS

This is a package and test application of an I2C driver for the TF Mini Plus Range Sensor. It was tested on Ubuntu 16.04 Xenial for the Jetson TX2.
C++
4
star
7

mobile_robots_robust_control

This repository includes simulation, implementations and some tools to design robust trajectory tracking control algorithms for mobile robots
Jupyter Notebook
3
star
8

ObjectDetectionData

Pipeline to create TF records and labels from data tagged in Scalabel for an Object Detector
Jupyter Notebook
3
star
9

logger_cpp

C++
2
star
10

socket_can_ros

Simple implementation of socketCAN in ROS
C++
2
star
11

object-detection-ros-cpp

A ROS-implementation of an object detector in c++ using OpenCV's dnn module.
CMake
2
star
12

AMR_semantic_segmentation

Implementation of semantic segmentation for an AMR
Jupyter Notebook
2
star
13

concurrent-traffic-simulation

This is the project for the fourth course in the Udacity C++ Nanodegree Program: Concurrency.
C++
2
star
14

osm-route-planner

Open Street Maps Route Planner using A* Algorithm implemented in C++
C++
2
star
15

multi_agent_DRL

Deep Reinforcement learning applied to solving unity multi-agent environments: tennis and football
ASP
1
star
16

robot_continuous_control_RL

RL-based control for robotic agents in the unity environment
Jupyter Notebook
1
star
17

covid19_xray_pytoch

Jupyter Notebook
1
star
18

system-monitor

Simple system monitor, similar to htop
C++
1
star
19

cv2_color_segmentation

Simple implementation of a GUI for color segmentation and centroid calculation using opencv in python
Python
1
star
20

cpp_examples

Some cpp examples developed while making the udacity course "C++ for programmers"
C++
1
star
21

lane_lines-detection

classic vision implementation of a lane line detector
Jupyter Notebook
1
star