【Crazyswarm2】环境配置、系统概述和使用教程

这篇具有很好参考价值的文章主要介绍了【Crazyswarm2】环境配置、系统概述和使用教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇内容旨在快速了解crazyswarm2的安装、系统概况和API变化。据我所知,这是csdn上第一篇有关crazyswarm2项目的分享,希望领域内的小伙伴私聊沟通共同学习。


学习资料:

 官方文档:Crazyswarm2: A ROS 2 testbed for Aerial Robot Teams — Crazyswarm2 1.0a1 documentation (imrclab.github.io)

 源码GitHub - IMRCLab/crazyswarm2: A Large Quadcopter Swarm

安装bug细节:

【crazyswarm2】安装PA的固件

【crzayswarm2】中的chooser.py【报错】配置

【crazyswarm2】中cfclient安装

关键代码解读:

【crazyswarm2】中launch.py参数文件配置

【crazyswarm2】中Crazyflies.yaml参数文件配置

【crazyswarm2】中serve.yaml参数文件配置

【crazyswarm2】中motion_capture.yaml参数文件配置-CSDN博客


crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

Crazyswarm2与和Crazyswarm1有何不同?

  • 动作捕捉集成。在 Crazyswarm1 中,由于 ROS1 发布/订阅系统的限制,动作捕捉集成是crazyswarm_server的一部分。 相比之下,Crazyswarm2现在遵循更好的ROS风格设计,我们的动作捕捉抽象层和自定义。 逐帧跟踪作为单独的 ROS 2 包提供。 此外,Crazyswarm2 旨在从一开始就支持其他本地化方法(灯塔或仅限板载本地化)。

  • 通信后端。在 Crazyswarm2 中,我们依赖于最低层的 crazyflie-link-cpp,这与 Crazyswarm1 中的自定义链接实现不同。 这个新链接使用优先级队列,允许在飞行期间上传轨迹等新功能。此外,新链接应提高整体(通信)鲁棒性。 还有一个对crazyflie-lib-python后端的实验性支持。

  • 支持常见的无人机任务。Crazyswarm1被设计用于操作群体,不包括单个机器人操作的常见功能,例如远程操作。Crazyswarm2取代了Crazyswarm1和crazyflie_ros,因此支持任意URI,远程操作等。

  • 模拟。在 Crazyswarm1 中,支持高级 Python 脚本的设置点的简单可视化。不支持不使用高级 Python 脚本的 ROS 代码仿真,也不支持基于物理的仿真。 相比之下,Crazyswarm2将模拟实现为替代后端。这将支持多个物理/可视化后端(可选物理和空气动力学交互)。

  • 支持分布式群监控(计划)。在 Crazyswarm1 中,一个常见的群体监控工具是 chooser.py(启用/禁用 CF,检查电池电压等)。但是,当群运行时,此工具不起作用。 相比之下,Crazyswarm2将允许常见的集群监控任务,而无需重新启动ROS节点或启动其他工具。

  • crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

目录

一、环境配置

1.1 基本配置

1.2 仿真配置

1.3 Crazyswarm2的文件更新

二、系统概述

2.1 crazyflie ROS 2 文件的概述

2.2 Crazyflie server

2.3 Crazyflie server支持的飞行指令服务

2.4 在线模拟功能

三、使用教程

3.1 Crazyflies.yaml 配置文件

3.2 Crazyswarm2 Python API

3.3新的演示功能:RVIZ可视化、SLAM、NAV、跟踪

3.3.1真实世界里飞行的RVIZ可视化

3.3.2SLAM影射

3.3.3导航NAV2

3.3.4 跟踪非机器人物体


一、环境配置

首次安装参考官方文档安装说明即可,需要在以下环境安装,只支持ros2版本

Ubuntu

Python

ROS 2

20.04

3.7, 3.8

Galactic

22.04

3.10

Humble

1.1 基本配置

①ros的安装:文档中推荐使用ros官方文档,但是博主建议使用鱼香ros,一键安装

wget http://fishros.com/install -O fishros && . fishros

②安装完ros后还需要配置环境的依赖项,按照文件执行即可:(如果没装pip3会提示你,根据命令行安装即可)

sudo apt install libboost-program-options-dev libusb-1.0-0-dev
pip3 install rowan

此外,如果你计划使用CFlib后端,还需要配置以下环境:(可选,这里可能会卡顿,合理使用上网方法)

pip3 install cflib transforms3d
sudo apt-get install ros-*DISTRO*-tf-transformations  %这里的*DISTRO*是你的ros版本:如20.04为Galactic

③设置 ROS 2 工作区,安装crazyswarm2的代码,并安装motion_capture_tracking(运动捕捉系统的ROS包,这里可能会提醒你下载pip):

mkdir -p ros2_ws/src
cd ros2_ws/src
git clone https://github.com/IMRCLab/crazyswarm2 --recursive
git clone --branch ros2 --recursive https://github.com/IMRCLab/motion_capture_tracking.git

④ 编译你的工作区(这里可能会有warnig,可能是cmake版本问题,忽略即可)

cd ../
colcon build --symlink-install

 值得一提的是:symlink-install允许您编辑Python和配置文件,而无需每次都运行colcon build。


1.2 仿真配置

如果你需要在线仿真的话,你还需要执行以下的环境配置:

在ros2工作区外,下载crazyflie-firmware文件:

git clone --recursive https://github.com/bitcraze/crazyflie-firmware.git

进入crazyflie-firmware文件下,按照bitcraze网站构建python绑定:

sudo apt install swig  %如果已经安装过swig则不需要执行
make cf2_defconfig
make bindings_python
cd build
python3 setup.py install --user

 ③之后,确保可以在 python 路径中找到绑定(比如我安装在根目录下就执行:export PYTHONPATH=~/crazyfile-firmware/build:$PYTHONPATH):

export PYTHONPATH=<replace-with-path-to>/crazyflie-firmware/build:$PYTHONPATH

④在仿真环境中执行hello world例程检验是否安装完成:

step1:打开终端1,所有终端都要进入ROS 2工作区(cd ../ros2_ws)执行,然后执行launch.py:

. install/local_setup.bash
ros2 launch crazyflie launch.py backend:=sim

可以看到打开了rviz2的终端并有一架无人机等待命令: 

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

step2:打开终端2,先进入ROS 2工作区,再执行hello world仿真例程:

. install/local_setup.bash
ros2 run crazyflie_examples hello_world --ros-args -p use_sim_time:=True

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

可以看到无人机起飞一段距离并保持一段时间 这样表示仿真环境安装成功!!!


1.3 Crazyswarm2的文件更新

由于crazyswarm2还在保持更新中,如果你想要更新到最新的版本,可以利用下面命令对系统文件进行更新:

cd ros2_ws/src/crazyswarm2
git pull
git submodule sync
git submodule update --init --recursive
cd ../
colcon build --symlink-install

二、系统概述

2.1 crazyflie ROS 2 文件的概述

①基本的文件夹

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

  • crazyflie/:包含crazyflie服务器节点和crazyflies.yaml的软件包,chooser在此文件夹下。

  • crazyflie_py/:包含 python 库的软件包,该库环绕着 ROS 2 服务和与 crazyflie 服务器节点连接的主题。

  • crazyflie_examples/:包含使用 crazyflie ROS 2 软件包的示例的软件包。

  • crazyflie_interfaces/:包含 crazyflie ROS 2 项目的所有 msg 和 srv 的软件包。

② 配置文件

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

  • Crazyflies.yaml :设置与机器人相关的一切。

  • server.yaml :设置与服务器相关的所有内容。

  • motion_capture.yaml :动作捕捉包的配置。

  • teleop.yaml :遥控器的配置。


2.2 Crazyflie server

 crazyfile服务器将多个(官方称15架,实际上可以满足大概20架)无人机(左):crazyflies和一个或多个信号发射器(右):Crazyradio PA链接。

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

它有两个后端供您选择:

  • cpp:这是基于最低层的crazyflie-link-cpp。

  • cflib:这是基于crazyflie-lib-python,日志记录,参数和命令发送处理。

 根据查表可知,他们能够支持后端的功能不同:

Functionality

Cpp

CFlib

Sim

Parameters

Yes

Yes

No

Logging

  • default: pose

Yes

Yes

No

  • default: scan

Yes

Yes

No

  • default: odom

No

Yes

No

  • custom

Yes

Yes

No

  • Add/Remove Srv

No

Yes

No

Broadcasts

Yes

No

n/a

Manual control

  • cmd_full_state

Yes

No

Yes

  • cmd_position

Yes

No

No

  • cmd_hover

No

Yes

No

High-level control

  • takeoff/land

Yes

Yes

Yes

  • go_to

Yes

Yes

Yes

  • upload/start traj

Yes

No

Yes

Positioning System

  • Motion Capture

Yes

Yes

No

  • Flow Deck

Yes

Yes

No

  • LightHouse

Yes

Yes

No

  • LPS

Yes

Yes

No

2.3 Crazyflie server支持的飞行指令服务

它处理与Crazyflies的几个低级通信方面:

  • 参数转 ROS 2 参数处理:接收来自 Crazyflie 的参数 ToC,将其转换为 ROS 2 参数,并根据 crazyflies.yaml 输入设置 CF2 参数。

  • 记录到 ROS 2 主题处理:服务器在 crazyflie 中为数据流设置日志块,并将收到的变量转换为 ROS 2 topic,运行时日志块启用目前仅在服务器的 CFLIB 后端受支持

  • 运行时配置:当服务器与Crazyflies连接时,可以在运行时配置参数和日志记录。请检查使用情况。

设置的几项高级指令(这些功能crazyswarm1也支持):

  • 起飞/着陆/GoTo:使用单个服务命令和给定的高度或坐标,您可以使连接的疯狂苍蝇起飞,前往某个位置并降落。

  • 上传/开始轨迹:您可以上传预定义的轨迹并指示疯狂苍蝇是否需要开始飞行。

  • 紧急情况 :在出现问题时关闭电机。

  • /all 或 /cf2 :服务设置为所有疯狂的苍蝇响应,或者每个单独的疯狂苍蝇,取决于前缀。

2.4 在线模拟功能

模拟器使用Crazyflie固件作为软件在环(SIL)。它提供与服务器相同的ROS接口,因此可以与C++或Python用户代码一起使用。

目前,所需的设定值在 rviz2 中可视化(请参阅用法)。但是,该代码也准备在未来支持基于物理的仿真。

ROS API 的任何使用,包括高级 Python 脚本,都可以在执行前可视化。机器人的初始位置和数量取自crazyflies.yaml配置文件。 仿真使用固件代码作为软件在环,并可以选择包括机器人动力学。 模拟的配置(物理模拟器、控制器等)可以在 server.yaml 中更改。

相关案例在本篇文章的1.2仿真配置的最后给出了例子。

三、使用教程

首先要在每个终端链接ROS2工作区:

. install/local_setup.bash

3.1 Crazyflies.yaml 配置文件

  • Crazyflies.yaml :①设置与机器人相关的一切,无论是仿真还是实飞都涉及该文件配置。每个无人机都应该有一个唯一的URI,可以在Bitcraze的CFclient中进行更改。 ②包含不同的robot_types,以指示每个平台之间的差异。③yaml 文件还包含一个“all”字段,供您想要为所有连接的疯蝇启用参数或日志记录。

  • robots:
        cf231:
            enabled: true
            uri: radio://0/80/2M/E7E7E7E7E7
            initial_position: [0, 0, 0]
            type: cf21  # see robot_types
    
        cf5:
            enabled: false
            uri: radio://0/80/2M/E7E7E7E705
            initial_position: [0, -0.5, 0]
            type: cf21  # see robot_types
    
    
    robot_types:
        cf21:
            motion_capture:
                enabled: true
                # only if enabled; see motion_capture.yaml
                marker: default_single_marker
                dynamics: default
            big_quad: false
            battery:
                voltage_warning: 3.8  # V
                voltage_critical: 3.7 # V
    
        cf21_mocap_deck:
            motion_capture:
                enabled: true
                # only if enabled; see motion_capture.yaml
                marker: mocap_deck
                dynamics: default
            big_quad: false
            battery:
                voltage_warning: 3.8  # V
                voltage_critical: 3.7 # V
    
    
    all:
        firmware_logging:
            enabled: false
            default_topics:
                pose:
                frequency: 10 # Hz
            #custom_topics:
            #  topic_name1:
            #    frequency: 10 # Hz
            #    vars: ["stateEstimateZ.x", "stateEstimateZ.y", "stateEstimateZ.z", "pm.vbat"]
            #  topic_name2:
            #    frequency: 1 # Hz
            #    vars: ["stabilizer.roll", "stabilizer.pitch", "stabilizer.yaw"]
        firmware_params:
            commander:
                enHighLevel: 1
            stabilizer:
                estimator: 2 # 1: complementary, 2: kalman
                controller: 2 # 1: PID, 2: mellinger

3.2 Crazyswarm2 Python API

相较于crazyswarm1的python api,主要有以下部分,其中画删除线部分的API在crazyfile.py中被注释掉了。具体含义参考可以参考Crazyswarm1的Python API Referencehttps://crazyswarm.readthedocs.io/en/latest/api.html

- setGroupMask(groupMask)

- enableCollisionAvoidance(others, ellipsoidRadii)

- disableCollisionAvoidance()

- takeoff(targetHeight, duration, groupMask=0)

- land(targetHeight, duration, groupMask=0)

- stop(groupMask=0)

- goTo(goal, yaw, duration, relative=False, groupMask=0)

- uploadTrajectory(trajectoryId, pieceOffset, trajectory)

- startTrajectory(trajectoryId, timescale=1.0, reverse=False, relative=True, groupMask=0)

- notifySetpointsStop(remainValidMillisecs=100, groupMask=0)

- position()

- getParam(name)

- setParam(name, value)

- setParams(params)

- cmdFullState(pos, vel, acc, yaw, omega)

- cmdVelocityWorld(vel, yawRate)

- cmdStop()

- cmdVel(roll, pitch, yawrate, thrust)

- cmdPosition(pos, yaw=0)

- setLEDColor(r, g, b)

 但是在crazyswarm2的讨论区中,有人说可以将已经注释的函数继续使用,继续设置参数即可,这一块我不是很理解:

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

3.3新的演示功能:RVIZ可视化、SLAM、NAV、跟踪

3.3.1真实世界里飞行的RVIZ可视化

 ①首先保障crazyflie.yaml中,确保添加或取消注释需要和不需要的飞机,以及all选项。

②在第一个终端中,启动服务器(如果需要 odom 主题,请使用 backend:=cflib)

ros2 launch crazyflie launch.py

③在第二个终端执行

rviz2

 ④然后将“fixed frame”设置为“world”并添加TF插件。然后在“TF”中,选中“show names’”复选框。 crazyfile的名字应该与它们的估计位置一起出现。

此 RVIZ2 可视化可以针对默认主题完成:

  • “pose”: '/cf1/pose/' 变换和姿势

  • 'odom': '/cf1/odom/' Odometry

  • “scan”: “/cf1/scan” Scan

这里是五架无人机在真实的世界里飞行的截图和rviz的可视化。

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

3.3.2SLAM影射

 这一部分需要硬件支持,包括 一个光学导航传感器 Flow deck 和激光测距传感器 Multi-ranger :

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

 还需要安装 slam 工具箱,并打开crazyflie 服务器和速度命令处理程序,通过遥控实现建图:

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

3.3.3导航NAV2

需要安装安装 Navigation2 启动包,在RVIZ2中设置目标实现导航避障:

crazyflie链接,crazyswarm无人机群智实验平台,学习,无人机,算法,机器人

3.3.4 跟踪非机器人物体

在某些情况下,向机器人提供运动捕捉空间中刚体的位置或姿势可能很有用。 例如,考虑在需要知道的固件上实现的避免碰撞算法 障碍物的位置。在这种情况下,可以在crazyflies.yaml中定义“虚拟”机器人。文章来源地址https://www.toymoban.com/news/detail-835704.html

robots:
    obstacle:
        enabled: true
        initial_position: [0, -0.5, 0]
        type: marker  # see robot_types
        id: 255

robot_types:
    # Just a marker to track, not a robot to connect to
    marker:
        connection: none
        motion_capture:
            enabled: true
            marker: default_single_marker
            dynamics: default

到了这里,关于【Crazyswarm2】环境配置、系统概述和使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux操作系统安装配置GO环境的详细教程】

    Go官方环境地址 官方建议放在 /home/go 下,创建三个目录:bin(编译后可的执行文件的存放路径)、pkg(编译包时,生成的.a文件的存放路径)、src(源码路径,一般我们的工程就创建在src下面) 编辑文件 文件最下方添加如下的配置: 出现的问题:bash: /usr/local/jdk/bin/java: /lib/l

    2023年04月15日
    浏览(45)
  • 软件测试|Windows系统配置pytest+allure环境教程

    前言 allure可以输出非常精美的测试报告,也可以和pytest进行完美结合,不仅可以渲染页面,还可以控制用例的执行。本文我们将介绍Windows系统中如何配置allure环境。 第一步:配置Java环境 因为 allure 的运行依赖于Java环境,所以我们需要先配置好Java环境, allure 需要的Java环境

    2024年02月01日
    浏览(33)
  • Linux系统配置Node.js环境详细教程(图文讲解)

    前言:在使用Jenkins部署Vue项目的时候,如果没有安装Node.js环境的话,Jenkins会无法对Vue项目进行构建,所以本期出了一篇关于在Linux系统如何配置Node.js环境的讲解,以博客的方式记录一下我详细的配置流程和踩过的坑,特此分享! 博主的其他部署教程: 1、Jenkins部署前后端分

    2024年02月11日
    浏览(40)
  • 【MySQL系统学习专栏】- MySQL安装及环境配置详细教程

    本篇介绍的安装版本为最新的MySQL8.0.31,采用的是ZIP安装的方式,所以包括了安装后的具体配置,详细信息请各位读者慢慢阅读正文吧   我们安装任何东西,都要选择正版、官网途径,一些第三方网站捆版了很多流氓软件,无脑下载的话到时候卸载起来很麻烦 MySQL官网: http

    2024年02月04日
    浏览(41)
  • 原神服务端搭建架设教程win系统(附客户端+服务端+环境配置)

    大家好,我是艾西原神一款开放世界冒险3D游戏以七种元素(分别为风、雷、岩、火、水、草、冰)交汇的幻想世界“提瓦特”创造的游戏世界,以角色扮演的RPG游戏还是有非常多的玩家热爱,以二次元以及那卡哇伊的画风不管是小哥哥还是小姐姐都深受喜爱。   游戏总体分

    2024年02月12日
    浏览(26)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(63)
  • PyCharm 开发环境搭建指南:安装、配置及基础使用教程

    数据来源 Pycharm集成开发工具(DE),是当下全球Pthn开发者, 使用最频繁的工具软件 。 绝大多数的 Python程序,都是在 Pycharm工具内完成的开发。 Pycharm工具下载 首先,我们先下载并安装它:打开网站:下载PyCharm:JetBrains为专业开发者提供的Python IDE  迅雷下载: https://download.

    2024年04月17日
    浏览(52)
  • Windows 系统从零配置 Python 环境,安装CUDA、CUDNN、PyTorch 详细教程

    进入anaconda官网:https://www.anaconda.com/ 点击 download 下载文件,我这里是 Anaconda3-2022.10-Windows-x86_64.exe (后续更新版本exe文件会有差别) 下载后打开 .exe 文件下载 anaconda: 选择安装路径(用默认的路径也可以): 这里两个都选: 然后安装就可以了。 打开 cmd,输入 conda(如果是

    2024年02月03日
    浏览(83)
  • 【图像分割】Meta分割一切(SAM)模型环境配置和使用教程

    注意: python=3.8 , pytorch=1.7, torchvision=0.8 Feel free to ask any question. 遇到问题欢迎评论区讨论. 官方教程: (1)pip: 有可能出现错误,需要配置好Git。 (2)本地安装: 有可能出现错误,需要配置好Git。 (3)手动下载+手动本地安装:  zip文件: 解压后运行:  matplotlib 3.7.1和

    2023年04月12日
    浏览(38)
  • 使用VScode编写C语言程序 环境安装配置 保姆级教程

    Visual Studio Code可通过安装插件来支持C++、C#、Python、PHP等语言,使用的工程师越来越多,本文介绍如何使用VS Code进行C语言的编译与调试 目录 一 vsCode配置C/C++环境 1. vsCode下载和安装 2. 安装vsCode 二 MinGW编译器下载和配置 1. 下载编译器MinGW并解压  2. 将MinGW添加至环境变量 3

    2024年02月04日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包