Symulator samochodu F1/10 w Gazebo, ROS – jak uruchomić?

W tym poście pokażę Ci jak możesz uruchomić własny symulator samochodu w skali 1:10. Wykorzystamy system ROS oraz symulator Gazebo by rozpocząć autonomiczną jazdę!

Nie używaj tego tutoriala – powstaje nowszy oparty na inicjatywie f1tenth.org

Tutaj jest artykuł z dobrym symulatorem!

https://deepdrive.pl/jak-uruchomic-symulator-f1-10-w-gazebo-ros/

Symulator samochodu Erle Rover

Erle robotics udostępnia tutorial jak uruchomić symulator pojazdu w Gazebo. Ich tutorial dostępny jest tutaj.

Przygotowanie środowiska

Najpierw potrzebujemy przygotować środowisko według tej instrukcji. Poniżej zamieszczam wszystko, okraszone aktualizacjami i informacjami co nie zadziałało.

Wymagania:

  • Ubuntu (zalecane min. 16.04)
  • ROS
sudo apt-get update
sudo apt-get install gawk make git curl cmake -y

Dla Ubuntu 16.04 zmieniamy python-wxgtk2.8 na python-wxgtk3.0. Jeśli mamy skompilowane opencv usuwamy libopencv-dev.

sudo apt-get install g++ python-pip python-matplotlib python-serial python-wxgtk2.8 python-scipy python-opencv python-numpy python-pyparsing ccache realpath libopencv-dev -y

Następnie instalujemy:

sudo pip install future
sudo apt-get install libxml2-dev libxslt1-dev -y
sudo pip2 install pymavlink catkin_pkg --upgrade
sudo pip install MAVProxy==1.5.2

A teraz instalujemy bibliotekę do znaczników Aruco.

Pobierzemy wersję 3.0.10 z uwagi na to że 3.0.11 się nie kompiluje (!). Pobieramy stąd: https://sourceforge.net/projects/aruco/files/3.0.0/aruco-3.0.10.zip/download.

cd ~/Downloads
unzip aruco-*.zip
cd aruco-*/
mkdir build && cd build
cmake ..
make -j 8
sudo make install

Tutorial Erle Robotics pokazuje jeszcze jak zainstalować ROSa, ale my już to mamy, i to w nowszej wersji (ROS Kinetic dla 16.04).

A teraz pobierzemy projekty do naszego workspace’a:

git clone https://github.com/erlerobot/ardupilot_sitl_gazebo_plugin
git clone https://github.com/tu-darmstadt-ros-pkg/hector_gazebo/
git clone https://github.com/erlerobot/rotors_simulator -b sonar_plugin
git clone https://github.com/PX4/mav_comm.git
git clone https://github.com/ethz-asl/glog_catkin.git
git clone https://github.com/catkin/catkin_simple.git
git clone https://github.com/erlerobot/mavros.git
git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git -b kinetic-devel
#Add Python and C++ examples
git clone https://github.com/erlerobot/gazebo_cpp_examples
git clone https://github.com/erlerobot/gazebo_python_examples

To nie jest krok opcjonalny:

mkdir -p ~/simulation; cd ~/simulation
git clone https://github.com/erlerobot/ardupilot -b gazebo

Na koniec pobierzemy modele samochodu do symulatora Gazebo:

mkdir -p ~/.gazebo/models
git clone https://github.com/erlerobot/erle_gazebo_models
mv erle_gazebo_models/* ~/.gazebo/models

Przyda się jeszcze jedna rzecz, której nigdzie nie znalazłem czyli DRCsim (pamiętam go z przed lat…)

To nie działa na 16.04!!!

## Nie używaj tego!!!
##
##sudo sh -c 'echo "deb http://packages.osrfoundation.org/drc/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/drc-latest.list'
##wget http://packages.osrfoundation.org/drc.key -O - | sudo apt-key add -
##sudo apt-get update
##sudo apt-get install drcsim

Uruchamiamy symutlator Erle Rovera w Gazebo!

Wreszcie! Po przebudowaniu pakietów wykorzystując polecenie catkin_make możemy przystąpić do uruchamiania.

Ale chwileczkę, przecież to się nie mogło tak po prostu skompilować, tyle paczek z opensource, nie? No nie…

libmavconn
W CmakeLists.txt najlepiej dodać pthread w lini 47:

target_link_libraries(mavconn pthread

mark_plugingazebo_rosgazebo_plugins
Problem z protoc:

error: #error This file was generated by an older version of protoc which is

Problem rozwiązany poprzez wyłączenie z budowania.

ros_erle_pattern_follower

Dodanie do CmakeLists.txt:

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

Co w sumie też nie pomogło, więc wyrzucamy także ten pakiet…

I już prawie…

Musimy jeszcze zmodyfikować jeden plik launch. Wedle instrukcji powinniśmy uruchomić teraz:

roslaunch ardupilot_sitl_gazebo_plugin rover_spawn.launch

Ale to zwraca nam błąd związany z DRCsim, który w zasadzie już nie istnieje. Jest na to prosty sposób! W pliku rover_spawn.launch zamieniamy:

 <env name="GAZEBO_MODEL_PATH" value="$(find drcsim_model_resources)/gazebo_models/environments:$(find ardupilot_sitl_gazebo_plugin)/meshes/meshes_sensors:$(find ardupilot_sitl_gazebo_plugin)/meshes/meshes_outdoor:$(find ardupilot_sitl_gazebo_plugin)/meshes/meshes_warehouse"/>

na:

<env name="GAZEBO_MODEL_PATH" value="$(find ardupilot_sitl_gazebo_plugin)/meshes/meshes_sensors:$(find ardupilot_sitl_gazebo_plugin)/meshes/meshes_outdoor:$(find ardupilot_sitl_gazebo_plugin)/meshes/meshes_warehouse"/>

Usuwając zależność od DRCsim.

Teraz już możemy uruchomić wedle instrukcji i uzyskać poniższe screenshoty:

Erle Rover Gazebo
Erle Rover Gazebo

Możemy zrobić podobnie dla:

roslaunch ardupilot_sitl_gazebo_plugin rover_maze.launch
Erle Rover Maze
Erle Rover Maze

Linki

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *