우분투 서버 기반 파일럿파이
WARNING
Ubuntu Server on RPi 4B consumes a lot of current and generates a lot of heat. 이 하드웨어를 사용시에는 고열 방출과 고전력 소비 환경을 고려하여 설계되었습니다.
개발자 가이드
OS 이미지
armhf와 arm64 arch가 모두 지원됩니다.
armhf
- Ubuntu Server 18.04.5 for RPi2
- Ubuntu Server 18.04.5 for RPi3
- Ubuntu Server 18.04.5 for RPi4
- Ubuntu Server 20.04.1 for RPi 2/3/4
arm64
최신 운영체제
Please refer to official cdimage page for any new updates.
최초 부팅
When setting up RPi's WiFi for the first time we recommended using a wired Ethernet connection between your home router and RPi, and a monitor and keyboard.
부팅전 과정
SD 카드를 컴퓨터에 장착하고 네트워크 설정을 수정합니다. Please follow the official instruction here.
이제 SD 카드를 라즈베리파이에 삽입하고, 처음으로 부팅하십시오. 유선 이더넷을 통한 SSH 연결하거나 또는 키보드 및 모니터를 통하여 라즈베리파이 쉘 액세스 권한을 확인하십시오.
WiFi 지역
먼저 필요한 패키지를 설치하십시오.
sh
sudo apt-get install crdaEdit the file /etc/default/crda to change the correct WiFi region. Reference List
sh
sudo nano /etc/default/crda라즈베리파이는 재부팅후 WiFi 네트워크에 연결할 수 있습니다.
호스트명과 mDNS
먼저 호스트 이름을 설정합니다.
sh
sudo nano /etc/hostname호스트 이름을 적절하게 변경하십시오. 그런 다음 mDNS에 필요한 패키지를 설치합니다.
sh
sudo apt-get update
sudo apt-get install avahi-daemon재부팅합니다.
sh
sudo reboot위의 작업 후 WiFi 접근성을 회복하십시오.
sh
ssh ubuntu@pi_hostname.local무 비밀번호 인증 (선택 사항)
You may want to setup passwordless auth as well.
운영체제 설정
config.txt
The corresponding file in Ubuntu is /boot/firmware/usercfg.txt.
sh
sudo nano /boot/firmware/usercfg.txt파일을 다음의 내용으로 변경합니다.
sh
# enable sc16is752 overlay
dtoverlay=sc16is752-spi1
# enable I2C-1 and set the frequency to 400KHz
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
# enable spidev0.0
dtparam=spi=on
# enable RC input
enable_uart=1
# enable I2C-0
dtparam=i2c_vc=on
# switch Bluetooth to miniuart
dtoverlay=miniuart-btcmdline.txt
우분투 서버 20.04 에서:
sh
sudo nano /boot/firmware/cmdline.txtOn Ubuntu Server 18.04 or earlier, nobtcmd.txt and btcmd.txt should both be modified.
sh
sudo nano /boot/firmware/nobtcmd.txtFind console=/dev/ttyAMA0,115200 and remove that part to disable the login shell on serial interface.
Append isolcpus=2 after the last word. 그러면 전체 파일이 다음과 같이 표시됩니다.
sh
net.ifnames=0 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc isolcpus=2위의 줄은 Linux 커널이 CPU 코어 2에서 프로세스를 예약하지 않음을 나타냅니다. 나중에 해당 코어에서 PX4를 수동으로 실행합니다.
재부팅하고 라즈베리파이에 SSH로 로그인합니다.
UART 인터페이스를 확인합니다.
sh
ls /dev/tty*There should be /dev/ttyAMA0, /dev/ttySC0 and /dev/ttySC1.
I2C 인터페이스를 확인합니다.
sh
ls /dev/i2c*There should be /dev/i2c-0 and /dev/i2c-1
SPI 인터페이스를 확인합니다.
sh
ls /dev/spidev*There should be /dev/spidev0.0.
rc.local
In this section we will configure the auto-start script in rc.local. 이 파일은 Ubuntu OS에 설치시에는 존재하지 않으므로, 생성하여야합니다.
sh
sudo nano /etc/rc.local아래 내용을 파일에 추가하십시오.
sh
#!/bin/sh
echo "25" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio25/direction
if [ $(cat /sys/class/gpio/gpio25/value) -eq 1 ] ; then
echo "Launching PX4"
cd /home/ubuntu/px4 ; nohup taskset -c 2 ./bin/px4 -d -s pilotpi_mc.config 2 &> 1 > /home/ubuntu/px4/px4.log &
fi
echo "25" > /sys/class/gpio/unexport
exit 0저장후 종료합니다. 그런 다음 권한을 설정하십시오.
sh
sudo chmod +x /etc/rc.localINFO
Don't forget to turn off the switch when it is not needed!
CSI 카메라
WARNING
Enable CSI camera will stop anything works on I2C-0.
sh
sudo nano /boot/firmware/usercfg.txt파일 끝에 다음 내용을 추가합니다.
sh
start_x=1코드 빌드
To get the very latest version onto your computer, enter the following command into a terminal:
sh
git clone https://github.com/PX4/PX4-Autopilot.git --recursiveINFO
This is all you need to do just to build the latest code.
라즈베리파이 업로드 대상 설정
다음을 사용하여 라즈베리파이의 IP(또는 호스트 이름)를 설정합니다.
sh
export AUTOPILOT_HOST=192.168.X.X또는
sh
export AUTOPILOT_HOST=pi_hostname.local사용자 이름을 설정하여야 합니다.
sh
export AUTOPILOT_USER=ubuntuarmhf 타겟용 빌드
실행 파일을 빌드하십시오.
sh
cd Firmware
make scumaker_pilotpi_default다음 명령으로 업로드하십시오.
sh
make scumaker_pilotpi_default uploadarmhf용 대체 빌드 방법 (도커 사용)
If you are compiling for the first time with docker, please refer to the official docs.
firmware 폴더에서 다음 명령을 실행합니다.
sh
./Tools/docker_run.sh "export AUTOPILOT_HOST=192.168.X.X; export AUTOPILOT_USER=ubuntu; export NO_NINJA_BUILD=1; make scumaker_pilotpi_default upload"INFO
mDNS is not supported within docker. 업로드시에 올바른 IP 주소를 설정하여야합니다.
INFO
If your IDE doesn't support ninja build, NO_NINJA_BUILD=1 option will help. 업로드하지 않고도 컴파일할 수 있습니다. Just remove upload target.
다음 명령으로 코드를 컴파일합니다.
sh
./Tools/docker_run.sh "make scumaker_pilotpi_default"arm64 타겟용 빌드
INFO
This step requires aarch64-linux-gnu tool-chain to be installed.
실행 파일을 빌드하십시오.
sh
cd PX4-Autopilot
make scumaker_pilotpi_arm64다음 명령으로 업로드하십시오.
sh
make scumaker_pilotpi_arm64 uploadarm64용 대체 빌드 방법 (도커 사용)
If you are compiling for the first time with docker, please refer to the official docs.
Execute the command in PX4-Autopilot folder:
sh
./Tools/docker_run.sh "export AUTOPILOT_HOST=192.168.X.X; export AUTOPILOT_USER=ubuntu; export NO_NINJA_BUILD=1; make scumaker_pilotpi_arm64 upload"INFO
mDNS is not supported within docker. 업로드시에 올바른 IP 주소를 설정하여야합니다.
INFO
If your IDE doesn't support ninja build, NO_NINJA_BUILD=1 option will help. You can compile without uploading too - just remove the upload target.
다음 명령으로 코드를 컴파일합니다.
sh
./Tools/docker_run.sh "make scumaker_pilotpi_arm64"수동 PX4 실행
ssh에서 다음을 명령어를 실행하십시오.
sh
cd px4
sudo taskset -c 2 ./bin/px4 -s pilotpi_mc.config이제 PX4는 다중로터 설정으로 시작합니다.
If you encountered the similar problem executing bin/px4 on your Pi as following:
bin/px4: /lib/xxxx/xxxx: version `GLIBC_2.29' not found (required by bin/px4)docker로 컴파일하여야 합니다.
다음 단계로 진행하기 전에 먼저 기존 빌드를 삭제합니다.
sh
rm -rf build/scumaker_pilotpi_*그런 다음 위의 해당 부분에서 계속 진행합니다.
사후 설정
Please refer to the instructions here