Crazyflie支持MATLABSimulink控制 基于NOKOV度量动捕系统实现

一、动捕软件VRPN配置

以动捕软件版本XINGYING 4.2.0.5495为例,其他版本同理。打开动捕软件,连接上镜头。单击菜单栏下的视图->数据广播。在数据广播中的VRPN流下,将单位下拉选择米,类型勾选刚体并启用VRPN。
在这里插入图片描述

图 1-打开数据广播视图
在这里插入图片描述

图 2-动捕中vrpn配置
单击菜单栏下的视图->设备打开设备视图。先点击停止播放按键,在高级框中将动捕帧率修改为120。
在这里插入图片描述

图 3-打开设备视图
在这里插入图片描述

图 4-修改动捕帧率

二、MATLAB/Simulink平台配置

要求ROS 版本:galactic,Ubuntu 版本:20.04。crazyflie固件版本2024.10以上,若版本过低自行更新版本(cfclient使用)。在windows主机上,Matlab版本建议2020a以上,本实验使用2022a;自行安装python、cmake和Microsoft Visual C++,注意要与matlab的版本对应。

(一)ubuntu环境配置

开启终端,使用以下命令将环境配置写入.bashrc中。ROS_DOMAIN_ID的取值范围为0~255。
echo “export RMW_IMPLEMENTATION=rmw_fastrtps_cpp” >> ~/.bashrc
echo “export ROS_DOMAIN_ID=26” >> ~/.bashrc

(二)Matlab/Simulink环境配置

1.先将flightmaster2的matlab套件解压,使用matlab打开套件,flightmaster2.slx一定要在当前文件夹。
在这里插入图片描述

图 5-打开flightmaster2的matlab套件
2.在matlab终端上运行以下代码,选择编译器和编译语言。
mex -setup C++
在这里插入图片描述

图 6-选择编译语言
3.运行以下命令对自定义消息进行编译。
ros2genmsg(‘custom_msgs’);
在这里插入图片描述

图 7-编译自定义消息类型
4.双击flightmaster2.slx进入simulink模型。
在这里插入图片描述

图 8-打开flightmaster2的simulink程序
5.点击上方的仿真,在单击ROS Network。将Domain ID修改为与ubuntu一致,将RMW Implementation修改为rmw_fastrtps_cpp。
在这里插入图片描述

图 9-配置ROS2网络

三、基础飞行操作演示

(一)基础控制

在基础控制轮盘中实现了对无人机的基础控制,包括解锁、起飞、悬停、降落和急停服务,可对单个或多个无人机操作。
1.将三架crazyflie机头朝向x轴正方向,放置在场地中,在动捕创建刚体nokov1、nokov2和nokov3,骨骼朝向为x轴,如下图所示。
在这里插入图片描述

图 10-建立刚体
2.双击flightmaster2.slx打开simulink模型。

在这里插入图片描述
在这里插入图片描述

图 11-simulink模型
3.打开ubuntu,在flightmaster2中的flightmasters.yaml启用三架crazyflie。
在这里插入图片描述

图 12-启动三架crazyflie
4.开启一个终端,使用以下命令打开flightmaster2图形控制界面。
cd ~/FlightMaster2/
python fmclient.py
在这里插入图片描述

图 13-运行flightmaster2图形化界面
5.在图形化界面上选择RealMode并勾选RViz,再点击启动FlightSwarm。此时会运行flightmaster2的服务节点,rviz也会启动。
在这里插入图片描述

图 14-flightmaster2图形化界面
6.在matlab的simulink界面上,将集群demo轮盘和基础服务轮盘先拨至NO。再选择上方的仿真,单击运行按键。
在这里插入图片描述

图 15-将轮盘拨至No
在这里插入图片描述

图 16-运行simulink
先将基础服务轮盘拨至Takeoff,此时三架无人机会起飞至1米,再将轮盘拨至Hold,无人机会在当前位置保持悬停,再将轮盘拨至Land,三架无人机降落,最后将轮盘拨至No。
在这里插入图片描述

图 17-轮盘拨至takeoff
在这里插入图片描述

图 18-无人机起飞
在这里插入图片描述

图 19-rviz显示

(二)crazyflie单机绕方

1.一架crazyflie放入动捕场地中,机头朝向x轴,在动捕软件中建立刚体,名称为vehicle3,骨骼朝向x轴。
在这里插入图片描述

图 20-创建刚体
2.打开ubuntu,在flightmasters.yaml启用一架crazyflie,在flightmaster2图形控制界面上启动FlightSwarm。
在这里插入图片描述

图 21-启用一架crazyflie
在这里插入图片描述

图 22-启动FlightSwarm
3.在matlab的simulink界面上,将demo控制轮盘和基础服务轮盘先拨至NO。再选择上方的仿真,单击运行按键。
在这里插入图片描述

图 23-将轮盘拨至No
在这里插入图片描述

图 24-运行simulink
4.在demo控制轮盘下方,将VEHICLE3开关拨至on启用设备,此时启用设备的灯会变绿。
在这里插入图片描述

图 25-启用设备
5.将demo控制轮盘拨至crazyflie。此时vehicle3会先起飞然后绕方形。
在这里插入图片描述

图 26-轮盘拨至crazyflie
在这里插入图片描述

图 27-crazyflie绕方形
在这里插入图片描述

图 28-rviz显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913567.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913567.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913567.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 系统安装与使用 Claude Code 全攻略

Claude Code 作为一款高效的 AI 编程辅助工具,深受开发者青睐,但由于其本身不支持 Windows 文件系统,在 Windows 系统上使用需要借助 WSL(适用于 Linux 的 Windows 子系统)。下面为你详细介绍在 Windows 系统上安装和使…

如何用Python编程计算权重?

1. 加权平均中的权重计算(已知权重值) 如果已知各元素的权重,直接用权重乘以对应值后求和。 # 示例:计算加权平均分(权重之和为1) scores [80, 90, 70] # 各项分数 weights [0.3, 0.5, 0.2] # 对应权重…

WinUI3入门16:Order自定义排序

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

Java 面向对象三大特性详解:封装、继承与多态,掌握OOP核心思想

作为一名Java开发工程师,你一定知道,封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism) 是面向对象编程(Object-Oriented Programming, OOP)的三大…

WPS中配置MathType教程

项目场景:在WPS中使用MathType问题描述:MathPage.wll或MathType.dll文件找不到问题原因分析:在C盘wps中的startup中有mathpage.wll,但配置不可用而我的WPS安装在E盘,并且桌面图标启动路径也是E盘路径下的WPS路径,所以不…

基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理

1.模板设计模式:模板设计模式是一种常见的设计模式,主要作用是对 具体操作的 共有代码块进行提取,提升代码复用性。那么说道代码复用性,首先想到的是抽象类而不是接口。因为抽象类的本质就是为了代码复用,抽象类既可以…

对象的finalization机制Test1

Java语言提供了对象终止(finalization)机制来允许开发人员自定义对象被销毁之前的处理逻辑。当垃圾回收器发现没有引用指向一个对象时,通常接下来要做的就是垃圾回收,即清除该对象,而finalization机制使得在清除此对象之前,总会先…

RJ45 连接器(水晶头)的引脚定义

RJ45连接器核心定义 【】物理结构 8个金属触点(Pin 1至Pin 8)的透明塑料插头,带塑料卡榫。 引脚编号规则 卡榫朝下,金属触点面向自己时: 最左侧为 Pin 1 最右侧为 Pin 8 顺序:Pin 1 → Pin 2 → Pin 3 → P…

小架构step系列08:logback.xml的配置

1 概述 logback.xml配置文件的详细配置,很多地方都说得比较细,本文主要从几个重点来看一下原理,了解原理能够帮助确定哪些应该配置,以及如何配置。 logback.xml是为打印日志服务的,打印的内容一般打印到控制台(Conso…

STM32中SPI协议详解

前言 在嵌入式系统中,设备间的数据传输协议多种多样,SPI(Serial Peripheral Interface,串行外设接口)凭借其高速、全双工、易用性等特点,成为连接STM32与高速外设(如OLED屏、Flash芯片、AD转换器…

TypeScript 接口全解析:从基础到高级应用

TypeScript 接口全解析:从基础到高级应用在 TypeScript 中,接口是定义数据结构和行为规范的强大工具,它能够显著提升代码的可读性、可维护性和类型安全性。本文将全面讲解 TypeScript 接口的相关知识点,从基础语法到高级特性&…

主存(DRAM)是什么?

主存(DRAM)是什么? 主存(DRAM)详解 主存(Main Memory) 通常由 DRAM(Dynamic Random Access Memory,动态随机存取存储器) 构成,是计算机系统中用于…

Python 机器学习核心入门与实战进阶 Day 6 - 模型保存与加载(joblib / pickle)

✅ 今日目标 掌握如何将训练好的模型持久化保存到文件熟悉两种主流保存方式:joblib 和 pickle加载模型并应用于新数据预测实现完整的“训练 → 保存 → 加载 → 预测”流程为后续部署做准备(如 Flask、FastAPI)🧰 一、模型保存工具…

【SigNoz部署安装】Ubuntu环境部署SigNoz:Docker容器化监控的全流程指南

文章目录前言1.关于SigNoz2.本地部署SigNoz3.SigNoz简单使用4. 安装内网穿透5.配置SigNoz公网地址6. 配置固定公网地址前言 在分布式架构主导的现代运维体系中,系统性能监控正面临范式变革的关键转折。当微服务架构遭遇服务雪崩、无服务器架构出现冷启动延迟等复杂…

NV298NV312美光固态闪存NW639NW640

美光固态闪存技术全景解析:从NV298到NW640的深度探索近年来,美光科技凭借其在3D NAND闪存技术上的持续突破,推出了多款备受市场关注的固态硬盘产品。本文将从技术评测、产品对比、市场趋势、用户反馈及应用场景等多个维度,深入剖析…

2025.07.04【服务器】|使用万兆网卡提升服务器间互联速度,实现快速数据传输

文章目录1. **万兆网卡概述**2. **为什么选择万兆网卡**3. **万兆网卡配置与安装**3.1 **安装网卡**3.2 **安装驱动程序**3.3 **检查网卡状态**4. **配置网络接口**4.1 **Linux 系统配置**4.2 **Windows 系统配置**5. **优化性能**5.1 **使用多线程传输**5.2 **开启 TCP/UDP 窗…

光伏发电量精准估算,提升投资效益

在光伏产业规模化发展进程中,准确估算光伏发电量是提升项目投资效益的关键环节。科学的发电量预测不仅能为项目可行性研究提供依据,更能在电站全生命周期内优化运营策略,实现投资回报最大化。基于多维度数据整合与智能算法构建的精准预测体系…

Linux的互斥锁、Linux的POSIX信号量(二值、计数)、RTOS的二值信号量

锁和信号量最大的区别就是:锁严格要求 “谁占用谁释放”,而信号量允许 “一个任务 / 线程释放,另一个任务 / 线程获取”。 特性互斥锁(Mutex)POSIX 信号量(Semaphore)初始状态初始为 “锁定”(PTHREAD_MUTEX_INITIALIZER),需显式获取(pthread_mutex_lock)。初始值可…

基于Java+SpringBoot 协同过滤算法私人诊所管理系统

源码编号:S607源码名称:基于SpringBoot5的协同过滤算法的私人诊所管理系统用户类型:双角色,患者、医生、管理员数据库表数量:15 张表主要技术:Java、Vue、ElementUl 、SpringBoot、Maven运行环境&#xff1…

什么是DINO?

DINO 是一个由 Meta AI (当时的 Facebook AI) 在 2021 年提出的自监督学习框架,其全称是 “self-DIstillation with NO labels”,直译为“无标签的自我蒸馏”。这个名字精准地概括了它的核心思想。 DINO 的出现是一个里程碑,因为它首次有力地…