MAVSDK Server
저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo / Updated : 2025-03-20
MAVSDK는 내부적으로 gRPC를 사용하므로, 윈도우에서 리눅스에 있는 PX4-SITL에 MAVSDK로 실행을 해야하는 경우와 같이 리모트 MAVSDK를 사용할때는 MAVSDK-SERVER를 사용해야 합니다.
1️⃣ 의존 패키지 설치 (필요한 라이브러리 설치)
sudo apt update && sudo apt upgrade -y
sudo apt install -y cmake ninja-build g++ git \
protobuf-compiler libprotobuf-dev \
libgrpc++-dev libgrpc-dev \
libssl-dev curl unzip
✅ 필수 라이브러리 설치 완료!
2️⃣ MAVSDK 소스 코드 다운로드
git clone https://github.com/mavlink/MAVSDK.git --recursive
cd MAVSDK
✅ 소스 코드 다운로드 완료!
3️⃣ CMake 설정 (MAVSDK Server 빌드 활성화)
기본적으로 mavsdk_server
는 자동으로 빌드되지 않으므로, CMake 옵션에서 -DBUILD_MAVSDK_SERVER=ON
을 추가해야 합니다.
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_MAVSDK_SERVER=ON -Bbuild/default -S.
✅ 이제 mavsdk_server
가 포함된 빌드 구성이 생성되었습니다.
4️⃣ MAVSDK Server 빌드
MAVSDK Server를 8개의 CPU 코어를 사용하여 병렬 빌드합니다.
cmake --build build/default -j8
✅ 빌드가 정상적으로 완료되면 mavsdk_server
실행 파일이 생성됩니다! 🎉
5️⃣ MAVSDK Server 실행
빌드된 mavsdk_server
실행 파일은 build/default/src/mavsdk_server/
에 있습니다.
cd ~/mavsdk/build/default/src/mavsdk_server
./mavsdk_server -p 50051
✅ 이제 MAVSDK Server가 실행됩니다!
✅ 6️⃣ 빌드된 mavsdk_server
를 시스템에서 사용 가능하도록 이동
mavsdk_server
를 시스템에서 사용 가능하도록 이동빌드된 mavsdk_server
를 /usr/local/bin/
에 복사하여 어디서나 실행 가능하도록 설정합니다.
sudo cp ~/mavsdk/build/default/src/mavsdk_server/src/mavsdk_server /usr/local/bin/
이제 터미널에서 다음 명령어로 MAVSDK Server를 실행할 수 있습니다.
mavsdk_server -p 50051
✅ 이제 MAVSDK Server가 어디서나 실행됩니다!
✅ 7️⃣ MAVSDK Server 자동 실행 설정 (선택)
부팅할 때 MAVSDK Server가 자동으로 실행되도록 systemd
서비스를 설정할 수 있습니다.
🔹 1. systemd
서비스 파일 생성
systemd
서비스 파일 생성sudo nano /etc/systemd/system/mavsdk_server.service
📌 아래 내용을 복사하여 붙여넣고 저장하세요.
[Unit]
Description=MAVSDK Server
After=network.target
[Service]
ExecStart=/usr/local/bin/mavsdk_server -p 50051
Restart=always
User=$USER
[Install]
WantedBy=multi-user.target
🔹 2. 서비스 등록 및 실행
sudo systemctl daemon-reload
sudo systemctl enable mavsdk_server
sudo systemctl start mavsdk_server
✅ 이제 MAVSDK Server가 부팅할 때 자동 실행됩니다!
MAVSDK-Python 코드 설정
현재 코드에서 mavsdk_server_address
와 system_address
설정이 올바르지 않습니다.
MAVSDK Server는 **gRPC(50051)**로 통신하고, PX4는 **UDP(14540)**로 MAVSDK Server와 연결됩니다.
🔹 올바른 코드 설정 (PX4와 MAVSDK Server가 같은 컴퓨터에 있을 경우)
python복사편집drone = System(mavsdk_server_address="172.21.77.220", port=50051) # MAVSDK Server의 gRPC 포트로 연결
await drone.connect() # system_address 생략 (자동 감지)
✅ 이제 MAVSDK Server를 통해 PX4와 연결됩니다.
Last updated