日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...

發(fā)布時(shí)間:2024/9/27 循环神经网络 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、有啥用

這里用的是LIS3DH三軸加速計(jì),輸出為X、Y、Z軸的加速度,通過(guò)串口連接電腦,電腦里運(yùn)行matlab腳本通過(guò)串口實(shí)時(shí)獲取數(shù)據(jù)并做可視化顯示。

這里雖然是針對(duì)LIS3DH的,其實(shí)稍作修改即可適用其他型號(hào)的運(yùn)動(dòng)傳感器,如:MPU6050,甚至是其他格式的串口數(shù)據(jù)。

二、具體分析

首先通過(guò)串口傳來(lái)的數(shù)據(jù)格式為:6位X軸加速計(jì)整數(shù)+空格+6位Y軸+空格+6位Z軸+換行

printf("%6d %6d %6d\r\n", data.AXIS_X/16, data.AXIS_Y/16, data.AXIS_Z/16);

那么matlab如何讀取串口并對(duì)其數(shù)據(jù)進(jìn)行可視化展示的呢?

serial.m

1 %http://blog.csdn.net/qwertyuj/article/details/12108155%

2 clc;3

4 globalt;5 globalx;6 global ii;%數(shù)組下標(biāo)7

8 global m_x;%3軸加速度9 globalm_y;10 globalm_z;11

12 global d_a;%差分13

14 t = [0];15 ii = 0;16 x = -100;17

18 m_x = [0];19 m_y = [0];20 m_z = [0];21 d_a = [0];22

23 subplot(1,2,1);%將x,y,z軸加速度圖像繪制在整個(gè)1X2界面中的第1格

24 p = plot(t,m_x,t,m_y,t,m_z,'EraseMode','background','MarkerSize',5);%初始化圖像,圖像中有3條線(t,m_x),(t,m_y),(t,m_z)

25 axis([x-200 x+200 -1600 1600]);%設(shè)置顯示窗口,前兩個(gè)是x軸的最小、最大極限;后兩個(gè)是y軸最小、最大極限

26 grid on;%繪制網(wǎng)格(如果不加這句就不繪制網(wǎng)格)27 subplot(1,2,2);28 q = plot(t,d_a,'EraseMode','background','MarkerSize',5);%同理,這里只有一條線29 axis([x-200 x+200 -1600 1600]);30 grid on;31

32 %%

33

34 try

35 s=serial('com5');36 catch

37 error('cant serial');38 end

39 set(s,'BaudRate', 38400,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');%設(shè)置串口屬性等40 s.BytesAvailableFcnMode = 'terminator';41 s.BytesAvailableFcn = {@callback,p,q};%設(shè)置串口回調(diào)函數(shù),串口有數(shù)據(jù)傳輸過(guò)來(lái)就會(huì)轉(zhuǎn)到回調(diào)函數(shù),p、q為參數(shù)42

43 fopen(s);%打開(kāi)串口44

45 pause;%按任一按鍵結(jié)束46 fclose(s);47 delete(s);48 clear s49 close all;50 clear all;

該文件是主文件,首先聲明各種全局變量(matlab全局變量其他函數(shù)使用時(shí)需要用global聲明),然后對(duì)這些全局變量初始化,接著實(shí)例化兩個(gè)繪圖窗口(第一個(gè)窗口3條線——分別是x、y、z三軸的加速度隨時(shí)間變化曲線;第二個(gè)窗口一條線——是差分隨時(shí)間變化曲線)。34行之后為設(shè)置串口、打開(kāi)串口,接下來(lái)動(dòng)態(tài)繪圖所有操作均在回調(diào)函數(shù)中進(jìn)行了。

來(lái)看看回調(diào)函數(shù)

callback.m

1 %%

2 function callback(s,BytesAvailable,p,q)3

4 global t; %引用全局變量(4-12行)

5 global x;

6 global ii;%數(shù)組下標(biāo)

7

8 global m_x;%3軸加速度

9 global m_y;

10 global m_z;

11

12 global d_a;%差分13

14 out = fscanf(s);%讀取串口數(shù)據(jù),轉(zhuǎn)換為num數(shù)據(jù)存儲(chǔ)在data中

15 data = str2num(out);16

17 t = [t ii];%數(shù)組插入最新數(shù)據(jù)在最后面

18 m_x = [m_x data(1,1)];

19 m_y = [m_y data(1,2)];

20 m_z = [m_z data(1,3)];21

22 d_a = [d_a abs(m_x(1,ii+2)-m_x(1,ii+1))+abs(m_y(1,ii+2)-m_y(1,ii+1))+abs(m_z(1,ii+2)-m_z(1,ii+1))];23

24

25 set(p(1), 'XData',t,'YData',m_x(1,:));%用新數(shù)據(jù)更新圖

26 set(p(2), 'XData',t,'YData',m_y(1,:));

27 set(p(3), 'XData',t,'YData',m_z(1,:));

28

29 set(q(1), 'XData',t,'YData',d_a(1,:));30

31 drawnow %重新繪制圖,并移動(dòng)兩個(gè)圖的窗口,使之呈現(xiàn)運(yùn)動(dòng)效果

32 x = x + 1;

33 subplot(1,2,1)

34 axis([x-200 x+200 -1600 1600]);

35 subplot(1,2,2)

36 axis([x-200 x+200 -1600 1600]);

37 ii=ii+1;38 end

每次串口有數(shù)據(jù)均會(huì)觸發(fā)回調(diào)函數(shù)。在回調(diào)函數(shù)中,首選獲取串口流,并將串口數(shù)據(jù)流轉(zhuǎn)換為data數(shù)組。接著用讀取的新的data數(shù)據(jù)插入到老的數(shù)組(17~22行)。第25~29行則是用新的3+1個(gè)曲線的數(shù)據(jù)更新圖。第31行之后的負(fù)責(zé)移動(dòng)視窗,使之呈現(xiàn)出數(shù)據(jù)在滾動(dòng)的效果。

三、最終效果

四、樓主講話

好長(zhǎng)時(shí)間沒(méi)寫(xiě)文章了!就拿這個(gè)水水的小工具作為開(kāi)篇~

總結(jié)

以上是生活随笔為你收集整理的三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。