Crazyswarm framework

2023-11-13

  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 视频输出路径
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Crazyswarm framework 的相关文章

  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 将 transaction.commit_manually() 升级到 Django > 1.6

    我继承了为 Django 1 4 编写的应用程序的一些代码 我们需要更新代码库以使用 Django 1 7 并最终更新到 1 8 作为下一个长期支持版本 在一些地方它使用旧风格 transaction commit manually and
  • 使用 Python 创建 MIDI

    本质上 我正在尝试从头开始创建 MIDI 并将它们放到网上 我对不同的语言持开放态度 但更喜欢使用Python 两种语言之一 如果这有什么区别的话 并且想知道我应该使用哪个库 提前致谢 看起来这就是您正在寻找的 适用于 Python 的简单
  • TensorFlow:带有轴选项的 bincount

    在 TensorFlow 中 我可以使用 tf bincount 获取数组中每个元素的计数 x tf placeholder tf int32 None freq tf bincount x tf Session run freq feed
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • 小部件之间的自定义信号

    尝试将信号从一个 gtk EventBox 子级发送到另一个 在 init HeadMode 第 75 行 上出现错误 类型错误 未知信号名称 消息发送 why usr bin env python coding utf8 import p
  • 使用 Python 计算 Spark 中成对 (K,V) RDD 中每个 KEY 的平均值

    我想与 Python 共享这个特定的 Apache Spark 解决方案 因为它的文档非常贫乏 我想通过 KEY 计算 K V 对 存储在 Pairwise RDD 中 的平均值 示例数据如下所示 gt gt gt rdd1 take 10
  • 在相同任务上,Keras 比 TensorFlow 慢

    我正在使用 Python 运行斩首 DCNN 本例中为 Inception V3 来获取图像特征 我使用的是 Anaconda Py3 6 和 Windows7 使用 TensorFlow 时 我将会话保存在变量中 感谢 jdehesa 并
  • 揭秘sharedctypes性能

    在 python 中 可以在多个进程之间共享 ctypes 对象 然而我注意到分配这些对象似乎非常昂贵 考虑以下代码 from multiprocessing import sharedctypes as sct import ctypes
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • 如何在 Django 中使用基于类的视图创建注册视图?

    当我开始使用 Django 时 我几乎使用 FBV 基于函数的视图 来处理所有事情 包括注册新用户 但当我更深入地研究项目时 我意识到基于类的视图通常更适合大型项目 因为它们更干净且可维护 但这并不是说 FBV 不是 无论如何 我将整个项目
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • 为什么我应该使用 WSGI?

    使用 mod python 一段时间了 我读了越来越多关于 WSGI 有多好的文章 但没有真正理解为什么 那么我为什么要切换到它呢 有什么好处 这很难吗 学习曲线值得吗 为了用 Python 开发复杂的 Web 应用程序 您可能会使用更全面
  • 使用 pybtex 将 bibtex 转换为格式化的 HTML 参考书目,例如哈佛风格

    我正在使用 Django 并将 bibtex 存储在我的模型中 并且希望能够以格式化 HTML 字符串的形式向我的视图传递引用 使其看起来像哈佛引用样式 使用中描述的方法Pybtex 无法识别 bibtex 条目 https stackov
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • Python对象初始化性能

    我只是做了一些快速的性能测试 我注意到一般情况下初始化列表比显式初始化列表慢大约四到六倍 这些可能是错误的术语 我不确定这里的行话 例如 gt gt gt import timeit gt gt gt print timeit timeit
  • 附加两个具有相同列、不同顺序的数据框

    我有两个熊猫数据框 noclickDF DataFrame 0 123 321 0 1543 432 columns click id location clickDF DataFrame 1 123 421 1 1543 436 colu
  • 字符串列表,获取n个元素的公共子串,Python

    我的问题可能类似于this https stackoverflow com questions 37514193 count the number of occurrences of n length not given string in
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • 使用Multiprocessing和Pool时如何访问全局变量?

    我试图避免将变量冗余地传递到dataList e g 1 globalDict 2 globalDict 3 globalDict 并在全球范围内使用它们 global globalDict然而 在下面的代码中并不是这样做的解决方案 是否有

随机推荐

  • VMware Workstation Pro 17 虚拟机安装Ubuntu18.4.06

    VMware Workstation Pro 17 虚拟机安装Ubuntu18 4 06 1 下载Ubuntu镜像文件 2 安装VMware Workstation Pro 17 3 使用VMware创建虚拟机 4 安装Ubuntu18 4
  • YC 带你快速入门区块链

    1 介 绍 如果你在这里 我们假设你是一个受区块链影响的开发者 黑客 你确信你了解它是如何工作的 现在你很想知道区块链对你和你所掌握的开发者技能的意义 如果你需要更多的底气 我们建议你先从比特币白皮书和以太坊白皮书开始 比特币白皮书学习资料
  • 权限系统控制到按钮级别开源推荐 Spring Boot-Shiro-Vue

    再搞权限系统的时候 权限控制到菜单很容易 但是很多情况要控制到按钮接口级别 这个时候设计就要研究下了 方案好几种 这里推荐一个不错的开源方案 大伙可以参考学习下 Spring Boot Shiro Vue实现 github开源地址及系统演示
  • JavaWeb-云日志

    前不久 我在哔哩哔哩上学了一个教写了云日志web项目 但讲的不全 我自己学习过程中 做个笔记 也分享给大家 源码链接在最后面 目录 1 数据库设计 2 登录模块 3 个人中心模块 4 类别模块 5 日志模块 6 数据报表模块 7 主页模块
  • Android SIM卡识别加载流程

    文章目录 总述 代码路径 UICC框架 SIM卡识别加载流程 日志分析举例 总述 本文基于Android N Android 7 首先要知道SIM卡一般是挂载在CP侧 MODEM侧 的 由MODEM给予真正的上电 识别 通信等 然后通过AP
  • Python selenium Boss直聘数据爬取(仅供学习使用)

    写在前面 因为最近刚好需要分析行业数据 又在查询时 发现了许多博主写了一些东西 但很多都已经失效了 所以写了那么一篇文章 希望能够帮到大家 注 BOSS直聘数据为js加载数据 故使用selenium 一 pip selenium bs4 下
  • Microsemi Libero系列教程(四)——PLL的使用

    文章目录 PLL是什么 Libero中PLL的使用 官方文档 交流群 系列教程 Microsemi Libero系列教程 PLL是什么 PLL Phase Locked Loop 为锁相回路或锁相环 用来统一整合时钟信号 使高频器件正常工作
  • 远程链接腾讯云Redis-遇到的坑

    开门见山 1 配置腾讯安全组 不用重启机器 首先找到默认的安全组 一个实例必须有一个安全组 即这个 点进去 就会进入安全组下全部的安全策略 根据需要配置 2 更改Redis配置redis conf 注意 1 一定找到启动Redis对应的re
  • C++ STL模板库用法查询及一些常见面试题(自用)

    C STL模板库 文章目录 C STL模板库 用法查询 Array 1 使用 2 创建 3 成员函数 Vector 1 使用 2 创建 3 成员函数 deque 1 使用 2 创建 3 成员函数 list 1 使用 2 创建 3 成员函数
  • 「如何优雅有效利用周末和下班时间?」

    文章目录 每日一句正能量 前言 下班的时间规划 周末的时间规划 提升周末体验感的好方法 怎样才能获得充分的休息 后记 每日一句正能量 眼望古城街尽 心谱落愁无序 旧时的誓言 曾而相似 河水在遵循河道的指引下 在曲折前进中放声的歌唱 我却在心
  • 记录QTcpSocket碰到的ConnectToHost失败问题

    之前尝试Qt的QTcpSocket 发现ConnectToHost失败 waitForConnected一直返回false 一直不得其解 放弃了 直到最近再次使用 仍然是返回false 下定决心要解决这个问题 心血来潮查了QT的文档 发现有
  • 一文让你知道关于App推送那些事

    推送相关介绍 在用户未打开App时 服务端向用户推送服务器最新的消息数据 称为推送 消息推送在移动开发中用到的场景非常多 比如典电商类app的商品促销活动 资讯类的app的新闻推送等等 在实际开发中 我们常常会根据产品设计的需要 进行推送功
  • RF4CE安全性:概述

    配对流程 RF4CE配对是一个相当简单的过程 带来一些安全隐患 可能是由于试图简化最终用户的配对过程 首先 我们有发现阶段 外围设备发送具有一些特定属性集的发现请求命令 并等待来自满足这些要求的设备的发现响应命令 配对本身从外围设备发出的配
  • 服务器基础知识

    服务器基础知识 服务器是网络环境中的高性能计算机 它侦听网络上的其他计算机 客户机 提交的服务请求 并提供相应的服务 为此服务器必须具有承担服务并且保障服务的能力 一 服务器的分类 1 塔式服务器 塔式服务器即常见的立式 卧式机箱结构的服务
  • 基于单片机ISP技术原理及在线编程器的实现

    编程接口一般 芯片不焊在电路中 如华邦的51单片机 40引脚 可能是串口下载 STC 焊在板上的USB转串口下载 下面的ATMEL的ISP是模拟SPI下载 用单片机的P1 5P1 6P1 7下载 以ATMEL公司的AT89S51 AT89S
  • 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)

    解决的问题 适配器模式把一个类的接口变换成客户端所期待的另一种接口 从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作 比如说我的hp笔记本 美国产品 人家美国的电压是110V的 而我们中国的电压是220V 要在中国能使用 必须找个
  • Csdn爬虫自动评论

    前言 因为发现自己的csdn博客被机器人自动评论 这些博客很多都是对别人进行评论 然后别人就有可能回访或者点赞关注等等 基本上总积分非常高 为了覆盖掉这些机器评论 本篇主要是实现java爬虫对自己的博客所有文章进行自动评论 一 准备分析工作
  • vscode插件一draw.io绘图工具

    vscode 插件推荐一draw io 日常工作中需要制作时序图 流程图等 这里推荐的是vscode的插件中draw io 先自行在官网下载vscode https code visualstudio com 安装后打开vscode 如图在
  • c++ map 析构函数_C++核心准则C.36:析构函数不应该失败

    C 36 A destructor may not fail析构函数不应该失败 Reason 原因 In general we do not know how to write error free code if a destructor
  • Crazyswarm framework

    Crazyswarm framework 1 Tools Crazyfile Chooser Simulation sim flag 2 软件架构 使用方法 参考论文 应用的论文 3使用教程 参考网页 配置文件 example 基础 轨迹生