Crazyflie 2.0(已停产)
徽章:信息 - 已停产
:::警告 “Crazyflie 2.0”已停产/被替代。 请改用Bitcraze Crazyflie 2.1! :::
:::警告
Crazyflie系列微型四轴飞行器由Bitcraze AB公司打造。Crazyflie 2.0的概述可在此处查看。
总览
:::信息 主要硬件文档位于:https://wiki.bitcraze.io/projects:crazyflie2:index :::
- 主片上系统:STM32F405RG
- CPU:168 MHz的ARM Cortex M4,带有单精度浮点运算单元(FPU)
- 随机存取存储器(RAM):192 KB SRAM
- nRF51822无线与电源管理微控制器(MCU)
- MPU9250加速度计/陀螺仪/磁力计
- LPS25H气压计
购买渠道
- Crazyflie 2.0
- Crazyradio PA 2.4 GHz USB加密狗:用于“QGroundControl”与Crazyflie 2.0之间的无线通信。
- 扩展板:用于连接新外设的扩展电路板。
- 光流扩展板:包含一个光流传感器,用于测量地面的移动情况,以及一个距离传感器,用于测量与地面的距离。这对精确的高度和位置控制很有帮助。
- Z - ranger扩展板:与光流扩展板具有相同的距离传感器,用于测量与地面的距离,对精确的高度控制有用。
- SD卡扩展板:用于将高速飞行数据记录到微型SD卡上。
- 罗技游戏手柄
刷写PX4
在搭建好PX4开发环境后,按以下步骤在Crazyflie 2.0上安装PX4自动驾驶仪:
- 下载PX4引导加载程序的源代码:
git clone https://github.com/PX4/Bootloader.git
- 进入源代码的顶级目录,并使用以下命令编译:
make crazyflie_bl
- 按以下步骤将Crazyflie 2.0置于DFU模式:
- 确保其初始未通电。
- 按住复位按钮(见下图)。
- 插入计算机的USB端口。
- 一秒后,蓝色LED应开始闪烁,5秒后闪烁速度加快。
- 松开按钮。
- 安装“dfu - util”:
sudo apt-get update
sudo apt-get install dfu-util
- 使用“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
- 进入源代码的顶级目录,并使用以下命令编译:
make bitcraze_crazyflie_default upload
- 当提示插入设备时,插入Crazyflie 2.0。黄色LED应开始闪烁,表明进入引导加载程序模式。然后红色LED应亮起,表明刷写过程已开始。
- 等待完成。
- 完成!使用QGroundControl校准传感器。
:::信息 如果QGroundControl无法与飞行器连接,请确保在针对Crazyflie的nuttx - config中,将# CONFIG_DEV_LOWCONSOLE is not set
替换为CONFIG_DEV_LOWCONSOLE=y
。 这可通过“menuconfig”完成:
make bitcraze_crazyflie_default menuconfig
或通过“qconfig”(在图形界面的“串口驱动支持”下勾选“低级控制台支持”):
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”源代码:
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环境),并安装软件包依赖项:
pip install tox --user
- 导航到crazyflie - lib - python文件夹并输入:
make venv
- 激活虚拟环境:
source venv-cflib/bin/activate
- 安装所需的依赖项:
pip install -r requirements.txt --user
要通过Crazyradio连接Crazyflie 2.0,按以下步骤启动cfbridge:
- 关闭并重新开启Crazyflie 2.0的电源,等待其启动。
- 通过USB连接Crazyflie无线设备。
- 导航到crazyflie - lib - python文件夹。
- 激活环境:
source venv-cflib/bin/activate
- 导航到examples文件夹:
cd examples
- 启动cfbridge:
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。
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自身螺旋桨产生的风扰。因此,我们用一块泡沫隔离气压计,然后将距离传感器安装在其顶部,如下所示:
为了记录飞行详细信息,你可以将SD卡扩展板安装在Crazyflie顶部,如下所示:
然后,你需要使用双面胶带将电池粘贴在SD卡扩展板顶部:
高度控制
如果使用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发射器中也称为“舵机”页面),反转油门(CH1)和副翼(CH3)。
要使用Taranis开关进行解锁/锁定以及切换不同飞行模式:
- 在Taranis用户界面的“混控”菜单页面中,你可以将开关分配到9 - 16通道范围内的任何通道,这些通道在QGroundControl游戏手柄设置中对应于按钮0 - 7。例如,Taranis的“SD”开关可以在Taranis用户界面中设置为通道9:
- 用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:
roslaunch mavros px4.launch fcu_url:="udp://:14550@127.0.0.1:14551" gcs_url:="udp://@127.0.0.1:14557"
- 如果QGroundControl未连接,请重启它。