Crazyflie 2.1
WARNING
PX4并不生产此款(或任何)自动驾驶仪。若有硬件支持或合规性问题,请联系制造商。
WARNING
Crazyflie 2.1仅能在稳定模式下飞行。
Crazyflie系列微型四轴飞行器由Bitcraze AB公司打造。Crazyflie 2.1的概述可在此处找到。
总览
INFO
主要硬件文档位于此处。
- 主片上系统:STM32F405RG
- CPU:168 MHz ARM Cortex M4 ,带单精度浮点运算单元(FPU)
- 随机存取存储器:192 KB SRAM
- nRF51822 无线及电源管理微控制器
- BMI088三轴加速度计/陀螺仪
- BMP388高精度气压传感器
- 微型通用串行总线(uUSB)接口
- 板载锂聚合物电池充电器,具备100mA、500mA和980mA三种充电模式
- 全速USB设备接口
- 部分USB OTG功能(具备USB OTG但无5V输出)
- 8KB电可擦可编程只读存储器(EEPROM)
购买渠道
该飞行器可在以下链接购买:Crazyflie 2.1 (store.bitcraze.io) 。
有用的周边硬件包括:
- Crazyradio PA 2.4 GHz USB加密狗:用于QGroundControl与Crazyflie 2.0之间的无线通信。
- 扩展板(Breakout deck):用于连接新外设的扩展板。
- Flow deck v2:用于高度和位置控制的光流传感器与距离传感器。
- Z - ranger deck v2:用于高度控制的距离传感器(与Flow deck使用相同传感器)。
- Multi - ranger deck:多方向物体检测设备。
- Buzzer deck:针对系统事件(如低电量或充电完成)提供音频反馈。
- 扩展板(Breakout deck):可让你无需焊接即可轻松测试新硬件的扩展板。
- SD卡扩展板(SD - card deck):用于将高速板载日志记录到微型SD卡。
- 罗技游戏手柄(Logitech Joystick)
组装Crazyflie 2.1
刷入PX4
INFO
以下说明仅在Ubuntu系统上测试过。
在搭建好PX4开发环境后,按以下步骤将PX4自动驾驶仪安装到Crazyflie 2.1上:
- 下载PX4引导加载程序的源代码:
git clone https://github.com/PX4/Bootloader.git --recurse-submodules
- 进入源代码的顶级目录并使用以下命令编译:
make crazyflie21_bl
- 按以下步骤将Crazyflie 2.1置于DFU模式:
- 确保其初始未通电。
- 确保电池已断开连接。
- 按住复位按钮(见下图...)。
- 插入计算机的USB端口。
- 一秒后,蓝色LED灯应开始闪烁,5秒后闪烁应加快。
- 松开按钮。
- 安装 dfu - util:
sudo apt-get update
sudo apt-get install dfu-util
- 使用 dfu - util 刷入引导加载程序,完成后拔出Crazyflie 2.1:
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D./build/crazyflie21_bl/crazyflie21_bl.bin
当给Crazyflie 2.1通电时,黄色LED灯应闪烁。 6. 下载PX4自动驾驶仪的源代码:
git clone https://github.com/PX4/PX4-Autopilot.git
- 进入源代码的顶级目录并使用以下命令编译:
cd PX4-Autopilot/
make bitcraze_crazyflie21_default upload
- 当提示插入设备时,插入Crazyflie 2.1。黄色LED灯应开始闪烁,表明进入引导加载程序模式。然后红色LED灯应亮起,表明刷写过程已开始。
- 等待完成。
- 完成!使用QGroundControl校准传感器。
刷回原厂Bitcraze固件
- 下载最新的Crazyflie 2.1引导加载程序 。
- 按以下步骤将Crazyflie 2.1置于DFU模式:
- 确保其初始未通电。
- 确保电池已断开连接。
- 按住复位按钮。
- 插入计算机的USB端口。
- 一秒后,蓝色LED灯应开始闪烁,5秒后闪烁应加快。
- 松开按钮。
- 使用 dfu - util 刷入引导加载程序,完成后拔出Crazyflie 2.1:
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cf2loader-1.0.bin
当给Crazyflie 2.1通电时,黄色LED灯应闪烁。 4. 使用此教程安装最新的Bitcraze Crazyflie 2.1固件。
无线设置说明
板载nRF模块允许通过蓝牙或专有的2.4GHz Nordic ESB协议连接到该板。
- 推荐使用Crazyradio PA 。
- 若要立即试飞Crazyflie 2.1,可通过蓝牙使用Crazyflie手机应用程序。
通过MAVLink连接:
- 将Crazyradio PA与兼容的地面控制站(GCS)配合使用。
- 下载 crazyflie - lib - python 源代码:
git clone https://github.com/bitcraze/crazyflie-lib-python.git
INFO
我们将使用cfbridge.py 在Crazyflie 2.1(已刷入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/bin/activate
- 安装所需的依赖项:
pip install cflib
pip install -r requirements.txt
要通过Crazyradio连接Crazyflie 2.1,按以下步骤启动cfbridge:
- 关闭并重新打开Crazyflie 2.1的电源,等待其启动。
- 通过USB连接Crazyflie无线设备。
- 导航到crazyflie - lib - python文件夹。
- 激活环境:
source venv/bin/activate
- 导航到examples文件夹:
cd examples
- 启动cfbridge:
python cfbridge.py
INFO
默认情况下,Cfbridge 尝试在80频道上以Crazyflie地址0xE7E7E7E7E7启动无线链路通信。 如果你在同一房间内使用多个Crazyflie和/或Crazyradio ,并且希望为每个设备使用不同的频道和/或地址,首先通过USB线将Crazyflie与QGroundControl连接,并在QGroundControl中更改syslink参数(频道、地址)。 接下来,分别将相同的频道和地址作为第一个和第二个参数来启动cfbridge,例如:python cfbridge.py 90 0x0202020202
。
- 打开QGroundControl。
- 使用完 cfbridge 后,如果你激活了虚拟环境,可以按
CTRL+z
停用它。 大多数情况下,从同一终端再次启动 cfbridge 无法连接到Crazyflie,解决方法是关闭该终端,并在新终端中重新启动 cfbridge 。
TIP
如果你在crazyflie - lib - python 中更改了任何驱动程序,或者在新终端中启动 cfbridge 找不到Crazyflie,你可以尝试导航到crazyflie - lib - python文件夹并运行以下脚本重新构建cflib。
make venv
INFO
只有在你将控制器(例如Playstation 3控制器)连接到PC后,QGC中的“游戏手柄”菜单才会出现。
硬件安装
Crazyflie 2.1仅能在稳定模式下飞行。
为记录飞行详细信息,你可以如图所示将SD卡扩展板安装在Crazyflie顶部:
将FrSky Taranis遥控发射器用作游戏手柄
如果你已拥有Taranis遥控发射器并想将其用作控制器,可以将其配置为USB游戏手柄:
- 在Taranis中创建一个新模型。
- 在“模型设置(MODEL SETUP)”菜单页面,关闭内部和外部发射模块。
- 在“输出(OUTPUTS)”菜单页面(某些Taranis发射器中也称为“舵机(SERVOS)”页面),反转油门(CH1)和副翼(CH3)。
要使用Taranis开关进行解锁/锁定以及切换不同飞行模式:
- 在Taranis用户界面的“混控(MIXER)”菜单页面,你可以将开关分配到9 - 16通道范围内的任何通道,这些通道在QGroundControl游戏手柄设置中对应按钮0 - 7。例如,Taranis的“SD”开关可在Taranis用户界面中设置为通道9:
- 用USB线将Taranis连接到PC并打开QGroundControl。
- 在QGroundControl游戏手柄设置中,当你打开开关时,可以看到按钮变为黄色。例如,Taranis中的通道9在QGroundControl游戏手柄设置中对应按钮0。你可以为该按钮分配任何模式,例如 高度(Altitude) 模式。现在,当你拉下“SD”开关时,飞行模式将切换为 高度 模式。
机器人操作系统(ROS)
要通过MAVROS连接到Crazyflie 2.1:
- 按照上述说明启动 cfbridge 。
- 更改QGroundControl监听的UDP端口:
- 在QGroundControl中,导航到“应用设置 > 常规”,取消选中“自动连接到以下设备”下的所有框。
- 在“通信链路(Comm Links)”中添加一个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未连接,请重启它。