Я пытаюсь создать контейнер сингулярности для моделирования робота Emika Franka.Для этого мне нужно использовать catkin для сборки moveit examples
и panda_config
из репозиториев GitHub.Тем не менее, я продолжаю сталкиваться с некоторыми проблемами из-за моего понимания того, как Singularity монтирует контейнер относительно моих основных системных папок.Я использую рецепт ниже, чтобы построить контейнер с командой sudo singularity build --sandbox ros-kinetic-pandasim-xenial/ recipes/ros_kinetic_pandasim_xenial/ros_kinetic_pandasim_xenial.def
.
ros_kinetic_pandasim_xenial recipe
# Ros kinetic panda simulation ubuntu xenial singularity container recipe file
Bootstrap: docker
From: osrf/ros:kinetic-desktop-full-xenial
%help
singularity container with Ros kinetic and Gazebo7 for the dynamic simulation of the Emika Franka Panda robot.
%post
echo "Setting up ros kinetic emika Franka container."
## Set user permissions to root ##
chmod 755 /root
## Retrieve updates ##
apt-get update
## Install ros dependencies for building packages
apt-get install -y python-rosinstall python-rosinstall-generator python-wstool build-essential
## Install additional ros packages ##
apt-get install -y ros-kinetic-joint-state-controller ros-kinetic-controller-manager* ros-kinetic-joint-trajectory-controller
apt-get install -y ros-kinetic-effort-controllers ros-kinetic-gazebo-ros* ros-kinetic-gazebo-ros-control ros-kinetic-rviz*
apt-get install -y ros-kinetic-catkin python-catkin-tools
## Install other needed packages ##
apt-get install -y usbutils wget libboost-filesystem-dev libjsoncpp-dev
## Setup ros dependency tool ##
rosdep update
## Install MoveIt, MoveIt tutorials and the panda_movit_config files ##
apt-get install -y ros-kinetic-moveit*
. /opt/ros/kinetic/setup.sh
mkdir -p ~/pandasim_ws/src
cd ~/pandasim_ws/src
git clone -b kinetic-devel https://github.com/ros-planning/moveit_tutorials.git
git clone https://github.com/erdalpekel/panda_moveit_config.git
rosdep install -y --from-paths . --ignore-src --rosdistro kinetic
cd ~/pandasim_ws/
catkin config --extend /opt/ros/kinetic
catkin build
. ~/pandasim_ws/devel/setup.bash
%environment
## Change floating point format ##
LC_NUMERIC="en_US.UTF-8"
## Source ros setup file ##
. /opt/ros/kinetic/setup.sh
## Source catkin setup file ##
. ~/pandasim_ws/devel/setup.bash
Ожидаемое поведение
Я хочу, чтобы этот рецепт попал в папку ~ / pandasim_ws /, чтобы я мог выполнить сборку catkin.
Текущее поведение
В настоящее время мне выдается следующая ошибка:
#All required steps installed successfully
+ cd ~/pandasim_ws/
/bin/sh: 31: cd: can't cd to ~/pandasim_ws/
FATAL: post proc: exit status 2
FATAL: While performing build: while running engine: exit status 255
Основной вопрос
Может кто-нибудь дать объяснение или документацию о том, как сингулярность монтирует егоконтейнер относительно моих системных каталогов?Похоже, что он использует рабочее пространство пользователя и, следовательно, cd ~/
указывает на домашний каталог пользователя, который запустил контейнер внутри хост-системы.После /
выглядит корневой каталог.Есть ли способ кд относительно папки песочницы сингулярности?Например, переменная $SINGULARITY_PATH
или аргумент сборки.