Crazyflie入门教程-集群-crazyswarm配置

   目录


说明:

  • 介绍如何配置

步骤:

  • 由于Crazyflies正在共享无线电和通信频道,因此它们需要具有唯一的标识符/地址。Crazyswarm中的约定是使用以下地址:
0xE7E7E7E7<X>

其中是Crazyflie在十六进制数。例如,cf1将使用address,0xE7E7E7E701而cf10将使用address 0xE7E7E7E70A。分配地址最简单的方法是使用官方的Crazyflie Python客户端

  • 用数字标记您的Crazyflies

  • 使用Crazyflie Python客户端分配地址(使用USB电缆进行最简单的处理)

  • 每个电台可以控制约15个Crazyflies。如果您有超过15个CF,则需要为Crazyflies分配不同的通道。例如,如果您有49个Crazyflies,则需要三个唯一的渠道。由您分配给哪个CF的通道取决于您,但是一种好方法是使用Crazyflie编号对通道数量取模。例如,将cf1分配给通道80,将cf2分配给通道90,将cf3分配给通道100,将cf4分配给通道80,依此类推

  • 使用提供的固件(NRF51和STM32固件)升级Crazyflies的固件

    通过执行以下步骤来上载预编译的固件:

    • 插入电池

    • 按下开/关按钮关闭Crazyflie
      -按住开/关按钮3秒钟,将Crazyflie设置为引导加载程序模式(蓝色的M2和M3 LED指示灯开始闪烁)

      rosrun crazyflie_tools flash --target nrf51 --filename prebuilt/cf2_nrf.bin
      
    • 按下开/关按钮关闭Crazyflie

    • 按住开/关按钮3秒钟,将Crazyflie设置为引导加载程序模式(蓝色的M2和M3 LED指示灯开始闪烁)

      rosrun crazyflie_tools flash --target stm32 --filename prebuilt/cf2.bin
      
  • 使用提供的固件升级Crazyradios的固件

    • 选项1:按照crazyradio-firmware文件夹中的说明安装自编译版本。

    • 选项2:使用预构建的二进制文件:

      python crazyradio-firmware/usbtools/launchBootloader.py
      sudo python crazyradio-firmware/usbtools/nrfbootload.py flash prebuilt/cradio.bin
      

      现在拔出并重新插入收音机。您可以使用来检查版本,该版本应报告。

      rosrun crazyflie_tools scan -vFound Crazyradio with version 99.55
      
    • 注意:更改频道/地址后,需要重新启动您的Crazyflie,以使更改生效。

  • 设置PC权限以在没有root用户的情况下使用USB Radio。

    • 选项1:按照crazyflie-lib-python文件夹中的说明进行操作,或在此处查看。
    • 选项2:使用脚本: ./pc_permissions.sh
  • 调整配置文件

几个配置文件可能需要编辑。最重要的配置选择是是否 为机队中的每个Crazyflie使用运动捕捉标记的独特布置。选择以下选项卡之一,以获取每个选项的描述。文档中的后续步骤将根据您的选择而更改。

每个Crazyflie都有独特的标记布置,您可以依靠运动捕捉硬件来区分对象。这通常是优选的。但是,如果您有很多Crazyflies,可能很难设计足够的独特配置–在Crazyflie上没有很多标记的地方。

如果您的安排过于相似,则运动捕捉软件可能不会正常失败。例如,它可以在单个物理位置识别两个不同的对象之间快速来回切换。

  • 举例Crazyflies

首先,我们有crazyflies.yaml一个文件,其中列出了所有活动的Crazyflies。Crazyswarm服务器在启动时会读取此配置文件。如果它无法与中定义的所有Crazyflies通信crazyflies.yaml,它将停止并报告错误

# ros_ws/src/crazyswarm/launch/crazyflies.yaml
crazyflies:
  - id: 1
    channel: 100
    initialPosition: [1.5, 1.5, 0.0]
    type: default
  - id: 2
    channel: 110
    initialPosition: [1.5, 1.0, 0.0]
    type: medium

该文件假定每个CF的地址均已设置,如前所述。通道可以自由配置

如果使用唯一的标记排列,则将忽略条目的initialPosition字段crazyflies.yaml,但仍应设置该字段,因为解析器会期望它

选择所有可用Crazyflies的子集通常很有用。图形化的“选择器”和附加的配置文件allCrazyflies.yaml使此操作变得容易

  • 定义Crazyflie类型

第二个配置文件crazyflieTypes.yaml定义了可能的类型。每种类型都指定四旋翼的物理属性。条目中的type字段crazyflies.yaml必须引用此文件中列出的类型。

# ros_ws/src/crazyswarm/launch/crazyflieTypes.yaml
crazyflieTypes:
  default:
    bigQuad: False
    batteryVoltageWarning: 3.8  # V
    batteryVoltateCritical: 3.7 # V
    markerConfiguration: 0
    dynamicsConfiguration: 0
    firmwareParams:
      ...
  medium:
    bigQuad: True
    batteryVoltageWarning: 7.6  # V
    batteryVoltateCritical: 7.4 # V
    markerConfiguration: 1
    dynamicsConfiguration: 0
    firmwareParams:
      ...
numMarkerConfigurations: 2
markerConfigurations:
  "0":  # for standard Crazyflie
    numPoints: 4
    offset: [0.0, -0.01, -0.04]
    points:
      "0": [0.0177184,0.0139654,0.0557585]
      "1": [-0.0262914,0.0509139,0.0402475]
      "2": [-0.0328889,-0.02757,0.0390601]
      "3": [0.0431307,-0.0331216,0.0388839]
  "1": # medium frame
    numPoints: 4
    offset: [0.0, 0.0, -0.03]
    points:
      "0": [-0.00896228,-0.000716753,0.0716129]
      "1": [-0.0156318,0.0997402,0.0508162]
      "2": [0.0461693,-0.0881012,0.0380672]
      "3": [-0.0789959,-0.0269793,0.0461144]
numDynamicsConfigurations: 1
dynamicsConfigurations:
  "0":
    maxXVelocity: 2.0
    maxYVelocity: 2.0
    maxZVelocity: 3.0
    maxPitchRate: 20.0
    maxRollRate: 20.0
    maxYawRate: 10.0
    maxRoll: 1.4
    maxPitch: 1.4
    maxFitnessScore: 0.001
  • markerConfiguration独特的标记排列不需要 这些字段。所有标记设置应在运动捕捉系统中完成。在创建每个标记设备的动作捕捉软件一个对象,并给他们的名字,如cf1,cf2,cf3,等,对应于您所列的ID crazyflies.yaml

  • 配置运动捕捉系统

    第三个配置文件是ROS启动文件ros_ws/src/crazyswarm/launch/hover_swarm.launch。它包含要使用的运动捕捉系统等设置

  • 选择硬件品牌

首先,选择您的运动捕捉硬件

# ros_ws/src/crazyswarm/launch/hover_swarm.launch
motion_capture_type: "vicon" # one of vicon,optitrack,qualisys,none

接下来,在下面选择适当的选项卡,然后执行制造商特定的配置

Tracker 3.4完全支持并测试了Vicon。设置Vicon机器的主机名:

# ros_ws/src/crazyswarm/launch/hover_swarm.launch
vicon_host_name: "vicon" # only needed if vicon is selected
  • 选择对象追踪模式

接下来,选择对象跟踪类型

# ros_ws/src/crazyswarm/launch/hover_swarm.launch
object_tracking_type: "motionCapture"

设置object_tracking_type到"motionCapture"

  • 使用Chooser管理车队

图形选择器工具用于启用/禁用可用Crazyflies的子集并执行其他实际任务。选择器依赖于其他配置文件allCrazyflies.yaml,该文件的格式与crazyflies.yaml(参见枚举Crazyflies)相同。编辑此文件以包含所有可用的Crazyflies。然后,启动选择器:

cd ros_ws/src/crazyswarm/scripts
python chooser.py

您应该会看到类似下面的屏幕截图

请输入图片描述

每个复选框对应于中的一个条目allCrazyflies.yaml。复选框位置应与initialPosition文件中的字段匹配。您可以拖动一个框以一次选择多个复选框。

无论何时更改allCrazyflies.yaml选择,所选框的条目都会立即复制并写入crazyflies.yaml。

如果您使用allCrazyflies.yaml和选择器,则永远不需要crazyflies.yaml手动编辑

Crazyflie 2.0是一款多功能飞行器开发平台,重量仅为27g,适合您的手掌。它的高级功能使其成为开发人员的理想选择,蓝牙LE功能使其可以轻松地从移动设备上飞行。它体积小,重量轻,非常适合室内使用,但您可以轻松地在房子上方盘旋,因为您可以将鼠标悬停在餐桌旁。设计为无焊接套件,Crazyflie 2.0可通过将电机连接到电路板框架而快速组装,随时可以飞行。 Crazyflie 2.0实物组成: Crazyflie 2.0支持多种无线电协议,可以从支持蓝牙LE的移动设备或使用Crazyradio或Crazyradio PA的计算机上使用。虽然从移动设备飞行很有效,但通过使用适用于Windows,Mac OSX和Linux的Python客户端将平台连接到计算机,可以解锁平台的真正威力。这使您可以完全使用所有扩展板,轻松修剪飞行参数,以图形方式记录数据和设置参数。当连接到计算机时,您还可以获得额外的好处,即能够使用任何具有至少4个模拟轴的游戏手柄或操纵杆进行飞行。该设备可以轻松映射到客户端内部。 Crazyflie 2.0特征: 耐用的设计 易于组装,无需焊接 支持具有自动检测功能的扩展板 支持从支持蓝牙LE的iOS和Android飞行,以及使用Crazyradio或Crazyradio PA从Windows / MacOSX / Linux飞行 使用Crazyradio PA测试了1公里以上的无线电范围LOS 无线固件更新 通过标准uUSB进行车载充电 双MCU架构,带有专用无线电/电源管理SoC,适用于高级应用 使用Crazyradio或Crazyradio PA与计算机一起使用,用户可以通过无线电实时记录/绘图/设置变量,并充分利用扩展板 技术规范: 机械规格: 重量:27克 尺寸(WxHxD):92x92x29mm(电机到电机,包括电机安装脚) 收音机规格: 使用Crazyradio PA测试20 dBm无线电放大器至> 1 km范围的LOS 支持iOS和Android客户端的蓝牙低功耗支持(在iOS 7.1+和Android 4.4+上测试) 收音机向后兼容原版Crazyflie和Crazyradio 微控制器: STM32F405主要应用MCU(Cortex-M4,168MHz,192kb SRAM,1Mb闪存) nRF51822无线电和电源管理MCU(Cortex-M0,32Mhz,16kb SRAM,128kb闪存) uUSB连接器: 板载LiPo充电器,提供100mA,500mA和980mA模式 全速USB设备接口 部分USB OTG功能(Usb OTG存在但没有5V输出) IMU: 3轴陀螺仪(MPU-9250) 3轴加速度计(MPU-9250) 3轴磁力计(MPU-9250) 高精度压力传感器(LPS25H) 飞行规格: 飞行时间与库存电池:7分钟 库存电池冷却时间:40分钟 最大推荐有效载荷重量:15克 扩展连接器: VCC(3.0V,最大100mA) GND VCOM(未经调节的VBAT或VUSB,最大1A) VUSB(用于输入和输出) I2C(400kHz) SPI 2 x UART 用于SPI的4 x GPIO / CS 1线总线,用于扩展识别 2 x GPIO连接到nRF51 8KB EEPROM 可能感兴趣的项目设计: MyCrazyflie2.0飞控原理图/PCB工程文件,你值得拥有 说明: Crazyflie 2.0是一个开放项目,提供源代码和硬件设计并记录在案。该平台在设计时考虑了开发,实现了使开发更容易,更快速的功能,例如日志记录和实时参数设置以及无线固件更新。大多数项目的完整开发环境在虚拟机中可用,因此您无需安装任何工具链即可进入开发阶段。但是虚拟机也可以用于飞行。除了固件和软件项目之外,还有许多社区支持的API,用Java,Ruby,C / C ++,C#和Javascript编写。对于有兴趣进行更高级开发的人来说,有一个开发适配器套件,支持与Crazyflie 2.0上的两个MCU轻松连接JTAG / SWD。 固件和软件不断更新,增加了各种改进和新功能。该平台通过无线电和蓝牙LE支持无线固件更新,因此当发布新的新固件时,轻松更新它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值