Skip to content

Crazyflie 2.0(已停产)

徽章:信息 - 已停产

:::警告 “Crazyflie 2.0”已停产/被替代。 请改用Bitcraze Crazyflie 2.1! :::

:::警告

  • PX4不生产此款(或任何一款)自动驾驶仪。 若有硬件支持或合规性问题,请联系制造商
  • PX4对该飞行控制器的支持为实验性。 :::

Crazyflie系列微型四轴飞行器由Bitcraze AB公司打造。Crazyflie 2.0的概述可在此处查看

Crazyflie2图片

总览

:::信息 主要硬件文档位于:https://wiki.bitcraze.io/projects:crazyflie2:index :::

  • 主片上系统:STM32F405RG
    • CPU:168 MHz的ARM Cortex M4,带有单精度浮点运算单元(FPU)
    • 随机存取存储器(RAM):192 KB SRAM
  • nRF51822无线与电源管理微控制器(MCU)
  • MPU9250加速度计/陀螺仪/磁力计
  • LPS25H气压计

购买渠道

刷写PX4

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

  1. 下载PX4引导加载程序的源代码:
sh
git clone https://github.com/PX4/Bootloader.git
  1. 进入源代码的顶级目录,并使用以下命令编译:
sh
make crazyflie_bl
  1. 按以下步骤将Crazyflie 2.0置于DFU模式:
    • 确保其初始未通电。
    • 按住复位按钮(见下图)。 Crazyflie2复位按钮
    • 插入计算机的USB端口。
    • 一秒后,蓝色LED应开始闪烁,5秒后闪烁速度加快。
    • 松开按钮。
  2. 安装“dfu - util”:
sh
sudo apt-get update
sudo apt-get install dfu-util
  1. 使用“dfu - util”刷写引导加载程序,完成后拔掉Crazyflie 2.0:
sh
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D./build/crazyflie_bl/crazyflie_bl.bin

当Crazyflie 2.0通电时,黄色LED应闪烁。 6. 下载PX4自动驾驶仪的源代码:

sh
git clone https://github.com/PX4/PX4-Autopilot.git
  1. 进入源代码的顶级目录,并使用以下命令编译:
sh
make bitcraze_crazyflie_default upload
  1. 当提示插入设备时,插入Crazyflie 2.0。黄色LED应开始闪烁,表明进入引导加载程序模式。然后红色LED应亮起,表明刷写过程已开始。
  2. 等待完成。
  3. 完成!使用QGroundControl校准传感器。

:::信息 如果QGroundControl无法与飞行器连接,请确保在针对Crazyflie的nuttx - config中,将# CONFIG_DEV_LOWCONSOLE is not set替换为CONFIG_DEV_LOWCONSOLE=y。 这可通过“menuconfig”完成:

sh
make bitcraze_crazyflie_default menuconfig

或通过“qconfig”(在图形界面的“串口驱动支持”下勾选“低级控制台支持”):

sh
make bitcraze_crazyflie_default qconfig

:::

无线设置说明

板载nRF模块允许通过蓝牙或专有的2.4GHz Nordic ESB协议连接到该板。

  • 推荐使用Crazyradio PA
  • 要立即操控Crazyflie 2.0飞行,可通过蓝牙使用Crazyflie手机应用程序。

使用官方Bitcraze的“Crazyflie手机应用程序”

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

通过MAVLink连接

  • 将Crazyradio PA与兼容的地面控制站配合使用。
  • 下载“crazyflie - lib - python”源代码:
sh
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。 :::

  • 确保已设置udev权限以使用USB无线模块。为此,按照此处列出的步骤操作,然后重启计算机。
  • 通过USB连接Crazyradio PA。
  • 使用以下方法构建一个虚拟环境(本地Python环境),并安装软件包依赖项:
sh
pip install tox --user
  • 导航到crazyflie - lib - python文件夹并输入:
sh
make venv
  • 激活虚拟环境:
sh
source venv-cflib/bin/activate
  • 安装所需的依赖项:
sh
pip install -r requirements.txt --user

要通过Crazyradio连接Crazyflie 2.0,按以下步骤启动cfbridge

  • 关闭并重新开启Crazyflie 2.0的电源,等待其启动。
  • 通过USB连接Crazyflie无线设备。
  • 导航到crazyflie - lib - python文件夹。
  • 激活环境:
sh
source venv-cflib/bin/activate
  • 导航到examples文件夹:
sh
cd examples
  • 启动cfbridge:
sh
python cfbridge.py

:::信息 默认情况下,“Cfbridge”尝试在80频道上以Crazyflie地址0xE7E7E7E7E7发起无线链路通信。 如果在同一房间内使用多个Crazyflie和/或Crazyradio,且希望为每个设备使用不同的频道和/或地址,首先通过USB线将Crazyflie与QGroundControl连接,然后在QGroundControl中更改syslink参数(频道、地址)。 接下来,分别将相同的频道和地址作为第一个和第二个参数来启动cfbridge,例如:python cfbridge.py 90 0x0202020202 :::

  • 打开QGroundControl。
  • 使用“cfbridge”后,如果已激活虚拟环境,可按CTRL+z停用它。 大多数情况下,从同一终端再次启动“cfbridge”无法连接到Crazyflie,解决方法是关闭终端,然后在新终端中重新启动“cfbridge”。

:::提示 如果在crazyflie - lib - python中更改了任何驱动程序,或者在新终端中启动“cfbridge”找不到Crazyflie,可以尝试导航到crazyflie - lib - python文件夹并运行以下脚本以重建cflib。

sh
make venv

:::

:::信息 要使用游戏手柄,在QGroundControl中将COM_RC_IN_MODE设置为“游戏手柄/无遥控检查”。 校准游戏手柄,并在QGroundControl中将游戏手柄消息频率设置为5到14 Hz之间的任意值(建议设置为10 Hz)。 为了能够设置频率,需要启用高级选项。 这是游戏手柄指令从QGroundControl发送到Crazyflie 2.0的速率(为此,你需要按照此处的说明获取最新的QGroundControl源代码(主分支)并进行构建)。 :::

硬件安装

Crazyflie 2.0能够在稳定模式定高模式定位模式下实现精确控制飞行。

  • 要在“定高”模式下飞行,你需要Z - ranger扩展板。 如果你还想在“定位”模式下飞行,建议购买光流扩展板,它也集成了Z - ranger传感器。
  • 板载气压计极易受到任何外部风扰的影响,包括Crazyflie自身螺旋桨产生的风扰。因此,我们用一块泡沫隔离气压计,然后将距离传感器安装在其顶部,如下所示:

Crazyflie气压计

Crazyflie气压计与泡沫

Crazyflie光流传感器

为了记录飞行详细信息,你可以将SD卡扩展板安装在Crazyflie顶部,如下所示:

Crazyflie SD卡

然后,你需要使用双面胶带将电池粘贴在SD卡扩展板顶部:

Crazyflie电池安装

高度控制

如果使用Z - ranger扩展板,Crazyflie能够在“定高”模式下飞行。 根据数据表,测距仪能够感知的最大离地高度为2米。然而,在深色表面上测试时,该值会降至0.5米。在浅色地面上,最大可达1.3米。这意味着在“定高”或“定位”飞行模式下,无法保持超过此值的高度。

:::提示 如果Crazyflie 2.0在“定高模式”或“定位模式”下,在中等油门指令时高度出现漂移,首先尝试重启飞行器。如果问题未解决,重新校准加速度计和磁力计(指南针)。 :::

:::信息 由于板载气压计极易受到Crazyflie自身螺旋桨产生的风扰影响,你不能依赖它来保持高度。 :::

位置控制

使用光流扩展板,可以在“定位模式”下操控Crazyflie 2.0飞行。 与PX4FLOW不同,光流扩展板没有集成陀螺仪,因此使用板载陀螺仪进行光流融合以获取本地位置估计。 此外,光流扩展板与SD卡扩展板共享相同的SPI总线,因此在“定位模式”飞行时,不建议在SD卡上进行高速记录。

将FrSky Taranis遥控发射器用作游戏手柄

如果你已拥有一个Taranis遥控发射器,并希望将其用作控制器,可以将其配置为USB游戏手柄:

  • 在Taranis中创建一个新模型。 Taranis - 新模型
  • 在“模型设置”菜单页面中,关闭内部和外部发射模块。 Taranis - 模型设置
  • 在“输出”菜单页面(在某些Taranis发射器中也称为“舵机”页面),反转油门(CH1)和副翼(CH3)。 Taranis - 输出

要使用Taranis开关进行解锁/锁定以及切换不同飞行模式:

  • 在Taranis用户界面的“混控”菜单页面中,你可以将开关分配到9 - 16通道范围内的任何通道,这些通道在QGroundControl游戏手柄设置中对应于按钮0 - 7。例如,Taranis的“SD”开关可以在Taranis用户界面中设置为通道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
  • 使用以下命令启动MAVROS:
sh
roslaunch mavros px4.launch fcu_url:="udp://:14550@127.0.0.1:14551" gcs_url:="udp://@127.0.0.1:14557"
  • 如果QGroundControl未连接,请重启它。