반응형

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

 

끝.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts