Autonomous Driving Simulator for the Portuguese Robotics Open
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.
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
Clone this repository into the src folder inside the catkin workspace and compile it.
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
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 |
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}
}