Команда ROS не работает при вызове из Dockerfile и скрипта - PullRequest
0 голосов
/ 04 марта 2019

Я создаю Docker-контейнер для выполнения пакета ROS.

FROM ros:melodic
COPY . /rosdata
WORKDIR /rosdata
RUN rm /bin/sh && ln -s /bin/bash /bin/sh && chmod +x setupROS.sh && bash -c "./setupROS.sh"

Этот сценарий установки, вероятно, немного более раздутый, чем это требуется от попыток отладки, и в настоящее время выглядит так:

#!/bin/sh
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y wget apt-utils
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | apt-key add -
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y ros-melodic-pcl-conversions ros-melodic-pcl-ros
apt-get update
DEBIAN_FRONTEND=noninteractive rosdep install --as-root apt:false --from-paths src --ignore-src --rosdistro melodic -y
DEBIAN_FRONTEND=noninteractive catkin_make

Все выглядит нормально, пока последняя команда не завершится с

. / SetupROS.sh: строка 10: catkin_make: команда не найдена

ЕслиЯ закомментирую эту последнюю команду в сценарии оболочки, только автоматически выполняю предыдущие инструкции, а затем открываю интерактивный сеанс (docker run -it) и вручную запускаю этот catkin_make, он работает, как и ожидалось.Независимо от того, включаю ли я переменную DEBIAN_FRONTEND в эту строку, не имеет значения.

В чем может быть причина сбоя catkin_make при запуске в сценарии, вызываемом из файла Dockerfile, но не при запуске вручную?

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

В дополнение к @Vik Ответ:

Рядом с источником /opt/ros/melodic/setup.bash либо в .bashrc, либо внутри вашего sh файла,

вы должны находиться в рабочем пространстве catkin в порядкеза catkin_make работу.Я предлагаю вам использовать catkin build (другое рабочее пространство) вместо catkin_make (Старая версия Workspace), в котором вы можете указать папку рабочего пространства.

0 голосов
/ 06 марта 2019

По моему опыту, catkin_make добавляется к пути, когда мы запускаем источник строки /opt/ros/melodic/setup.bash.Обычно эта строка добавляется в .bashrc в конце установки.Возможно, среда, в которой вы запускаете ваш скрипт, не наследует тот же PATH (аналогично тому, когда вы запускаете вещи как sudo).Я бы предложил добавить строку source /opt/ros/melodic/setup.bash в ваш скрипт и посмотреть, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...