Crazyswarm framework
- 先观看视频https://www.youtube.com/watch?v=9KlfFpv6NIQ
以下1、2、3章节就是视频内的内容 - 之后 的内容参看教程:https://crazyswarm.readthedocs.io/
1.Tools
Crazyfile Chooser
选择、取消多个 crazyfile , 查看相关状态、电量等等
Simulation (–sim flag)
2.软件架构
使用方法
参考论文
参考论⽂https://link.springer.com/chapter/10.1007/978-3-319-54927-9_3
https://ieeexplore.ieee.org/abstract/document/7989376
应用的论文
- Fast and In Sync: Periodic Swarm Patterns for Quadrotors (ICRA 2019 最佳论文奖) 艺术类的应用
3使用教程
参考网页
https://crazyswarm.readthedocs.io/en/latest/api.html
配置文件
- crazyfile Types.yaml : 电压警告等等
- allCrazyflies.yaml : 单个无人机设置
example 基础
- example1.py 文件:起飞降落
- 使用模拟器 python example1.py --sim
轨迹生成
轨迹1
- example2.py 文件 :轨迹生成
参考github的工具
https://github.com/whoenig/uav_trajectories
- 方式1:给点和最大加速度和速度
- 给出(时间,点)参数对
轨迹2
- More advanced techniques is active area of research [4,5,9,14,20]
- Some of which are open-source,e.g,
– https:/lgithub.com/USC-ACTLab/rlss
– https:/lgithub.com/USC-ACTLab/rlss
分布式控制
- Here: Monte-Carlo Tree Searchwith multiple neural networks [43]
- Run one process per CF on a hostcomputer
– only using local/relative information
example3.py
- 初始化相关信息
loop: - 计算对应的位置
- 给予位置信息
launch文件运行
run.launch sim:=True for simulation
案例:3v2 cooperative Attack
4 官方文档
https://crazyswarm.readthedocs.io/
Getting started
具体看网页:但是有一点是可以使用UWB测量相对距离,用于后面分布式算法。
Installation
参看文档
Overview
参看末尾的视频和 PPT 文档。
Configuration
设置无线通信
- 使用客户端设置地址:每个 Crazyflies 需要设置单独的编号/地址
0xE7E7E7E7<X>
,如cf1 到 cf10 ,地址0xE7E7E7E701
0xE7E7E7E70A
更新固件
调整配置文件
配置一:配置动捕系统
#ros_ws/src/crazyswarm/launch/hover_swarm.launch
文件内设置
- 硬件设置:hover_swarm.launch 文件中设置动捕设备和 IP 地址
- 目标追踪模式:
- unique marker arrangement (标记布局都是唯一的)
- Duplicated Marker Arrangements(迭代最近的点,标记布局可以相同,需要设置初始位置)
- single marker(特例)
配置二:枚举 Crazyflies
- crazyflies.yaml 文件中列举出所有的 crazyflies ,需要在最开始配置。若通信失败将会报错。
- initialPosition 在 Duplicated Marker Arrangements 模式下是需要设置的,允许小误差。
配置三:定义 Crazyflies 类型
定义一些物理特性,crazyflieTypes.yaml
文件中修改。
Duplicated Marker Arrangements
- 将正面指向运动捕捉系 x 方向。
- 查找所用标记的坐标,见文档
- 更新
crazyflieTypes.yaml
文件
single marker:见例程
使用 graphical Chooser tool
配合 allCrazyflies.yaml
配置文件,使用 chooser ,不需要编辑 crazyflies.yaml
。
cd ros_ws/src/crazyswarm/scripts
python chooser.py
教程(悬停)
仿真
python hello_world.py --sim
实验
source ros_ws/devel/setup.bash
roslaunch crazyswarm hover_swarm.launch
python hello_world.py
How-To Guides
Crazyswarm Integration with Git
Creating a new streaming setpoint mode
Python API 接口
Crazyflie class
大部分功能都在此类中
setGroupMask(groupMask)
# 设置组掩码,触发一些动作,比如上传的轨迹,同步编舞等等
enableCollisionAvoidance(others, ellipsoidRadii)
# 使能避碰撞避免 ;others 参数在仿真可以选择,实验是所有同一个频道的无人机。ellipsoidRadii 安全半径,由于快速运动,要比实际的安全距离设置大一些
disableCollisionAvoidance()
# 失能碰撞避免
takeoff(targetHeight, duration, groupMask=0)
# 起飞: 高度 、时间 ,然后一直悬停
land(targetHeight, duration, groupMask=0)
# 降落:目标高度 、 时间,但是后面必须得断电
stop(groupMask=0)
# 断电:低级命令下可操作,非紧急状况
goTo(goal, yaw, duration, relative=False, groupMask=0)
# 到达目标点,yaw 时间 相对位移/绝对位移 ,频率或时间短使用cmd命令
uploadTrajectory(trajectoryId, pieceOffset, trajectory)
# 上传分段多项式轨迹 : ID 偏移 轨迹
startTrajectory(trajectoryId, timescale=1.0, reverse=False, relative=True, groupMask=0)
# 执行轨迹:ID 时间缩放 是否翻转 相对(一般是true,从现在位置出发)
notifySetpointsStop(remainValidMillisecs=100, groupMask=0)
# 通知流式传输低级别设定值数据包即将停止,例子:之后使用land命令
position()
# 返回当前位置
getParam(name)
# 返回当前name 参数信息
setParam(name, value)
# 设置单个 name参数值
setParams(params)
# 设置多个参数值
cmdFullState(pos, vel, acc, yaw, omega)
# 设置数据流全状态控制命令,(加速度和角加速度前馈),
# 转换到低级命令,不能使用 land() 和 goto() 等命令
cmdVelocityWorld(vel, yawRate)
# 设置速度和 yaw 角度 运行
cmdVel(roll, pitch, yawrate, thrust)
# 设置相关参数运行
cmdPosition(pos, yaw=0)
# 设置位置信息
setLEDColor(r, g, b)
设置灯的颜色
CrazyflieServer class
emergency()
#紧急暂停
takeoff(targetHeight, duration, groupMask=0)
land(targetHeight, duration, groupMask=0)
goTo(goal, yaw, duration, groupMask=0)
startTrajectory(trajectoryId, timescale=1.0, reverse=False, relative=True, groupMask=0)
setParam(name, value)
# 广播操作
TimeHelper class
包含所有时间相关得函数
time()
# 返回时间函数
sleep(duration)
# 休眠一段时间
sleepForRate(rateHz)
# 一定频率休眠
isShutdown()
# 是否关机
仿真和实验切换
仿真
--sim
--vis
--dt
--writecsv
--disturbance 模拟高斯干扰
--maxvel 限制模拟速度
--video 视频输出路径