Crazyswarm framework

  1. 先观看视频https://www.youtube.com/watch?v=9KlfFpv6NIQ
    以下1、2、3章节就是视频内的内容
  2. 之后 的内容参看教程: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 视频输出路径
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值