Crazyflie入门教程-集群-crazyswarm配置
说明:
- 介绍如何配置
步骤:
- 由于Crazyflies正在共享无线电和通信频道,因此它们需要具有唯一的标识符/地址。Crazyswarm中的约定是使用以下地址:
0xE7E7E7E7<X>
其中
用数字标记您的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手动编辑
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号