在 Linux 上构建 Bebop

这些说明阐明了如何为以下设备构建 ArduPilot Bebop 飞行控制器板。有关 Bebop 的更多详情,请查阅 这里.

提示

在以下设备上运行 ArduPilot 的说明 Bebop 2 可以在这里找到.

警告

进行本文所述的更改将使您的保修失效!派诺特的技术支持将无法帮助您解决这一问题或恢复您的原始软件。

警告

黑客攻击商业产品是有风险的!这种软件仍在不断发展,您很可能会发现飞行器存在各种问题,从飞行性能不佳到软件完全冻结不等。

尽管如此,恢复无人机几乎总是有可能的,ardupilot 开发团队的成员可能会帮助人们破解或恢复他们的 Bebop。 这个谷歌群组.

升级固件

截至 2015 年 11 月,Bebop 随附的 Linux 版本无法运行 ArduPilot,必须升级。要对其进行升级,您需要下载一个自定义版本 这里.

要升级到此版本:

  1. 为 Bebop 充电

  2. 连接其 Wi-Fi 网络 (BebopDrone-XXXX)

  3. 通过 ftp 连接

    ftp 192.168.42.1
    
  4. 转到 eMMC 目录

    CD 内部_000
    
  5. 上传更新文件

    提出问题 bebopdrone_update.plf
    
  6. 通过 telnet 连接 Bebop

    远程登录 192.168.42.1
    

    备注

    此处出现 telnet 错误表明 Bebop 当前固件没有打开正确的端口。手动重启 Bebop 以完成更新。

  7. 同步和重启

    同步
    重新启动
    
  8. 等待 Bebop 执行更新(可能需要几分钟时间)

    备注

    在此期间不要关闭 Bebop

  9. 更新完成后,您可以再次通过 WLAN 和 telnet 进行连接,并检查软件版本是否显示为 0.0.0(非官方版本),以验证更新是否完成。

     版本.文本
    

为 Bebop 搭建 ArduCopter

提示

如果只想试用(实验性的)二进制版本,可以跳过这一步。

以下步骤展示了如何为 Bebop 创建一个自定义版本的 Copter 软件:

安装 armhf 工具链

  1. 安装派诺特版本的 linaro arm-linux-gnueabihf 工具链,可从 这里

  2. 安装(工具链将在 /opt 中解压缩)

    苏都 dpkg -i 鹦鹉学舌-工具-linuxgnutools-2016.02-linaro_1.0.0-2_amd64.辩论
    
  3. 在 PATH 变量中添加工具链路径

    export PATH=/opt/arm-2016.02-linaro/bin:$PATH
    

下载并编译 ArduCopter

  1. 克隆 ardupilot 软件仓库

    git 复制 --递归-子模块 https://github./ArduPilot/ardupilot.git
    CD ardupilot
    
  2. 构建飞行控制固件的方法几乎相同。 为 Pixhawk 建造 构建命令除外:

  3. ./waf 配置 --官方=呜呜 --天电
    ./waf 构建
    
  4. 剥离二进制文件以减少内存占用:

    上膛-linux-吟游诗人-剥离 ArduCopter.小精灵 -o 自动飞行器
    

上传固件

  1. 如果您还没有按照前面的步骤构建固件,可以下载二进制版本 这里

  2. 再次通过 ftp 连接,进入 eMMC 目录

  3. 将 arducopter 二进制

    提出问题 自动飞行器
    
  4. 通过 telnet 连接 Bebop

  5. 将 arducopter 复制到 /usr/bin,并更改权限

    cp /数据/ftp/内部_000/自动飞行器 /我们/箱柜
    chmod +x /我们/箱柜/自动飞行器
    

启动 ArduPilot

  1. 通过远程登录连接

  2. 关闭常规(飞行)控制器

    kk
    
  3. 发射旋翼飞行器

    自动飞行器 -A udp:192.168.42.255:14550:bcast -B /设计/ttyPA1 -C udp:192.168.42.255:14551:bcast -l /数据/ftp/内部_000/APM/原木 -t /数据/ftp/内部_000/APM/地形
    

更改 GPS 配置

为了让 Bebop 的 GPS 发送 APM 的 NMEA 驱动程序能够理解的 NMEA 帧,您需要更改其配置。为此,您需要如前所述停止内置(飞行)控制器(先不要启动 Copter):

  1. 下载 gps_config 文件 这里

  2. 通过 ftp 连接 Bebop,并按照上文 "升级固件 "部分的提示进入 eMMC 目录

  3. 将配置文件

    提出问题 gps_config.文本
    
  4. 通过 telnet 连接 Bebop

  5. 复制 gps_config.txt 在 /etc/

    cp /数据/ftp/内部_000/gps_config.文本 /等等/
    
  6. 启动 GPS 配置更新程序

    libgps_cli
    
  7. 等待控制台显示 NMEA 信息

  8. 停止 libgps_cli 键入 Ctrl-C

启动 Copter

自动执行 Copter 启动要比手动连接方便得多。要做到这一点,启动脚本需要按以下方式进行修改。

警告

这部分至关重要,因为您必须编辑启动脚本。如果您在这里做错了什么,您的 Bebop 可能会无法正常启动。如果出现这种情况,您就必须使用 UART 电缆来恢复。

启动脚本位于 /etc/init.d/rcS.您需要对其进行编辑,删除启动普通(飞行)控制器的行,代之以启动 Copter。问题行如下:

龙启动器. -out2null 及样品;

替换为

自动飞行器 -A udp:192.168.42.255:14550:bcast -B /设计/ttyPA1 -C udp:192.168.42.255:14551:bcast -l /数据/ftp/内部_000/APM/原木 -t 数据/ftp/内部_000/APM/地形 及样品;

为了避免手动编辑文件,请下载 rcS 文件。

  1. 复制原始 rcS 文件以用于恢复

    cp /等等/启动.d/rcS /等等/rcS_backup
    
  2. 通过 ftp 连接到 Bebop,然后将 rcS 文件放入 eMMC,就像之前处理其他文件一样。

  3. 然后手动复制以覆盖 /etc/init.d/rcS 并更改权限

    cp /数据/ftp/内部_000/rcS /等等/启动.d/rcS
    chmod +x /等等/启动.d/rcS
    
  4. 同步和重启

    同步
    重新启动
    
  5. 如果您想让 Bebop 恢复正常,重新使用正常的(飞行)控制器和应用程序,只需更换 /etc/init.d/rcS 与备份文件同步并重新启动

    cp /等等/rcS_backup /等等/启动.d/rcS
    同步
    重新启动
    

备注

如果您将软件恢复正常并通过 FreeFlight 智能手机应用程序使用 Bebop,可能会要求您升级软件版本。如果这样做,您必须重复之前的一些步骤,至少是 GPS 配置、复制 arducopter 和修改 init 脚本。至于是否需要升级到自定义版本,这将取决于某些选项在下一版本中是否可用。后续信息...

恢复

  1. 如果出了问题,您无法再启动 Bebop

  2. UART 端口位于 Bebop 右侧颈部下方(面向前置摄像头)。

    ../_images/bebop_uart_port.jpg
  3. 您需要把聚苯乙烯往回拉一点,但应该不会造成太大的损坏。

  4. 获取 UART 电缆,如 这个 或任何 FTDI 3 针电缆(GND TXD RXD)

  5. 获取标题,如 这些 然后像这样将它们插入电缆:

    ../_images/bebop_straight_male_single_pin_header_connectors.jpg

    备注

    电缆的颜色代码通常是

    • 黑色 = 接地

    • 黄色 = RXD

    • 橙色 = TXD

  6. 像这样将电缆插入 Bebop:

    ../_images/bebop_connections.jpg

    备注

    注意引脚布局:

    • 黑色:前部

    • 黄色:中间

    • 橙色:背面

  7. 安装 UART 终端仿真器(如 minicom),并在 Bebop 接通电源后将其连接到 Bebop。

  8. 将备份的 rcS 文件复制回原处,同步并重新启动:

  9. 挂载 -o 重装,rw /
    cp /等等/rcS_backup /等等/启动.d/rcS
    同步
    重新启动
    

飞行

FreeFlight 3 与 ArduPilot 不兼容,因此您必须使用 支持的 GCS 之一.通过 Wi-Fi 与 Bebop 连接,然后启动 GCS,如果将链接设置为 UDP(以防万一),它应该会自动连接。

"这款" 天空控制器 与 apm 的常规固件不兼容。您需要闪存一个替代版本,才能用它控制您的 Bebop(相关信息即将发布......)。

为了手动驾驶 Bebop,Mission Planner地面站 GCS 用户可以使用 游戏板,如此处所述.或者使用 Bebop 上 777 端口的 RCOutput UDP 接口、Linux PC(或板型 Raspberry Pi)和 USB 游戏手柄。

在 Linux 上通过 UDP 的 RC 控制 Bebop

  1. 为了通过 UDP 的 RC 控制 Bebop 的 arducopter,您可以编写一个应用程序,使用 本协议 并每 10ms 发送一个数据包

  2. 或使用 遥控操纵杆 Linux 应用程序

  3. 为此,请克隆 git 仓库:

    git 复制 https://github./jberaud/遥控操纵杆.git
    
  4. 建造它

    CD 遥控操纵杆
    生产
    
  5. 插入 USB 游戏手柄(输入 joystick_remote -help 会显示支持的游戏手柄列表)

  6. 如果您的游戏手柄不受支持,只要您知道它的映射,就能轻松添加对它的支持

  7. 通过 Wi-FI 连接 Bebop 并启动应用程序:

    ./遥控操纵杆 -d /设计/输入/js[X] -t [游戏板] -r 192.168.42.1:777
    

    其中,[X] 是您可以轻松找到的游戏手柄的设备编号,通常为 0,但如果您的笔记本电脑已包含加速计等输入设备,则有时为 1;[gamepad] 是受支持的游戏手柄之一。

  8. 因此,对于映射到 /dev/input/js0 上的 XBox 360 游戏手柄,命令行变为

    ./遥控操纵杆 -d/设计/输入/js0 -t xbox_360 -r 192.168.42.1:777
    
  9. 必须在 Copter 的参数中设置飞行模式,才能使用按钮设置飞行模式

基本配置和框架参数

  1. 为了进行基本配置和校准,您可以使用任何一个通用控制系统并执行以下操作

    • 磁强计校准

    • 遥控校准

    • 加速度计校准

  2. 多亏了 Leonard Hall,我们才有了一套非常好的飞行稳定调整参数,您可以在这里找到 这里

已知限制

  • 与 UBlox GPS 相比,Bebop 的 GPS 性能并不出色,因此在 Loiter、PosHold 和其他 GPS 模式下,Bebop 会出现明显的漂移。

  • 在 "自动 "模式下执行任务效果尚可,但我们建议您使用非 GPS 模式(如 AltHold 或 Stabilize)起飞和着陆。

  • 将开展一些工作来改进对 GPS 的支持

  • 目前正在开发光流

  • 目前不支持视频流和捕捉