Docker 명령어 정리
Docker 컨테이너로 ROS 와 PX4, Gazebo 환경 세팅을 위해 필요한 명령어들 정리
docker pull
로 받은 이미지 목록 보기
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
px4io/px4-dev-ros-noetic latest ad0ab2de7611 8 weeks ago 4.79GB
컨테이너 목록, 이전에 만들어진 목록까지 모두 보기
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
실행 중인 컨테이너에 sudo
권한으로 접근하려면 ID=0 으로 접근한다. (docker run
할 때 -u 0
을 붙여줘도 된다.)
docker exec -u 0 -it px4-ros bash
passwd root
로 비밀번호 변경해주면 이후에는 필요할 때 입력해도 된다.
Docker Container 에서 PX4 사용하기
공식 문서 에 잘 나와있으나 한번 싹 정리.
docker run -it --privileged \
--env=LOCAL_USER_ID="$(id -u)" \
-v ~/src/PX4-Autopilot:/src/PX4-Autopilot/:rw \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-e DISPLAY=:0 \
--network host \
--name=px4-ros px4io/px4-dev-ros-noetic:latest bash
Error
기존 PX4-Autopilot 소스코드를 마운트하여 사용하기 때문에, 이미 빌드된 파일을 사용할 수 없는 문제가 있다.
rm -rf ./build
로 빌드 제거 후make px4_sitl gazebo-classic
으로 다시 빌드해주어야 한다.
그래서 마운트 없이 아래 명령어로 실행.
docker run -it --privileged \
--env=LOCAL_USER_ID="$(id -u)" \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-e DISPLAY=:0 \
--network host \
--name=px4-ros px4io/px4-dev-ros-noetic:latest bash
PX4-Autopilot 을 별도로 설치하면 빌드도 다시 해주어야 한다.
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-nuttx
docker restart <container-id>
git config --global --add safe.directory /home/user/PX4-Autopilot
입력해준 후 make px4_sitl gazebo-classic
빌드 과정에서 아래 에러 발생
[30/970] Generating git version header
FAILED: src/lib/version/build_git_version.h
cd /home/user/PX4-Autopilot && /usr/bin/python3 /home/user/PX4-Autopilot/src/lib/version/px_update_git_header.py /home/user/PX4-Autopilot/build/px4_sitl_default/src/lib/version/build_git_version.h --validate
Traceback (most recent call last):
File "/home/user/PX4-Autopilot/src/lib/version/px_update_git_header.py", line 124, in <module>
mavlink_git_version = subprocess.check_output('git rev-parse --verify HEAD'.split(),
File "/usr/lib/python3.8/subprocess.py", line 415, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/usr/lib/python3.8/subprocess.py", line 516, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'rev-parse', '--verify', 'HEAD']' returned non-zero exit status 128.
원인은 /home/user
위치에 소스코드를 설치해서 였음. ~/
로 이동하여 다시 설치한 후에 빌드하니 성공.
GUI 테스트 및 rviz 설치
xeyes
로 GUI 테스트 후 apt-get install ros-noetic-rviz
로 설치.