1. 程式人生 > >QGC通過網路連線飛控(樹莓派+ROS橋接MavLink)

QGC通過網路連線飛控(樹莓派+ROS橋接MavLink)

1. 為樹莓派刷ubuntu

    因為無介面的ubuntu在連線無線,設定自動登入等方面的設定比較複雜,我經過各種百度嘗試後,均沒有成功,所以我放棄了.轉而又刷了ubuntu mate(帶介面).然後連線了無線,設定了自動登入,靜態IP.自此樹莓派的準備工作到此結束.這部分工作的目的是,可以通過遠端登入樹莓派進行操作,這樣就免除了操作樹莓派時需要樹莓派連線顯示器,滑鼠,鍵盤.

    刷寫 ubuntu(無介面)官方教程:https://wiki.ubuntu.com/ARM/RaspberryPi

    刷寫ubuntu mate(帶介面),只需在官方教程基礎上將壓縮包換為

ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz即可.

    提示:官方教程裡SD卡插到電腦上顯示的驅動名為/dev/mmcblk0,而我用讀卡器插到電腦上顯示的驅動是/dev/sdb.因為後面要安裝ROS,所以一定要選擇16.04版本的ubuntu!

    連線無線路由器後檢視本機IP及閘道器,在命令列中輸入ifconfig,可以看到路由器分配的動態IP.輸入netstat -nr,Gateway下面的那個非全0的IP地址就是閘道器.

2. 在樹莓派上安裝ROS

    通過電腦遠端連線,因為我用的ubuntu,所以在命令列通過ssh連線即可.以我的樹莓派為例,在命令列中輸入如下圖所示命令,回車輸入密碼後即可登入.

    之後安裝ROS的步驟和在電腦ubuntu上安裝沒什麼區別,請參考我的部落格:ROS系列一:在Ubuntu中安裝ROS Kinetic

3. 通過ROS橋接MavLink

3.1 安裝MAVROS

    1. 開啟命令列,輸入如下命令

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod a+x install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

    2. 如果在臺式計算機上使用,請同時安裝RQT

sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-rqt-robot-plugins

    3. 使用caktin_tools而不是預設的catkin_make,因為它更強大

sudo apt-get install python-catkin-tools

3.2 啟用mavros節點

    1. 首先,一個好的ROS習慣是始終在工作區目錄中工作,因此建立一個:開啟一個終端

mkdir -p ~/src/ardupilot_ws/src
cd ~/src/ardupilot_ws
catkin init
cd src

    2. 建立存放啟動檔案的資料夾並建立啟動檔案(實際上是在官方提供的啟動檔案基礎上更改)

mkdir launch
cd launch
roscp mavros apm.launch apm.launch

    3. 使用vim編輯apm.launch.將"fcu_url"和"gcs_url"更改為如圖所示.

    注:ubuntu mate預設應該是沒有vim的,請通過"sudo apt-get install vim"命令,安裝vim.

    4. 更改驅動讀寫許可權

sudo chmod 666 /dev/ttyUSB0

    5. 通過USB轉串列埠模組連線樹莓派和飛控(數傳1介面)

    注:USB轉串列埠模組插到樹莓派上顯示的驅動應該為/dev/ttyUSB0或/dev/ttyACM0。我的是/dev/ttyUSB0,所以上面的"fcu_url"和更改驅動讀寫許可權都針對的是/dev/ttyUSB0.

    6. 給飛控上電,注意不能通過樹莓派給飛控供電,不過這有可能和我使用的給樹莓派的供電電源(2.5A)有關,如果使用額定電流更大的電源有可能可以通過樹莓派供電,如果可以通過樹莓派供電,那就可以通過USB線直接和飛控通訊,不再需要USB轉串列埠模組,而且通訊的波特率也可以調整為921600(飛控USB介面的波特率是自適應的,更改ros啟動檔案裡的波特率即可).

    7. 啟動mavros節點.

roslaunch apm.launch

    如果你能看到如下結果,證明mavros節點啟用成功了

[ INFO] [1541565442.422317696]: Known MAVLink dialects: common ardupilotmega ASLUAV autoquad icarous matrixpilot paparazzi slugs standard uAvionix ualberta
[ INFO] [1541565442.422407850]: MAVROS started. MY ID 1.240, TARGET ID 1.1
[ WARN] [1541565442.519014524]: TM: Wrong FCU time.
[ INFO] [1541565442.613707556]: CON: Got HEARTBEAT, connected. FCU: ArduPilotMega / ArduCopter
[ INFO] [1541565442.756024441]: IMU: Raw IMU message used.
[ INFO] [1541565442.814808952]: RC_CHANNELS message detected!
[ WARN] [1541565443.282026545]: GP: No GPS fix
[ INFO] [1541565443.638235652]: VER: 1.1: Capabilities         0x0000000000003bcf
[ INFO] [1541565443.638564080]: VER: 1.1: Flight software:     03070000 ( ecd69e4)
[ INFO] [1541565443.638752876]: VER: 1.1: Middleware software: 00000000 ( 8ca93fb)
[ INFO] [1541565443.638919954]: VER: 1.1: OS software:         00000000 ( 1472b16)
[ INFO] [1541565443.639138438]: VER: 1.1: Board hardware:      00000000
[ INFO] [1541565443.639386555]: VER: 1.1: VID/PID:             0000:0000
[ INFO] [1541565443.639571550]: VER: 1.1: UID:                 0000000000000000
[ WARN] [1541565443.639881124]: CMD: Unexpected command 520, result 0
[ INFO] [1541565452.614353679]: HP: requesting home position
[ INFO] [1541565452.628424776]: FCU: ArduCopter V3.7-dev (ecd69e43)
[ INFO] [1541565452.630931733]: FCU: PX4: 8ca93fbd NuttX: 1472b16c
[ INFO] [1541565452.636172048]: FCU: PX4v2 002C0041 31345116 36383835
[ INFO] [1541565452.636898069]: FCU: Frame: QUAD
[ INFO] [1541565457.631559590]: WP: mission received
[ INFO] [1541565462.614800604]: HP: requesting home position
[ERROR] [1541565463.618754156]: FCU: PreArm: Throttle below Failsafe
[ERROR] [1541565463.621093545]: FCU: PreArm: Hardware safety switch
[ERROR] [1541565463.627553390]: FCU: PreArm: 3D Accel calibration needed
[ERROR] [1541565463.630187359]: FCU: PreArm: Compass not calibrated
[ERROR] [1541565463.632828567]: FCU: PreArm: Compass not calibrated

4. 使用QGC通過網路連線飛控

    在使用QGC通過網路連線飛控之前,請確保你所使用的電腦和樹莓派在同一網段.

    1. 開啟QGC,點選左上角圖示,選中"通訊連線"點選"新增"

    2. 新增通訊連線.設定自己想要的名稱,在"型別"欄中選擇UDP,監聽埠設定為14500(之前配置檔案中設定的埠號),在"目標主機"欄先點選"新增"然後輸入你的樹莓派的IP地址,再此點選"新增"按鈕.最後點選右下角的確定按鈕退出.

    3. 選中你所建立的連線,點選"連線"按鈕.你就可以通過網路連線到飛控了.