이번에는 라즈베리파이와 픽스호크를 연동하는 법에 대해 알아보겠다.
라즈베리파이를 이용하면 픽스호크에게 명령을 내려서 조종하는것이 가능하다.
ex) 장애물 감지시 멈추게 한다던지, 특정 궤도를 움직이게 한다던지 등
그 전에 우선 라즈베리파이와 픽스호크를 연결해주는 과정이 필요하다.
https://www.youtube.com/watch?v=kB9YyG2V-nA&t=1513s
기본적으로는 위 해외 유튜브를 따라가면서 하면 할 수 있다.
https://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html
하드웨어 연결 및 세팅은 위 공식 문서를 참조해서 해결할 수 있다.
( 꼭 한번씩 읽어보고 하자 )
물론 그대로 따라가면 막히는 부분이 조금 있을 것이다 (필자가 많이 막힘)
그 부분을 정리해보고자 글을 쓴다.
먼저 픽스호크의 기본세팅, 라즈베리파이의 기본세팅은 되어있다고 가정하고 진행해보겠다.
라즈베리파이에 몇개의 모듈을 까는것이 필요하다.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip
sudo apt-get install python-dev
sudo pip install future
sudo pip install pyserial
sudo pip install dronekit
sudo pip install MAVProxy
위 라이브러리들은 쉽게 설치가 될 것이다.
sudo apt-get install screen python-wxgtk4.0 python-lxml
중요한건 위 코드가 그대로 치면 설치가 안된다.
이전 글에서 OpenCv를 설치했는데, 라즈베리 OS가 업데이트 되면서 sudo apt-get으로 설치할 수 없게 된것같다.
screen은 아마 설치가 잘 될것이다. lxml같은경우
pip install lxml
위 코드처럼 pip을 사용해서 설치하면 잘 될것이다.
wxgtk또한 같은 방식으로 pip을 사용하거나 현재 맞는 버전의 이름을 찾아서 설치하면 설치할 수 있다.
그 다음 라즈베리파이의 환경설정에 들어가서 serial 포트를 열어줘야한다.
공식문서에 나온것처럼
sudo raspi-config
해당 명령어로 설정을 열어주고
로들어가서 Serial을 눌러준 후에
Would you like a login shell to be accessible over serial?
란 질문이 나오면 NO를
Would you like the serial port hardware to be enabled
란질문이 나오면 YES를 눌러줘야한다.
ls /dev/ttyAMA0
그 후 위의 코드를 활용해서 출력이 잘 나오는지 확인한다. 이는 위의 해외 유튜브 영상을 보면 확인 할 수 있다.
sudo nano /boot/config.txt
위 명령어를 친 후에
맨 밑에 enable_uart=1로 포트가 열려있는지 확인을 하고 그 밑줄에
dtoverlay=disable-bt를 써준다.
그 후 ctrl + x 를 누르고 y를 눌러서 저장을 해준다.
이제 재부팅을 해준다.
라즈베리파이와 픽스호크는 위와같이 연결해준다.
대신 만약에 픽스호크에 전원을 따로 공급해주고 있다면 ( 배터리 등으로 ) 빨간색 5V는 연결하면 안된다.
해당 5V는 라즈베리파이에서 픽스호크를 위해 전류를 공급해주기 위해 꽃는 것으로 만약 배터리등의 외부전원으로 이미 픽스호크를 가동하고 있다면 픽스호크에 과전류가 들어가 픽스호크가 죽을 수 있다.
경험담이기에 꼭 주의해야한다고 생각한다...
python3 mavproxy.py --master=/dev/serial0 --baudrate 921600 --aircraft MyCopter
그후 유튜브와는 조금 다르게 현재 공식문서에서는 위의 명령어를 쓰도록 되어있는데,
sudo mavproxy.py --master=/dev/serial0 --baudrate 921600 --aircraft MyCopter
우선 관리자 모드로 실행을 해야 권환이 없어서 실행되지 않는경우를 막을 수 있다.
위 코드를 입력하면 MAV-LINK 를 이용하여 라즈베리파이와 픽스호크가 연결되었는지 볼 수 있다.
만약 LINK 1 DOWN 이 뜨면서 안되면
하드웨어적으로 Tx와 Rx를 바꾸어보자. 필자는 저위에 꽃힌대로가 아닌 Tx와 Rx를 바꾸었는데 작동했다. 만약 Link 1 down이 아닌 그냥 에러가 난다면 소프트웨어를 다시 설치해보자.
참고로 해당 연결이 진행되면 현재 드론의 모드가 나오게 된다. ( loiter 등 )
그렇기 떄문에 조종기도 키고 바인딩을 한 상태에서 진행해야 잘 나올 것이다.
조종기 배터리가 없어도 연결이 잘 되지 않으니 주의하도록 하자.
+++
만약 위 지시를 다 따랐는데도 되지않는다면,
sudo mavproxy.py --master=/dev/serial0 --baudrate 57600 --aircraft MyCopter
baudrate를 낮추어 보자. 아마 라즈베리파이 4를 사용한다면 위 코드가 먹힐 가능성이 크다.
이제 라즈베리파이와 픽스호크간 연결이 잘 진행되었다. 그럼 다음 글부터는 코드를 통해 어떻게 드론을 제어하는지 정리를 해보겠다.
'프로젝트 > 주차단속 드론' 카테고리의 다른 글
라즈베리파이에 웹캠 사용하기(2022) (0) | 2022.06.24 |
---|---|
라즈베리파이로 드론 조종하기 (1) | 2022.05.19 |
라즈베리파이 Opencv설치 (2022 기준) (7) | 2022.04.28 |
03_미션플래너 (4) | 2021.11.20 |
02_드론만들기_프레임 (4) | 2021.11.11 |