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_plugin, gazebo_ros, gazebo_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:
Możemy zrobić podobnie dla:
roslaunch ardupilot_sitl_gazebo_plugin rover_maze.launch
Linki