Skip to content

Latest commit

 

History

History
200 lines (143 loc) · 11.6 KB

README.md

File metadata and controls

200 lines (143 loc) · 11.6 KB

ROS Noetic Support

ROS Melodic Support

ROS Kinetic Support

ROS Indigo Support

Overview

The Autonomous Driving Competition (ADC) of the Portuguese Robotics Open (PRO) represents a medium complexity technical challenge in which a mobile robot completely devoid of human input during its runtime travels in a track (with a size of ~17x7m), Fig. 1, detects and identifies signalling panels projected in two ordinary monitors, recognizes traffic signs defined in the competition ruling, detects and avoids obstacles and is able to park in two different parking areas.

To overcome the need physical space to develop and deploy the code on the real robot, a simulator was created. Currently this simulator supports two different robots. The first one, named Conde, uses a differential driving steering locomotion (two small wheels coupled in two motors that controls its linear and angular movement) and a castor wheel to balance the structure. The sensors applied to the robot are three cameras. Two pointed down to see/navigate along the track and detect/avoid obstacles and one pointed up to detect/identify the signaling panels and traffic signs.

The second one, called Major Alvega uses a ackermann steering locomotion and two cameras as sensors (as in the Conde robot one of the cameras is pointed up to see the track and the other is pointed up to see the signalling panels and traffic signs).

These two robots represent real world robots as shown in Fig. 2.

This simulator is able to replicate all of the autonomous driving competition challenges of the PRO.

Fig. 1 - On the left track for the 2017 autonomous driving competition, on the right real robot.


















Fig. 2 - On the left conde robot, on the right major alvega robot.

Instalation and Dependencies

  • ROS distro: ROS Kinetic / ROS Melodic

  • Ubuntu version: Ubuntu 16.04 LTS / Ubuntu 18.04 LTS / Ubuntu 20.04 LTS

  • Gazebo version: Gazebo 7.0 / Gazebo 9.0 / Gazebo 11.0

Perform the full instalation for the ROS Kinetic that comes with Gazebo 7.0, ROS Melodic that comes with Gazebo 9 or ROS Noetic that comes with Gazebo 11.0

Install ackermann dependencies on ROS Noetic:

sudo apt-get install ros-noetic-ackermann-* ros-noetic-effort-controllers ros-noetic-gazebo-ros-control ros-noetic-joint-state-controller

Install ackermann dependencies on ROS Melodic:

sudo apt-get install ros-melodic-ackermann-* ros-melodic-effort-controllers ros-melodic-gazebo-ros-control ros-melodic-joint-state-controller

Install ackermann dependencies on ROS Kinetic:

sudo apt-get install ros-kinetic-ackermann-* ros-kinetic-effort-controllers ros-kinetic-gazebo-ros-control ros-kinetic-joint-state-controller

Building

Clone this repository into the src folder inside the catkin workspace and compile it.

Running

There are several launch files in the autonomous_driving_world package. To launch Major Alvega / Conde in the competition track run on of the following commands:

roslaunch autonomous_driving_world spawn_major_in_competition_track_D1_D2_B1_P1.launch
roslaunch autonomous_driving_world spawn_conde_in_competition_track_D1_D2_B1_P1.launch

For the driving with obstacles challenge run:

roslaunch autonomous_driving_world spawn_major_in_competition_track_with_obstacles_D3_v1.launch
roslaunch autonomous_driving_world spawn_major_in_competition_track_with_obstacles_D3_v2.launch
roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_obstacles_D3_v1.launch
roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_obstacles_D3_v2.launch

For the driving with obstacles and work zone challenge run:

roslaunch autonomous_driving_world spawn_major_in_competition_track_with_obstacles_and_construction_cones_D4.launch
roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_obstacles_and_construction_cones_D4.launch

For the parallel parking challenge with obstacles run:

roslaunch autonomous_driving_world spawn_major_in_competition_track_with_parking_obstacles_P2.launch
roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_parking_obstacles_P2.launch

For the bay parking challenge with obstacle run one of the following commands:

roslaunch autonomous_driving_world spawn_major_in_competition_track_with_parking_obstacles_B2_v1.launch
roslaunch autonomous_driving_world spawn_major_in_competition_track_with_parking_obstacles_B2_v2.launch
roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_parking_obstacles_B2_v1.launch	
roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_parking_obstacles_B2_v2.launch

To spawn the traffic signs in the world run:

roslaunch autonomous_driving_world spawn_major_in_competition_track_with_traffic_signs_V1.launch
roslaunch roslaunch autonomous_driving_world spawn_conde_in_competition_track_with_traffic_signs_V1.launch

Controlling the signalling panels run, Fig. 2:

rosrun gazebo_signalling_panel_control gazebo_signalling_panel_control_node

Controlling the traffic signs run:

rosrun gazebo_traffic_sign gazebo_traffic_sign_node

Documentation

To help understanding the challenges of the ADC of the PRO videos for each challenge using Conde and Major Alvega robots were recorded:

Challenges Video Link
D1 Major Alvega / Conde
D2 Major Alvega / Conde
D3 Major Alvega / Conde
P1 Major Alvega / Conde
P2 Major Alvega / Conde
B1 Major Alvega / Conde
B2 Major Alvega / Conde

ROS architecture for Conde

rosgraph for the simulation world

Short description of ROS nodes - Conde

  • conde_tracking - it is responsible for the detection of the track
  • conde_signalling_panel - it is responsible to recognize the signalling panels
  • conde_traffic_sign - it is responsible to recognize the traffic signs
  • conde_decision - it is responsible for all the decisions followed by the robot (it is the intelligence of the robot)
  • conde_control - it is responsible to calculate the velocities accordingly to the reference to follow
  • conde_key_teleop - it controls the robot's movement manually by publishing a /cmd_vel message

ROS architecture for Major Alvega

rosgraph for the simulation world

Short description of ROS nodes - Major Alvega

  • major_tracking - it is responsible for the detection of the track
  • major_signalling_panel - it is responsible to recognize the signalling panels
  • major_traffic_sign - it is responsible to recognize the traffic signs
  • major_decision - it is responsible for all the decisions followed by the robot (it is the intelligence of the robot)
  • major_control - it is responsible to calculate the velocities accordingly to the reference to follow

Short description of ROS nodes - General Packages

  • autonomous_driving_world - simulation world representing the autonomous driving competition of the portuguese robotics open
  • gazebo_traffic_sign_control - it controls the traffic sign displayed in the conde_world
  • gazebo_signalling_panel_control - it controls the signalling panels displayed in conde_world through a terminal menu

How to cite

If you use this simulator please cite articles [2], [3] and [5]:

@article{Costa2017c,
author = {Costa, Valter and Rossetti, Rosaldo and Sousa, Armando},
doi = {10.4018/IJTHI.2017100102},
issn = {1548-3908},
journal = {International Journal of Technology and Human Interaction},
month = {oct},
number = {4},
pages = {19--32},
title = {{Simulator for Teaching Robotics, ROS and Autonomous Driving in a Competitive Mindset}},
url = {http://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/IJTHI.2017100102},
volume = {13},
year = {2017}
}

@inproceedings{Costa2016a,
author = {Costa, Valter and Rossetti, Rosaldo J.F. and Sousa, Armando},
booktitle = {2016 11th Iberian Conference on Information Systems and Technologies (CISTI)},
doi = {10.1109/CISTI.2016.7521461},
isbn = {978-9-8998-4346-2},
issn = {21660735},
month = {jun},
pages = {1--5},
publisher = {IEEE},
title = {{Autonomous driving simulator for educational purposes}},
url = {http://ieeexplore.ieee.org/document/7521461/},
year = {2016}
}

@incollection{Costa2020,
author = {Costa, Valter and Cebola, Peter and Tavares, Pedro and Morais, Vitor and Sousa, Armando},
booktitle = {Robot 2019: Fourth Iberian Robotics Conference},
doi = {10.1007/978-3-030-35990-4_37},
isbn = {978-3-030-35990-4},
pages = {455--466},
publisher = {Springer International Publishing},
title = {{Teaching Mobile Robotics Using the Autonomous Driving Simulator of the Portuguese Robotics Open}},
url = {http://link.springer.com/10.1007/978-3-030-35990-4{\_}37},
year = {2020}
}