Un pequeño tutorial de cómo usar la herramienta airsim en Windows con el wrapper de ROS desarrollado por SWRi para la Shell Eco-Marathon 2021, corriendo ROS en WSL2. El tutorial está en desarrollo. A ROS wrapper over the AirSim C++ client library.
Descargar y montar AirSim para windows
Instrucciones para instalar WSL2 y ROS Melodic
Una vez configurado ejecutar los siguientes comandos en el terminal de WSL:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 >> ~/.bashrc
export WSL_HOST_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}') >> ~/.bashrc- Instalar algunos paquetes preliminares:
sudo apt update
sudo apt install build-essential git git-lfs gcc-8 g++-8 python-catkin-tools- Download and build Unreal Engine for Linux (on WSL):
cd $HOME/
git clone -b 4.24 https://github.com/EpicGames/UnrealEngine.git- Pasar nombre de usuario y contraseña cuando lo pida. Una vez descargado todo navegamos hacia la carpeta y ejecutamos el script de setup. IMPORTANTE: NO USAR SUDO
cd $HOME/UnrealEngine/
./Setup.sh- Una vez terminado se ejecuta Generate files:
./GenerateProjectFiles.sh- Y ahora compilar:
makeCualquier duda revisar el instructivo oficial de Unreal
2.1. (Opcional pero facilita la vida) Instalar ue4cli:
- en un terminal de WSL correr:
sudo pip3 install ue4cli(Instalar pip3 si hace falta)
- Añadir al PATH la ubicación de Unreal:
export PATH=$PATH:$HOME/UnealEngine/Engine/Binaries/Linux/ >> ~/.bashrc- Clone SwRI's AirSim fork:
mkdir -p $HOME/src/
cd $HOME/src
git clone https://github.com/swri-robotics/AirSim.git-
Clone this repository inside AirSim's Unreal/Environments directory:
mkdir -p $HOME/src/AirSim/Unreal/Environments/ cd $HOME/src/AirSim/Unreal/Environments/ git clone https://github.com/swri-robotics/Neighborhood.git
-
Use git-lfs to grab the full contents of the directory:
cd $HOME/src/AirSim/Unreal/Environments/Neighborhood
git lfs pull-
Build AirSim:
cd $HOME/src/AirSim ./setup.sh ./build-neighborhood.sh
-
Build the Neighborhood environment:
cd $HOME/src/AirSim/Unreal/Environments/Neighborhood ue4 build
Ir al archivo (En WSL) $HOME\src\AirSim\ros\src\airsim_car_ros_pkgs\src\airsim_node.cpp y cambiar la línea 14 (creo) por su propia dirección IP
//std::string host_ip = "localhost";
//Código para forzar que el wrapper de ROS mapee a windows Ejemplo esta es mi IP: 172.18.208.1
std::string host_ip = "172.18.208.1";-
Navegar hasta la carpeta donde está ros, ejecutar los comandos preliminares (cuando diga si quiere borrar las carpetas después de catkin clean diga yes)
cd $HOME/src/AirSim/ros catkin clean . /opt/ros/melodic/setup.bash; rosdep install src -y --from-paths -i; catkin init; catkin config -e /opt/ros/melodic; catkin config --install; catkin config --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo;
-
Build it; note that it requires GCC 8:
CC=gcc-8 CXX=g++-8 catkin build
- Copiar el archivo settings.json de este repositorio a la carpeta en donde está el binario (En este caso: D:\AirSim\Unreal\Environments\Neighborhood\settings.json)
- Editar el archivo run.bat para que busque los settings en la carpeta donde está el binario:
start AirSimNH -windowed --settings 'D:\AirSim\Unreal\Environments\Neighborhood\settings.json'- Correr el entorno en AirSim para Windows.
- Correr las siguientes líneas de código en un nuevo terminal de WSL
source devel/setup.bash;
roslaunch airsim_car_ros_pkgs airsim_node.launch output:=screen host:=$WSL_HOST_IP
Y en un nuevo terminal:
roslaunch airsim_car_ros_pkgs rviz.launch;Rezar para que funcione. Contacto en juctorresme@unal.edu.co