ArduPilot团队的核心开发者Randy Mackay带来个人分享,以下是他给大家分享的具体内容:
这个简短的教程展示了如何使用 Rpanion 、Amazon Web Services 和 AP_Cloud将板载日志文件(又名“dataflash 日志”)从ArduPilot飞行控制器上传到AWS服务器,然后使用AP_Cloud 处理它们。
以下是我进行测试时使用到的硬件设备:
-
赫星Cube Orange开源控制器运行ArduPilot Rover-4.2固件(任何与ArduPilot兼容的飞控皆可运行任何版本的AP固件)
-
树莓派4(应该也能与树莓派2,3,4,Zero2,以及Jetson兼容)
-
Pi-Connect Lite, 为了使树莓派更易于和飞控连接
一、ArduPilot调参
ArduPilot的更改可以实时(通过 MAVLink)将板载日志(也称为 dataflash 日志)发送到配套计算机。
-
设置 SERIALx_BAUD = 921(甚至 1500)以启用与配套计算机的高速 mavlink 通信(“x”是连接到 RPanion 的遥测端口数字)
-
设置LOG_BACKEND_TYPE = 3 (File+Mavlink) 启用通过 MAVLink 将板载日志文件实时发送到配套计算机
二、设置RPanion
在这一步我们在树莓派上下载RPanion,配置与飞控的连接并确认autopilot->树莓派 日志传输正常。
- 下载RPanion ver 0.9(或更高版本),下载说明请参考:
https://www.docs.rpanion.com/software/rpanion-server#installation
- 启动飞控和 Rpanion 并连接到 Rpanion Web 服务器
1.最简易的方式:连接“rpanion”wifi连接点,然后打开http://10.0.2.100:3000/
2.另一种选择是插入网线并使用本地网络路由器的接口来确定 树莓派的IP地址,然后直接使用上面链接的修改版本。
-
在飞控页面的串口输入部分将Baud字段设置为921600(或 1500000)以匹配飞控和 MAVLink 版本到 2.0
-
重新启动飞控和RPanion,然后确认日志正确上传并锁定然后解锁设备(或设置LOG_DISARMED = 1,等待几秒钟然后重置为0),然后检查RPanion的FlightLogs屏幕的Bin上是否出现新日志日志部分。
接下来,我们使用Putty或其他SSH客户端生成密钥对。之后使用该密钥对允许Rpanion上传到 AWS服务器。
-
打开Putty, 用SSH连接到10.0.2.100
-
当日志出现时,提供用户名/密码 pi/raspberry
-
cd.ssh
-
cat id_rsa.pub 并将内容复制并粘贴到本地PC上的文本文件中(稍后将使用此文件允许 RPanion 通过SSH连接到AWS服务器)
三、AWS设置
这一步我们会配置一个AWS 服务器以从RPanion中获取日志文件
- 点击“Create a Free Account”创建一个AWS账号:
-
打开AWS 控制台,选择“Launch a virtual machine With EC2(2mins)”
-
选择“select “Ubuntu Server 20.04 LTS”
-
点击“Create new key pair”,保存.ppk 或.pem到本地电脑,以备日后从 Putty 或类似终端应用程序连接到服务器(这些说明不需要此密钥)
-
在网络设置中,启用 SSH(以允许 Rpanion 上传日志)和 HTTP 流量(稍后由 AP_Cloud 的网络服务器使用)
-
点击“Launch Instance”
-
从AWS主控台,选择“Instances”,寻找“Public IPv4地址”这一栏,这个地址就是服务器地址
-
在同一个界面,通过选中服务器的复选框来启动 EC2 Connect ,然后再次按 Connect 和 Connect。
-
输入“mkdir logs”创建目录以存储日志
-
输入“cd.ssh”
-
“vi authorized_keys”,然后“i”,随后 Ctrl-v 粘贴在“RPanion setup”阶段捕获的rpanion的公钥。按“wq”退出vi,然后关闭窗口。这允许 Rpanion 连接到 AWS 服务器
四、启用Rpanion的云上传
一、首先我们手动检查SSH是否成功连接到AWS 服务器
-
在你的本地电脑,打开Putty (或类似的),连接到Rpanion(例如用SSH 连接到10.0.2.100)
-
当日志出现时,提供用户名/密码 pi/raspberry
-
在主控台输入“ssh ubuntu@xx.xx.xx.xx, 在这里这些X体现的是AWS 服务器IP地址
-
当被提示“无法建立主机的真实性”时回答“yes”
-
如果成功连接,这证明Rpanion成功连上,所以请输入“exit”(或者直接关闭窗口)
二、配置“云上传”
-
打开Rpanion的网站入口(http://10.0.2.100:3000/)
-
在云上传界面,在“AP:Cloud Rsync”这一栏输入:ubuntu@x.x.x.x:/home/ubuntu
(x.x.x.x代表AWS 服务器IP 地址,)点击“Enable”,几分钟后,会显示“Success”,
- 如果几分钟后出现了“Success”,那可以很自信地确认已经成功上传,但如果你想再次确认使用AWS的EC2连接功能,那么请输入“Is logs”,然后确认文件。
五、在AWS服务器上下载AP Cloud
AP cloud 下载说明详见此链接:
更详细以及被验证过的步骤请参考以下说明:
1.在AWS 主控台上连接EC2 Connect, 选择Instances,检查复选框,反复电机“Connect”
2.下载MAVProxy下载说明,请查看链接:
https://ardupilot.org/mavproxy/docs/getting_started/download_and_installation.html#linux)
- sudo apt-get update
- sudo apt-get install python3-dev python3-opencv python3-wxgtk4.0 python3-pip python3-matplotlib python3-lxml python3-pygame
- pip3 install PyYAML mavproxy --user
- echo “export PATH=$PATH:$HOME/.local/bin” >> ~/.bashrc
- source ~/.bashrc
3.下载nvm链接如下:
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- source ~/.bashrc"
- nvm install 12
- nvm use 12
- node -v (should return v12.22.10 or higher)
- npm install
4.下载并运行AP_Cloud
- cd ~
- git 克隆 GitHub - ArduPilot/AP_Cloud: Fleet management solution for ArduPilot Drones
- cd AP_Cloud
- 用你喜欢的编辑器修改AP_Cloud/config/default.json 并更改 “port” 到80(之前是 8123)
- source ~/.bashrc"
- node index.js
更改RPanion的云端上传位置
-
打开RPanion的网页入口 (http://10.0.2.100:3000/)
-
在云上传页面,在AP:Cloud Rsync
这一栏输入:
ubuntu@x.x.x.x:/home/ubuntu/AP_Cloud/logs/drone1(x.x.x.x表示AWS服务器IP 地址)
通过在本地电脑的浏览器打开AP_Cloud,然后在地址栏输入AWS服务器IP地址。点击“drone1”,看到元数据从日志中调取出来,以及一个链接(在右侧)以下载每一份日志。
非常感谢David Buzz和Stephen Dade分别对AP Cloud 和RPanion的贡献!
END