Docker ROS автоматический запуск файла запуска - PullRequest
0 голосов
/ 03 марта 2019

Я разработал несколько ROS-пакетов и хочу поместить их в Docker-контейнер, потому что установка всех ROS-пакетов все время утомительна.Поэтому я создал dockerfile, который использует базовый образ ROS, установил все необходимые зависимости, скопировал мое рабочее пространство, построил рабочее пространство в контейнере док-станции и впоследствии получил все.Вы можете найти файл Docker здесь:

FROM ros:kinetic-ros-base

RUN apt-get update && apt-get install locales
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8

RUN apt-get update && apt-get install -y \
    && rm -rf /var/likb/apt/lists/*

COPY . /catkin_ws/src/
WORKDIR /catkin_ws
RUN /bin/bash -c '. /opt/ros/kinetic/setup.bash; catkin_make'
RUN /bin/bash -c '. /opt/ros/kinetic/setup.bash; source devel/setup.bash'

CMD ["roslaunch", "master_launch sim_perception.launch"]

Проблема в том, что: Когда я запускаю контейнер Docker с помощью команды «run», Docker, похоже, не знает, что я получил свое новое рабочее пространство ROS и, следовательно,он не может автоматически запустить мой скрипт запуска.Если я запускаю docker-контейнер как bash-скрипт с помощью команды «run -it bash», я снова могу получить исходную рабочую область, а затем roslaunch мой .launch файл.

Так может ли кто-нибудь сказать мне, как правильно написать мой dockerfile, чтобы я автоматически запускал файл .launch при запуске контейнера?Спасибо!

1 Ответ

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

С Докерские документы

Каждая RUN инструкция выполняется независимо и не влияет на следующую инструкцию, поэтому при запуске последней строки нет PATH сохраняются из ROS.

Вам нужен Source .bashrc или любая необходимая среда, сначала используйте source.

Вы можете обернуть все, что хотите (команда source и команда roslaunch) внутриsh file, затем просто запустите этот файл в конце

...