本仓库包含 Crazyflie SITL 仿真、Crazyswarm2 控制后端、以及编队重配置(formation_reconfiguration)的完整实验链路。已适配到 Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Sim。
| 组件 | 版本 |
|---|---|
| 操作系统 | Ubuntu 24.04 |
| ROS 2 | Jazzy |
| Gazebo | Gazebo Sim(Jazzy 对应版本) |
| Python | 3.12 |
mkdir -p ~/work/crazyswarm2_ws/src
mkdir -p ~/work/crazysim将源码放入对应位置:
crazyflie-firmware/→~/work/crazysim/crazyflie-firmwarecrazyswarm2_ws/src/crazyswarm2/→~/work/crazyswarm2_ws/src/crazyswarm2crazyswarm2_ws/src/formation_reconfiguration/→~/work/crazyswarm2_ws/src/formation_reconfiguration
cd ~/work/crazysim
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt确认虚拟环境可导入这些包:cflib、numpy、scipy、matplotlib、osqp、PyYAML、transforms3d、typeguard、Jinja2
cd ~/work/crazyswarm2_ws
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
source install/setup.bash如果编译报缺包(如 geometry_msgs、crazyflie_interfaces 等),先用 apt 安装对应 ROS 依赖再重新构建。
启动顺序很重要,必须严格按以下步骤执行:
在 crazyflie-firmware 目录下:
source ~/work/crazysim/.venv/bin/activate
bash tools/crazyflie-simulation/simulator_files/gazebo/launch/sitl_multiagent_square.sh -n 4 -m crazyflie在 crazyswarm2_ws 目录下:
source /opt/ros/jazzy/setup.bash
source install/setup.bash
ros2 launch crazyflie launch.py backend:=cflib gui:=false mocap:=false teleop:=false rviz:=false- 不要写死 Python 虚拟环境路径:每个人的机器路径不同,用相对/可配置的方式。
- 真实动捕链路需要
vrpn_client_ros,不做动捕时加mocap:=false。 formation_plot_history是交互式绘图入口,无人值守出图需改成无头保存模式。- 启动顺序敏感:必须先拉 SITL 无人机 → 再启 crazyflie launch → 再启编队节点。
- 不使用 C++ 控制后端,全链路控制在 Python /
cflib侧。
Ubuntu 24.04 适配所做的主要改动记录在 ubuntu24_04_adaptation_report.md,包括固件 SITL 线程超时、陀螺仪 bias 校准跳过、CRTP 扫描包提前回包、编队节点速度兜底等。