RPanion+AWS+AP_Cloud 在云端上传及处理数据

ArduPilot团队的核心开发者Randy Mackay带来个人分享,以下是他给大家分享的具体内容:


这个简短的教程展示了如何使用 Rpanion 、Amazon Web Services 和 AP_Cloud将板载日志文件(又名“dataflash 日志”)从ArduPilot飞行控制器上传到AWS服务器,然后使用AP_Cloud 处理它们。

以下是我进行测试时使用到的硬件设备:

  • HEX赫星Cube Orange飞控运行ArduPilot Rover-4.2固件(任何与ArduPilot兼容的飞控皆可运行任何版本的AP固件)

  • 树莓派4(应该也能与树莓派2,3,4,Zero2,以及Jetson兼容)

  • Pi-Connect Lite, 为了使树莓派更易于和飞控连接
    image

一、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”
    5f0d4f1d2a32e396b140938bc89a08f3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

  • 点击“Create new key pair”,保存.ppk 或.pem到本地电脑,以备日后从 Putty 或类似终端应用程序连接到服务器(这些说明不需要此密钥)

  • 在网络设置中,启用 SSH(以允许 Rpanion 上传日志)和 HTTP 流量(稍后由 AP_Cloud 的网络服务器使用)
    d7b4a1977de601e400cc792bd0551d8e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

  • 点击“Launch Instance”

  • 从AWS主控台,选择“Instances”,寻找“Public IPv4地址”这一栏,这个地址就是服务器地址
    76d7a28ed3b693dba349bd42093057c6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

  • 在同一个界面,通过选中服务器的复选框来启动 EC2 Connect ,然后再次按 Connect 和 Connect。
    03b54e42849da3f2ad877c3b2564e142_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

  • 输入“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”,
ce2d62579c067adb089abbabf7286baf_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

  • 如果几分钟后出现了“Success”,那可以很自信地确认已经成功上传,但如果你想再次确认使用AWS的EC2连接功能,那么请输入“Is logs”,然后确认文件。

五、在AWS服务器上下载AP Cloud

AP cloud 下载说明详见此链接:

https://github.com/ArduPilot/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链接如下:

https://github.com/nvm-sh/nvm#install--update-script

4.下载并运行AP_Cloud

  • cd ~
  • git 克隆 https://github.com/ArduPilot/AP_Cloud.git
  • cd AP_Cloud
  • 用你喜欢的编辑器修改AP_Cloud/config/default.json 并更改 “port” 到80(之前是 8123)
  • source ~/.bashrc"
  • node index.js

更改RPanion的云端上传位置

这一栏输入:

ubuntu@x.x.x.x:/home/ubuntu/AP_Cloud/logs/drone1(x.x.x.x表示AWS服务器IP 地址)

通过在本地电脑的浏览器打开AP_Cloud,然后在地址栏输入AWS服务器IP地址。点击“drone1”,看到元数据从日志中调取出来,以及一个链接(在右侧)以下载每一份日志。
64168ec92196c9a52245253ac0cb924d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

非常感谢David Buzz和Stephen Dade分别对AP Cloud 和RPanion的贡献!

END