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. 选中你所创建的连接,点击"连接"按钮.你就可以通过网络连接到飞控了.

猜你喜欢

转载自blog.csdn.net/BreederBai/article/details/83785166