Crazyflie支持MATLAB/Simulink控制 基于NOKOV度量動捕系統實現

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 的出現是一個里程碑,因為它首次有力地…