一篇讀懂(matlab利用循環(huán)給矩陣賦值)matlab中用for循環(huán)求矩陣各行元素之和,Matlab可視化 PX4日志數(shù)據(jù) & 自定義消息(rosbag),飛機影院,
目錄:
1.matlab用for循環(huán)運算矩陣
2.matlabfor循環(huán)結果用矩陣
3.matlab中用for循環(huán)求矩陣各行元素之和
4.matlab中用for循環(huán)構造矩陣
5.matlab循環(huán)語句輸入矩陣
6.matlab用for循環(huán)求矩陣平均值
7.matlab的for循環(huán)矩陣
8.matlab循環(huán)語句for矩陣
9.matlab用for循環(huán)求矩陣乘法
10.matlab用for循環(huán)定義矩陣
1.matlab用for循環(huán)運算矩陣
簡述? 最近需要讀取rosbag里面的數(shù)據(jù),以及PX4日志中的數(shù)據(jù),并將二者繪制到同一張圖上進行比較嘗試多種途徑后,最終使用matlab讀取rosbag中的數(shù)據(jù)、讀取.csv文件進行繪圖離騷翻譯及原文其中,matlab讀取的。
2.matlabfor循環(huán)結果用矩陣
rosbag數(shù)據(jù)為自定義消息,需要另外安裝一個插件后再導入matlab中(不然無法正常讀取數(shù)據(jù));將qgroundcontrol導出的px4日志文件.ulog轉換為.csv文件后便可讀取 參考圖片如下:。
3.matlab中用for循環(huán)求矩陣各行元素之和
雷達探測距離的數(shù)據(jù)由rosbag中讀取,飛控飛行軌跡由.csv文件中讀取。
4.matlab中用for循環(huán)構造矩陣
完整程序如下,下面的【程序中涉及的一些文件無法提供】(僅供參考):closeallclearclc%% 讀取bag包數(shù)據(jù)并顯示 % f = fullfile(‘dir1’, 離騷翻譯及原文‘dir2’, …, ‘filename’)
5.matlab循環(huán)語句輸入矩陣
% fullfile構成地址字符串 fullfile(文件所在路徑,bag文件)filepath=fullfile(U:\Matlab_uart\bagfiles,2022-11-24-14-35-04.bag
6.matlab用for循環(huán)求矩陣平均值
);% 加載bag文件bag=rosbag(filepath);% 選取指定的 topic {serial_msgs/fromsystem} 這個是我的自定義消息odom_message=select
7.matlab的for循環(huán)矩陣
(bag,MessageType,seri離騷翻譯及原文al_msgs/fromsystem);% 提取指定 topic 下的所有信息data=readMessages(odom_message);[m,n]=size
8.matlab循環(huán)語句for矩陣
(data);data_num=m;% 1743 數(shù)據(jù)量大小,需要根據(jù)bag文件的數(shù)據(jù)數(shù)量進行更改position=zeros(data_num,1);fori=1:data_num% 保存位置信息%position(i,1) = data{i,1}.Pose.Pose.Position.X;
9.matlab用for循環(huán)求矩陣乘法
position(i,1)=data{i,1}.TrackTarget(離騷翻譯及原文1,1).RadialDis;end%figure(1)subplot(2,2,1)plot(position(:,1))% position x
10.matlab用for循環(huán)定義矩陣
%% 讀取px4_log=importdata(U:\Matlab_uart\log_csv\log_uart_1_vehicle_local_position_0.csv);data_log=px4_log
.data;[m1,n1]=size(data_log);local_pos=zeros(m1,1);fori=1:m1% 保存位置信息local_pos(i,1)=data_log(i,6)*(-1);
en離騷翻譯及原文d%figure(2)subplot(2,2,2)plot(local_pos(:,1))% position x% 127 127+220 = 347% 雷達位置 距離 無人機起飛點約 350m
local_pos=350-local_pos;subplot(2,2,3)plot(position(:,1)),holdon,plot(local_pos(:,1))% 兩個峰值之間的差距 485 940
local_=zeros(1800,1);lidar_=zeros(1800,1);% 兩個峰值之間的時間戳差距: 485 940% 雷達消息發(fā)布頻率 5hz, px4的log消息頻率應該為 10離騷翻譯及原文hz
fori=1:1407% 保存位置信息%position(i,1) = data{i,1}.Pose.Pose.Position.X;local_(i,1)=local_pos(2*i,1);endlidar_
=position;% 時間戳上相差約 320local_=[zeros(320,1);local_];subplot(2,2,4)plot(lidar_(:,1)),holdon,plot(local_
(:,1));legend(雷達探測距離,飛控飛行軌跡),title(X方向的位移);figureplot(lidar_(:,1)),holdon,plot(local_(:,1))離騷翻譯及原文;legend(雷達探測距離
,飛控飛行軌跡),title(X方向的位移);1 Matlab讀取Rosbag1.1 讀取rosbag如果只是從rosbag中讀取標準的ros消息,無需裝插件,流程可以參考下面的程序使用matlab讀取rosbag中的里程計數(shù)據(jù)的實例可以參考下面這篇文章末尾,有詳細的介紹。
Poao:里程計 FAST_LIO & Rosbag Example (GitHub)53 贊同 · 18 評論文章%% 讀取bag包數(shù)據(jù)并顯示 % f = fullfile(‘dir1’, ‘dir2’, …, ‘filename’)
% fullfile構成地址字符串 fullfile(文件所在離騷翻譯及原文路徑,bag文件)filepath=fullfile(U:\Matlab_uart\bagfiles,2022-11-24-14-35-04.bag
);% 加載bag文件bag=rosbag(filepath);% 選取指定的 topic {serial_msgs/fromsystem} 這個是我的自定義消息odom_message=select
(bag,MessageType,serial_msgs/fromsystem);% 提取指定 topic 下的所有信息data=readMessages(odom_message);[m,n]=size
(data);data_num=m;% 1743離騷翻譯及原文 數(shù)據(jù)量大小,需要根據(jù)bag文件的數(shù)據(jù)數(shù)量進行更改position=zeros(data_num,1);fori=1:data_num% 保存位置信息%position(i,1) = data{i,1}.Pose.Pose.Position.X;
position(i,1)=data{i,1}.TrackTarget(1,1).RadialDis;endfigure(1)plot(position(:,1))% position x1.2 matlab插件
使用matlab讀取包含自定義消息的rosbag時會報錯,因為matlab無法識別對應的消息類型為此,需要安裝一個插件ROS Toolbox 離騷翻譯及原文interface for ROS Custom Messages。
,下載之后使用matlab打開之后就會進行安裝(會要求登錄matlab賬號)matlab-自定義ros消息插件.zip - 藍奏云?wwis.lanzoue.com/ieyzS0hhgsqf安裝完成后,。
還需將rosbag中需讀取的自定義消息導入到matlab當中去我們需要準備完整的自定義消息功能包(ros下能夠正常運行的),然后將該功能包復制到某個路徑下,再使用matlab添加該路徑下的自定義消息 1)打開matlab命令行,輸入folderpath =
"ros自定義消息功能包所在文件夾路徑"我: folderpath ="離騷翻譯及原文U:\Win10_share\Backup_file\Uart\msg"
2)在命令行繼續(xù)輸入:rosgenmsg(folderpath)3)第二步成功之后,還需要根據(jù)matlab輸出的提示信息進行操作Checking subfolder "serial_msgs" for custom messages. Building custom message files for the following packages: serial_msgs Generating MATLAB classes for message packages in 離騷翻譯及原文U:\Win10_share\Backup_file\Uart\msg\matlab_gen\jar. Loading file serial_msgs-1.1.5.jar. Generating MATLAB code for serial_msgs/Hlv_point message type. Generating MATLAB code for serial_msgs/Iso_point message type. Generating MATLAB code for serial_msgs/Track_target m離騷翻譯及原文essage type. Generating MATLAB code for serial_msgs/fromsystem message type. Generating MATLAB code for serial_msgs/tosystem message type. To use the custom messages, follow these steps: # 直接點擊下面藍色的 javaclasspath.txt 進行編輯,并復制粘貼后面的路徑并保存(根據(jù)自己的來) 1. Edit javacla離騷翻譯及原文sspath.txt, add the following file locations as new lines, and save the file: U:\Win10_share\Backup_file\Uart\msg\matlab_gen\jar\serial_msgs-1.1.5.jar 2. Add the custom message folder to the MATLAB path by executing: addpath(U:\Win10_share\Backup_file\Uart\msg\matlab_gen\m離騷翻譯及原文sggen) savepath 3. Restart MATLAB and verify that you can use the custom messages. Type "rosmsg list" and ensure that the output contains the generated custom message types.
4)重啟matlab,命令行輸入rosmsg list,應該就可以查看到我的自定義消息類型咯(如果前面的自定義消息功能包不對,看不見新增的消息類型)2 Matlab讀取csv? 我獲取到的離騷翻譯及原文PX4的日志文件為.ulog格式,我們可以在Ubuntu下使用命令將其轉換為.csv文件格式,
一個.ulog將會生成很多個.csv文件.csv文件可以直接使用excel打開cd ~/[your_ulog_file_dir]# 一個.ulog將會生成很多個.csv文件 ulog2csv your_ulog_file.ulog。
其中xxxx_vehicle_gps_position_0.csv文件存儲了gps數(shù)據(jù),xxxx1_vehicle_local_position_0.csv文件存儲了無人機本地坐標系下的運動數(shù)據(jù)PX4中GPS數(shù)據(jù)。
為: vehicle_gps_positio離騷翻譯及原文n/lat、vehicle_gps_position/lon,分別爲緯度(latitude)和經度(longitude)我們除了使用程序讀取數(shù)據(jù)外,依舊可以借助matlab右側的工作區(qū),查看導入的數(shù)據(jù)的具體結構與內容
%% 讀取 .csv文件px4_log=importdata(U:\Matlab_uart\log_csv\log_uart_1_vehicle_local_position_0.csv);% 獲取.csv文件的數(shù)據(jù)。
data_log=px4_log.data;[m1,n1]=size(data_log);local_pos=zeros(m1,1);fori=1:m1% 保存位置信離騷翻譯及原文息local_pos(i,1)=data_log
(i,6)*(-1);endfigure(1)plot(local_pos(:,1))% position x3 PX4日志可視化在拿到px4的日志文件時,直接使用一些現(xiàn)成的工具進行數(shù)據(jù)繪圖更加便捷這里介紹幾個常用的px4日志可視化工具。
我個人推薦 flight review+plotjuggler 配合起來使用3.1 Flight reviewhttps://logs.px4.io/upload?logs.px4.io/upload這是
PX4官方提供的一個在線日志文件可視化工具。上傳的文件將會保存到云端,如果介意數(shù)據(jù)泄露等風險,不建議使用。該工離騷翻譯及原文具將會呈現(xiàn)一個gps航跡圖以及一系列的主要數(shù)據(jù)圖標。
其他軟件無法繪制該圖3.2 PlotJugglerhttps://github.com/facontidavide/PlotJuggler?github.com/facontidavide/PlotJuggler
plotjuggler安裝與使用都很方便,將需可視化的數(shù)據(jù)拖拽到右側網(wǎng)格即可可視化rosbag和.ulog他都可以讀?。?!# 安裝(也可以參考github上的其他安裝方式) sudo snap install plotjuggler 。
# 使用 plotjuggler
3.3 flight離騷翻譯及原文Plot個人感覺這個軟件用起來沒有plotjuggler方便,安裝起來也有一些步驟。
安裝步驟如下:下載flightPlot源碼下載openjdk 切換java版本重啟安裝flightPlot# 1) 下載flightPlot源碼 git clone --recursive https://github.com/PX4/FlightPlot.git
# 2.1) 切換java版本 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get ins離騷翻譯及原文tall openjdk-8-jdk
# 2.2)切換java版本 # 此時需要選擇 java-8 對應的序,不然后面flightPlot安裝后也無法使用 sudo update-alternatives --config java
# 3) 重啟電腦 reboot # 4) 安裝FlightPlotcd FlightPlot # 編譯生成FlightPlot.deb文件# 如果前面的java沒選對,修改為java8之后需要先 ant clean,再 ant gen_deb
ant gen_deb sudo dpkg 離騷翻譯及原文-i out/production/FlightPlot.deb安裝完成后,點擊“show applications”即可找到。
4 rosbag可視化rosbag的可視化也可以使用前面介紹的 flightPlot 這里另外介紹一個自帶的工具,rqt_bagrqt_bag可視化bag文件中的數(shù)據(jù)# 輸入命令打開 ros_bag 。
# ctrl+c結束進程打開可視化界面后,在空白區(qū)域右鍵選擇"view (by topic)",然后選擇需要可視化的ros話題->Plot,右側將會出現(xiàn)繪圖區(qū)域與數(shù)據(jù)選擇區(qū)域。
勾選后便可以繪圖。