# Crazyflie 2.0

警告

PX4 不生产这种(或任何)自动驾驶仪。请联系 生产商 (打开新窗口) 硬件支持或合规问题。

警告

该飞行控制器支持 PX4 试验性.

Crazyflie 2.0 系列微型四边形机器人由 Bitcraze AB 设计。 在这里找到 (打开新窗口).

Crazyflie2 图像

# 快速总结

备注

主要硬件文档在这里: https://wiki.bitcraze.io/projects:crazyflie2:index

  • 主片上系统:STM32F405RG
    • 中央处理器168 MHz ARM Cortex M4,带单精度 FPU
    • 内存:192 kb Sram
  • nRF51822 无线电和电源管理 MCU
  • MPU9250 加速/陀螺/磁场
  • LPS25H 气压计

# 购买地点

# 闪光 PX4

设置好 PX4 开发环境后,请按照以下步骤在 Crazyflie 2.0 上安装 PX4 自动驾驶仪:

  1. 下载 PX4 引导加载程序的源代码:

    git clone https://github.com/PX4/Bootloader.git
    
  2. 导航至源代码的顶层目录,然后使用

    使 crazyflie_bl
    
  3. 按照以下步骤将 Crazyflie 2.0 设为 DFU 模式:

    • 确保最初未接通电源。
    • 按住重置按钮(见下图......)。 Crazyflie2 重置按钮
    • 插入电脑的 USB 端口。
    • 一秒钟后,蓝色 LED 灯开始闪烁,5 秒钟后闪烁速度加快。
    • 释放按钮。
  4. 安装 dfu-util:

    sudo apt-get update sudo apt-get install dfu-util
    
  5. 使用 dfu-util 完成后拔下 Crazyflie 2.0 的电源插头:

    sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie_bl/crazyflie_bl.bin
    

    打开 Crazyflie 2.0 电源时,黄色 LED 灯应闪烁。

  6. 下载 PX4 自动驾驶仪的源代码:

    git clone https://github.com/PX4/PX4-Autopilot.git
    
  7. 导航至源代码的顶层目录,然后使用

    使 bitcraze_crazyflie_default 上传
    
  8. 当提示插入设备时,插入 Crazyflie 2.0。黄色 LED 灯应开始闪烁,表示启动加载器模式。然后红色 LED 灯会亮起,表明闪频过程已经开始。

  9. 等待完成。

  10. 完成!使用 QGroundControl (打开新窗口).

备注

如果 QGroundControl 无法与载具连接,请确保在 nuttx-config (打开新窗口) for crazyflie # CONFIG_DEV_LOWCONSOLE 未设置 改为 CONFIG_DEV_LOWCONSOLE=y.应使用 菜单:

make bitcraze_crazyflie_default menuconfig

qconfig 检查 低级控制台支持 根据 支持串行驱动程序 在图形用户界面中):

make bitcraze_crazyflie_default qconfig

# 无线设置说明

板载 nRF 模块可通过蓝牙或专有的 2.4GHz Nordic ESB 协议与电路板连接。

使用官方 Bitcraze Crazyflie 电话应用程序:

  • 通过蓝牙连接
  • 将设置中的模式更改为 1 或 2。
  • 通过 QGroundControl 进行校准。

通过 MAVLink:

  • 使用 Crazyradio PA 和兼容的 GCS。
  • 下载 crazyflie-lib-python 源代码:
    git clone https://github.com/bitcraze/crazyflie-lib-python.git
    

备注

我们将使用 cfbridge.py (打开新窗口) 在 Crazyflie 2.0(已刷新 PX4)和 QGroundControl 之间建立无线 MAVlink 通信链路。 Cfbridge 使 QGroundControl 能够与 crazyradio PA 通信。该 基于 C 语言的 cfbridge (打开新窗口) 目前正在经历数据丢失问题,因此我们选择使用 cfbridge.py.

  • 确保设置了使用 USB Radio 的 udev 权限。为此,请按照以下步骤操作 这里 (打开新窗口)重新启动 您的电脑
  • 通过 USB 连接 Crazyradio PA。
  • 建立一个 虚拟环境 (打开新窗口) 与软件包的依赖关系:
    pip install tox --user
    
  • 导航至 crazyflie-lib-python 文件夹并键入
    捞钱
    
  • 激活虚拟环境:
    源 venv-cflib/bin/activate
    
  • 安装所需的依赖项:
    pip install -r requirements.txt --user
    

将 Crazyflie 2.0 与 crazyradio 连接、 启动 cfbridge 请按照以下步骤操作:

  • 关闭并打开 Crazyflie 2.0,等待它启动。

  • 通过 USB 连接 Crazyflie 无线电设备。

  • 导航至 crazyflie-lib-python 文件夹。

  • 激活环境:

    源 venv-cflib/bin/activate
    
  • 导航至示例文件夹:

    cd 示例
    
  • 启动 cfbridge:

    python cfbridge.py
    

    备注

    Cfbridge 默认情况下,会尝试在信道 80 和 crazyflie 地址 0xE7E7E7E7 上启动无线电链路通信。如果使用 多只疯狂的苍蝇和/或疯狂的收音机 (打开新窗口) 如果想在同一个房间里使用不同的通道和/或地址,首先要通过 USB 电缆将 crazyflie 与 QGroundControl 连接起来,然后更改 QGroundControl 中的系统链接参数(通道、地址)。然后,启动 cfbridge,将相同的通道和地址分别作为第一个和第二个参数,例如 python cfbridge.py 90 0x02020202

  • 打开 QGroundControl。

  • 使用后 cfbridge如果激活了 virtualenv,可以通过按 CTRL+z.大多数情况下,启动 cfbridge 再次从同一终端连接到 crazyflie 无法解决这个问题,关闭终端并重新启动 cfbridge 新航站楼。

TIP

如果您在 crazyflie-lib-python (打开新窗口) 或如果发射 cfbridge 在新终端中找不到 crazyflie,可以尝试导航到 crazyflie-lib-python 文件夹,然后运行下面的脚本重建 cflib。

捞钱

备注

要使用操纵杆,请设置 COM_RC_IN_MODE 将 QGroundControl 中的"操纵杆/无遥控检查"设置为"操纵杆/无遥控检查"。校准操纵杆,并在 QGroundControl 中将操纵杆信息频率设置为 5 至 14 Hz 之间的任意值(建议设置为 10 Hz)。要设置频率,应启用高级选项。这是操纵杆命令从 QGroundControl 发送到 Crazyflie 2.0 的频率(要做到这一点,您需要遵循以下说明 这里 (打开新窗口) 以获取最新的 QGroundControl 源代码(master)并构建它)。

# 硬件设置

Crazyflie 2.0 能够在以下环境中精确控制飞行 稳定模式, 高度模式位置模式.

  • 您需要 Z 型游侠甲板 (打开新窗口) 飞入 海拔高度 模式。如果您还想在 定位(POSITION) 模式,建议您购买 流动甲板 (打开新窗口) 它还集成了 Z-ranger 传感器。
  • 机载气压计极易受到任何外部风力的干扰,包括 Crazyflie 螺旋桨产生的干扰。因此,我们用一块泡沫隔离了气压计,然后将距离传感器安装在上面,如下图所示:

Crazyflie 气压计

Crazyflie 气压计泡沫

Crazyflie 光流

为了记录飞行详情,您可以将 SD 卡甲板安装在 crazyflie 的顶部,如下图所示:

Crazyflie SDCard

然后,您需要用双面胶将电池粘在 SD 卡卡面上:

Crazyflie 电池设置

# 高度控制

Crazyflie 能够在 海拔高度 模式,如果使用 Z 型游侠甲板 (打开新窗口).根据数据表,测距仪可感知的最大高度(距地面)为 2 米。然而,在黑暗地面上测试时,该值降至 0.5 米。 海拔高度定位(POSITION) 飞行模式。

TIP

如果 Crazyflie 2.0 在油门中段发出指令时高度漂移,在 高度模式位置模式首先尝试重启载具。如果还不能解决问题,请重新校准加速度和磁场(指南针)。

备注

由于机载气压计极易受到 Crazyflie 螺旋桨产生的风力干扰,因此不能依靠它来保持高度。

# 位置控制

流动甲板 (打开新窗口)您可以在以下环境中飞行 Crazyflie 2.0 位置模式.与 PX4flow 不同,流动甲板不带陀螺仪,因此板载陀螺仪用于流动融合,以找到本地位置估计值。此外,流动甲板与 SD 卡甲板共用相同的 SPI 总线,因此在下列情况下飞行时,不建议使用 SD 卡进行高速记录 位置模式.

备注

一个用于在 定位(POSITION) 模式可用 这里 (打开新窗口).这可以作为比较飞行性能的参考。

# 将 FrSky Taranis 遥控发射器用作操纵杆

如果您已经拥有 Taranis 遥控发射器,并希望将其用作控制器,则可将其配置为 USB 操纵杆:

  • 在 Taranis 中创建一个新模型。

    Taranis - 新型号

  • 型号设置 菜单页面,关闭内部和外部 TX 模块。

    Taranis - 模型设置

  • 输出 在菜单页面(在某些 Taranis 发送机中也称为 "SERVOS "页面),反转油门(CH1)和副翼(CH3)。

    Taranis - 产出

使用 Taranis 开关上膛/撤膛并切换到不同的飞行模式:

  • 在 Taranis UI 中 混音器 在 Taranis UI 的菜单页面中,您可以将开关分配到通道 9-16 范围内的任意通道,这些通道映射到 QGroundControl 操纵杆设置中的按钮 0-7。例如,Taranis "SD "开关可设置为 Taranis UI 中的通道 9:

    Taranis 开关设置

  • 用 USB 电缆将 Taranis 与电脑连接,然后打开 QGroundControl。

  • 在 QGroundControl 操纵杆设置中,您可以看到按钮在打开时变成黄色。例如,Taranis 中的通道 9 映射到 QGroundControl 操纵杆设置中的按钮 0。您可以为该按钮分配任何模式,例如 海拔高度 模式。现在,当您降低开关"SD"时,飞行模式将变为 海拔高度.

    操纵杆设置

# ROS

通过 MAVROS 连接 Crazyflie 2.0:

  • 启动 cfbridge 使用上述说明。
  • 更改 QGroundControl 监听的 UDP 端口:
    • 在 QGroundControl 中,导航至 应用程序设置> 常规 并取消选中 自动连接到以下设备.
    • 加入 通信链接 链接类型 UDP检查 启动时自动连接 选项,更改 监听端口 到 14557,添加目标主机:127.0.0.1,然后按 好的.
  • 确保您有 马弗罗斯 (打开新窗口) 已安装。
  • 用命令启动 MAVROS:
    roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14551" gcs_url:="udp://@127.0.0.1:14557"
    
  • 如果无法连接,请重新启动 QGroundControl。

# 飞行