Работаем в Ubuntu 16.04
Установить в свою систему
sudo apt install python-wstool python-catkin-tools -y
$FASTSENSE_WORKSPACE_DIR - папка, в которую будут ставиться всякие модули, библиотеки и тд. Эта папка будет прокинута в докер
catkin_dir=$FASTSENSE_WORKSPACE_DIR/catkin_ws - каталог, в который будут ставиться пакеты для ROS
ros_packets_dir=$catkin_dir/src - смирись и прими, что у тебя должна быть папка src, иначе ничего не соберётся
# create Firmware dir
mkdir $FASTSENSE_WORKSPACE_DIR/Firmware
# create catkin workspace
mkdir -p $ros_packets_dir
cd $catkin_dir
git clone git@github.com:FastSense/px4_ros_gazebo.git $ros_packets_src_dir
## Initialise wstool
wstool init $ros_packets_dir # создаёт скрытые файлы для workspace
В папке $FASTSENSE_WORKSPACE_DIR/catkin_ws/src есть файл Dockerfile с инструкциями по сборке docker образа
- собирает образ со всеми нужными системными пакетами
- копирует скрипты из docker/ (локальная папка) в /src/scripts/ (внутри докера)
docker build . -t x_kinetic_img
docker/docker_x.sh
запускает контейнер, прокидывает папки
catkin_ws <-> /home/user/catkin_ws rw код FastSense, работа с git в нем ведется локально (не в докере)
Firmware <-> /home/user/firmware rw код PX4 Firmware, локально надо только создать папку, далее работа через контейнер
~/.gazebo <-> /home/user/.gazebo rw нужно для сохранения файлов миров чтобы долго не ждать
~/.ssh <-> /home/user/.ssh rw нужно для доступа к github по ключу
./docker/docker_x.sh arg1 arg2
arg1 - имя образа (x_kinetic_img) arg2 - код команды для запуска
arg2 = {make_firmware, bash}
Порядок вызовов:
- make_firmware
- bash
make_firmware - собрать px4 Firmware внутри контейнера bash - установить переменные среды для ROS и запустить bash терминал
Примеры запуска контейнера:
cd $FASTSENSE_WORKSPACE_DIR/catkin_ws/src
./docker/docker_x.sh x_kinetic_img make_firmware
./docker/docker_x.sh x_kinetic_img bash
внутри терминала bash, запущенного в контейнере:
cd /src/catkin_ws/
catkin build - собрать workspace
catkin clean - почистить workspace
roslaunch simple_goal simple_goal.launch - запустить тест