Ubuntu 상에서 Ardupilot의 최신 버전이 아닌, Copter 4.0.3 버전을 가져와서 개발환경을 구축해야해서 찾은 것을 정리한다.
0. 목차
1. Ardupilot 레포지토리 복사하기
2. 복사한 폴더에 들어가서 태그 설정해주기
3. 서브모듈들 업데이트하기
4. Ardupilot 빌드해서 확인하기
1. Ardupilot 레포지토리 복사하기 [1,2]
지금은 Copter 4.3.6 이 Master이다.
git clone https://github.com/ArduPilot/ardupilot.git
2. 복사한 폴더 들어가서 태그 설정해주기
git checkout Copter-4.0.3
아래 메시지를 출력하며 새 branch 가 설정된 것을 볼 수 있다.
Switched to a new branch 'Copter-4.0.3'
저장소의 상태를 확인해도 같은 것을 볼 수 있다.
git status
On branch Copter-4.0.3
nothing to commit, working tree clean
내가 받고 싶은 tag는 아래 그림처럼 찾을 수 있다.
3. 서브모듈들 업데이트 하기 [3,4]
파일 ~/.gitconfig 에 들어가서 다음 줄을 추가하고 저장한다.
[url "https://"]
insteadOf = git://
그리고 다음 명령어를 입력하여 서브모듈을 업데이트 받는다.
git submodule update --init --recursive
TroubleShooting [fatal: unable to connect to github.com : errno=Connection timed out]
~/.gitconfig를 수정하지 않고 하면 다음 문제가 발생한다.
서브모듈의 업데이트 명령을 다음과 같이 입력하면
git submodule update --init --recursive
다음과 같은 에러 출력이 나온다.
Cloning into '/home/bw/Documents/ardupilot/modules/ChibiOS'...
fatal: unable to connect to github.com:
github.com[0: 20.200.245.247]: errno=Connection timed out
fatal: clone of 'git://github.com/ArduPilot/ChibiOS.git' into submodule path '/home/bw/Documents/ardupilot/modules/ChibiOS' failed
Failed to clone 'modules/ChibiOS'. Retry scheduled
Cloning into '/home/bw/Documents/ardupilot/modules/gbenchmark'...
fatal: unable to connect to github.com:
github.com[0: 20.200.245.247]: errno=Connection timed out
URL 주소가 https가 아니라 git으로 시작한다는 것이다. 그렇다고 해서 위 파일의 git:// 을 https:// 해봤자 반영이 안된다.
서브모듈에 대한 정보는 루트의 .gitmodules 파일에 다음과 같이 나온다.
[submodule "modules/uavcan"]
path = modules/uavcan
url = git://github.com/ArduPilot/uavcan.git
[submodule "modules/waf"]
path = modules/waf
url = git://github.com/ArduPilot/waf.git
[submodule "modules/gbenchmark"]
path = modules/gbenchmark
url = git://github.com/google/benchmark.git
[submodule "modules/mavlink"]
path = modules/mavlink
url = git://github.com/ArduPilot/mavlink
[submodule "gtest"]
path = modules/gtest
url = git://github.com/ArduPilot/googletest
[submodule "modules/ChibiOS"]
path = modules/ChibiOS
url = git://github.com/ArduPilot/ChibiOS.git
[submodule "modules/libcanard"]
path = modules/libcanard
url = git://github.com/ArduPilot/libcanard.git
해결방법은 글 [3]에 여러 방법을 제시하고 있으며, 이 중 하나만 소개한다.
git의 전역 구성 파일을 다음 명령어를 입력해서 확인하면 다음과 같다.
git config --list
출력은 다음과 같다.
remote.origin.url=https://github.com/ArduPilot/ardupilot.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
submodule.modules/waf.active=true
submodule.modules/waf.url=git://github.com/ArduPilot/waf.git
submodule.modules/ChibiOS.active=true
submodule.modules/ChibiOS.url=git://github.com/ArduPilot/ChibiOS.git
submodule.modules/gbenchmark.active=true
submodule.modules/gbenchmark.url=git://github.com/google/benchmark.git
submodule.gtest.active=true
submodule.gtest.url=git://github.com/ArduPilot/googletest
submodule.modules/libcanard.active=true
submodule.modules/libcanard.url=git://github.com/ArduPilot/libcanard.git
submodule.modules/mavlink.active=true
submodule.modules/mavlink.url=git://github.com/ArduPilot/mavlink
submodule.modules/uavcan.active=true
submodule.modules/uavcan.url=git://github.com/ArduPilot/uavcan.git
여기서 git:// 이라고 인식하는 부분을 https://으로 대체하도록 바꿔주는 것이다.
파일 ~/.gitconfig 에 들어가서 다음 줄을 추가하고 저장한다.
[url "https://"]
insteadOf = git://
4. Ardupilot 빌드해서 확인하기 [5]
했던대로 해보자.
./waf configure --board CubeBlack
./waf copter
TroubleShooting : Python Library 문제
다음 명령어를 입력해서 사전 설치 패키지들을 설치한다.
./Tools/environment_install/install-prereqs-ubuntu.sh -y
Reference
[1] "git clone 특정 릴리즈 가져오기" https://zetawiki.com/wiki/Git_clone_%ED%8A%B9%EC%A0%95_%EB%A6%B4%EB%A6%AC%EC%A6%88_%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0
[2] "[git] clone해서 특정 tag까지 branch 만들기" https://velog.io/@cheesechoux/git-clone%ED%95%B4%EC%84%9C-%ED%8A%B9%EC%A0%95-tag%EA%B9%8C%EC%A7%80-branch-%EB%A7%8C%EB%93%A4%EA%B8%B0
[3] "can't get data submodule when master is cloned from https #1534", Github issue, https://github.com/colobot/colobot/issues/1534
[4] "git:// protocol blocked by company, how can I get around that?", Stackoverflow https://stackoverflow.com/questions/4891527/git-protocol-blocked-by-company-how-can-i-get-around-that
[5] "Ardupilot 빌드 환경 세팅부터 SITL까지 on Windows 10 WSL2" https://stella47.tistory.com/404
끝.
'SW > Aircraft' 카테고리의 다른 글
Gazebo를 이용한 Ardupilot SITL 해보기 on Windows 10 WSL (0) | 2023.04.05 |
---|---|
ArduPilot 코드 분석 하기 [1/N] - 기본 구조와 라이브러리 종류 (6) | 2020.10.11 |
Ardupilot 시뮬레이션 해보기 (0) | 2020.10.10 |
Ardupilot 빌드 과정 정리 (0) | 2020.10.10 |