라즈베리파이와 픽스호크 연동 ( pixhawk 2.4.8 )
프로젝트/주차단속 드론

라즈베리파이와 픽스호크 연동 ( pixhawk 2.4.8 )

728x90

이번에는 라즈베리파이와 픽스호크를 연동하는 법에 대해 알아보겠다.

 

라즈베리파이를 이용하면 픽스호크에게 명령을 내려서 조종하는것이 가능하다.

 

ex) 장애물 감지시 멈추게 한다던지, 특정 궤도를 움직이게 한다던지 등

 

 

그 전에 우선 라즈베리파이와 픽스호크를 연결해주는 과정이 필요하다.

 

https://www.youtube.com/watch?v=kB9YyG2V-nA&t=1513s 

 

 

 

기본적으로는 위 해외 유튜브를 따라가면서 하면 할 수 있다.

 

https://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html

 

Communicating with Raspberry Pi via MAVLink — Dev documentation

MAVProxy can be used to send commands to the flight controller from the Pi. It can also be used to route telemetry to other network endpoints. This assumes you have a SSH connection to the Pi. If not, see see the the RPi Documentation. To test the RPi and

ardupilot.org

하드웨어 연결 및 세팅은 위 공식 문서를 참조해서 해결할 수 있다.

( 꼭 한번씩 읽어보고 하자 )

 

 

 

 

물론 그대로 따라가면 막히는 부분이 조금 있을 것이다 (필자가 많이 막힘)

그 부분을 정리해보고자 글을 쓴다.

 

먼저 픽스호크의 기본세팅, 라즈베리파이의 기본세팅은 되어있다고 가정하고 진행해보겠다.

 

라즈베리파이에 몇개의 모듈을 까는것이 필요하다.

 

 

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를 사용한다면 위 코드가 먹힐 가능성이 크다.

 

 

이제 라즈베리파이와 픽스호크간 연결이 잘 진행되었다. 그럼 다음 글부터는 코드를 통해 어떻게 드론을 제어하는지 정리를 해보겠다.

728x90