Skip to content

run.sh 명령어 및 입력 인수

kestr31 edited this page Aug 2, 2024 · 1 revision

1. 기본 사용법

scripts/run.sh <type> <argument(s)>
  • scripts/run.sh는 PX4-SITL 시뮬레이션 컨테이너들의 배포(=생성), 실행, 제거를 수행하는 스크립트이다.
  • 본 스크립트는 선택적으로 컨테이너 집합체와 단독 컨테이너에 대한 제어가 가능하다.
  • 스크립트는 bash 쉘과 docker composeprofile기능을 이용해 구현되었다.

2. 명령어: type

순번 Type 설명 Compose 서비스(들) 비고
1 gazebo-classic-sitl PX4 - Gazebo-Classic SITL 시뮬레이션 컨테이너 배포 px4-env
gz-sim
ros2-env
qgc-app
SITL
2 gazebo-classic-airsim-sitl PX4 - Gazebo-Classic - AirSim SITL 시뮬레이션 컨테이너 배포 px4-env
gz-sim-airsim
airsim-binary
ros2-env-airsim
qgc-app
SITL
3 px4 PX4-Autopilot 컨테이너 배포 px4-env 단일 컨테이너 배포
4 gazebo-classic Gazebo-Classic 컨테이너 배포 gz-sim 단일 컨테이너 배포
5 airsim Airsim 컨테이너 배포 airsim-binary 단일 컨테이너 배포
6 ros2 ROS2 컨테이너 배포 ros2-env 단일 컨테이너 배포

3. 입력 인수: gazebo-classic-sitl

scripts/run.sh gazebo-classic-sitl <argument(s)>
  • 해당 입력 인수는 PX4 - Gazebo-Classic SITL 시뮬레이션에 대한 것이다.
  • 사용자는 특정 컨테이들만을 디버그 모드로 실행하도록 설정할 수 있다.
  • 예시:
    • QGroundControl을 디버그 모드로 실행하는 경우: scripts/run.sh gazebo-classic-sitl debug qgc
    • PX4-Autopilot과 ROS2를 디버그 모드로 실행하는 경우: scripts/run.sh gazebo-classic-sitl debug px4 ros2
순번 입력 인수 설명 비고.
1 run PX4 - Gazebo-Classic SITL 컨테이너 배포 및 실행 -
2 debug PX4 - Gazebo-Classic SITL 컨테이너(들)을(를) 디버그 모드로 실행 추가 입력 인수 선택지(s):
px4
gazebo-classic
ros2
qgc
3 stop 배포된 PX4 - Gazebo-Classic SITL 컨테이너 제거 -

4. 입력 인수: gazebo-classic-airsim-sitl

scripts/run.sh gazebo-classic-airsim-sitl <argument(s)>
  • 해당 입력 인수는 PX4 - Gazebo-Classic - AirSim SITL 시뮬레이션에 대한 것이다.
  • 사용자는 특정 컨테이들만을 디버그 모드로 실행하도록 설정할 수 있다.
  • 예시:
    • QGroundControl을 디버그 모드로 실행하는 경우: scripts/run.sh gazebo-classic-airsim-sitl debug qgc
    • PX4-Autopilot과 ROS2를 디버그 모드로 실행하는 경우: scripts/run.sh gazebo-classic-airsim-sitl debug px4 ros2
순번 입력 인수 설명 비고.
1 run PX4 - Gazebo-Classic - AirSim SITL 컨테이너 배포 및 실행 -
2 debug PX4 - Gazebo-Classic - AirSim SITL 컨테이너(들)을(를) 디버그 모드로 실행 추가 입력 인수 선택지(s):
px4
gazebo-classic
airsim
ros2
qgc
3 stop 배포된 PX4 - Gazebo-Classic - AirSim SITL 컨테이너 제거 -

5. 입력 인수: px4

scripts/run.sh px4 <argument(s)>
  • 해당 입력 인수는 PX4-Autopilot에 대한 것이다.
  • 사용자는 PX4-Autopilot의 소스 코드를 클론하고 이를 빌드하는 등 PX4-Autopilot 관련 요소에 대한 개발에 이를 활용할 수 있다.
  • 또한 사용자는 PX4 - Gazebo-Classic SITL 시뮬레이션을 하나의 컨테이너 내에서 실행할 수도 있다.
    • 하나의 컨테이너에서 실행되는 PX4 - Gazebo-Classic SITL 시뮬레이션은 "결합된" 상태로 실행된다.
    • 즉, PX4-Autopilot과 Gazebo-Classic 모두가 gazebo-classic-sitl 명령어의 경우와 달리 하나의 컨테이너에서 실행된다는 것이다.
순번 입력 인수 설명 비고
1 debug PX4-Autopilot 컨테이너를 디버그 모드로 실행 sleep infinity
2 stop 배포된 PX4-Autopilot 컨테이너 제거 -
3 clone PX4-Autopilot 소스 코드를 저장소로부터 클론 기본 설정으로 v1.14.3을 클론
4 build PX4-Autopilot과 Gazebo-Classic SITL 플러그인 빌드 make px4_sitl gazebo-classic (빌드만 수행)
5 clean PX4-Autopilot 빌드 결과물 삭제 make distclean
6 sitl-gazebo-classic-standalone PX4 - Gazebo-Classic - SITL 시뮬레이션 실행 make px4_sitl gazebo-classic

6. 입력 인수: gazebo-classic

scripts/run.sh gazebo-classic <argument(s)>
  • 해당 입력 인수는 Gazebo-Classic에 대한 것이다.
  • 사용자는 Gazebo-Classic world들과 .sdf 모델의 개발에 컨테이너를 활용할 수 있다.
  • 사용자는 PX4-Autopilot의 Gazebo-Classic SITL 시뮬레이션 부분만을 따로 실행할 수도 있다.
순번 입력 인수 설명 비고
1 debug Gazebo-Classic 컨테이너를 디버그 모드로 실행 sleep infinity
2 stop 배포된 Gazebo-Classic 컨테이너 삭제 -
3 sitl-px4 PX4-Autopilot의 Gazebo-Classic SITL 시뮬레이션 부분만을 실행 sitl_run.sh (수정 파일)

7. 입력 인수: airsim

scripts/run.sh airsim <argument(s)>
  • 해당 입력 인수는 AirSim에 대한 것이다.
  • 사용자는 AirSim Unreal 바이너리의 실행을 확인하거나, AirSim API를 사용하는 코드를 개발하는데 컨테이너를 활용할 수 있다.
  • airsim 컨테이너는 AirSim 컨테이너 작업 공간에 배치된 사용자 정의 스크립트의 실행을 지원한다.
    • 예시로, 사용자가 AirSim 컨테이너 작업 공간의 scripts 경로 내에 test.sh 스크립트를 배치했을 경우...
      • AirSim 컨테이너 작업 공간 기본 값: ~/Documents/A4VAI-SITL/AirSim
      • 실행 명령어: scripts/run.sh airsim test.sh
순번 입력 인수 설명 비고
1 debug AirSim 컨테이너를 디버그 모드로 실행 sleep infinity
2 stop 배포된 AirSim container 삭제 -
3 auto AirSim 컨테이너 작업 공간에 위치하는 Unreal 바이너리 자동 실행 Unreal 바이너리 폴더의 이름은 반드시 binary여야 함
4 *.sh AirSim 컨테이너 작업 공간의 scripts 경로 내에 위치한 사용자 정의 스크립트 실행 Bash 스크립트여야 하며, 실행 권한이 있어야 한다(chmod +x).

8. 입력 인수: ros2

scripts/run.sh ros2 <argument(s)>
  • 해당 입력 인수는 ROS2 Galactic에 대한 것이다.
  • 사용자는 ROS2 패키지를 빌드하고 ROS2 Topic을 확인하는데 컨테이너를 활용할 수 있다.
  • 사용자는 모든 ROS2 Workspace 내에 위치한 패키지를 빌드하거나, 특정 ROS2 Workspace 내의 패키지를 빌드할 수 있다.
    • 예를 들어, 사용자가 ROS2 작업 공간 내 ros_ws_1ros_ws_3 ROS2 Workspace 내의 패키지들만을 빌드하는 경우...
      • ROS2 컨테이너 작업 공간 기본 값: ~/Documents/A4VAI-SITL/ROS2
      • 실행 명령어: scripts/run.sh ros2 build ros_ws_1 ros_ws_3
  • ros2 컨테이너는 ROS2 컨테이너 작업 공간에 배치된 사용자 정의 스크립트의 실행을 지원한다.
    • 예시로, 사용자가 ROS2 컨테이너 작업 공간의 scripts 경로 내에 test.sh 스크립트를 배치했을 경우...
      • 실행 명령어: scripts/run.sh ros2 test.sh
순번 입력 인수 설명 비고
1 debug ROS2 컨테이너를 디버그 모드로 실행 sleep infinity
2 stop 배포된 ROS2 컨테이너 삭제 -
3 build ROS2 workspace(들) 내의 ROS2 패키지 빌드 추가 입력 인수 선택지:
빌드 대상 ROS2 Workspace(들)
4 *.sh ROS2 컨테이너 작업 공간의 scripts 경로 내에 위치한 사용자 정의 스크립트 실행 Bash 스크립트여야 하며, 실행 권한이 있어야 한다(chmod +x).

9. 입력 인수: qgc

scripts/run.sh qgc <argument(s)>
  • 해당 입력 인수는 QGroundControl에 대한 것이다.
  • 사용자는 컨테이너에 내장된 QGroundControl을 실행할 수 있다.
순번 입력 인수 설명 비고
1 debug QGroundControl 컨테이너를 디버그 모드로 실행 sleep infinity
2 stop 배포된 QGroundControl container 제거 -
3 run QGroundControl 실행 Name of the Unreal binary directory must be binary