matlab练习程序(可视化旋转角)

比如我们拿到了一组imu的原始加速度和角速度数据。

通过卡尔曼或互补滤波得到了三个旋转角,想要可视化一下。

可以用下面这种方法,转成旋转矩阵后简单组合一下即可。

matlab代码如下:

clear all;close all;clc;

ang = load('ang.txt');

roll = ang(:,1);
pitch = ang(:,2);
yaw  = ang(:,3);

figure(1);
plot(roll,'r');
hold on;
plot(pitch,'g');
plot(yaw,'b');

for i=1:5:length(ang)
    eul = [roll(i) pitch(i) yaw(i)];
    rotmXYZ = eul2rotm(eul,'XYZ');

    x=rotmXYZ(1,:);
    y=rotmXYZ(2,:);
    z=rotmXYZ(3,:);

    figure(2);
    plot3( ...
        [0,x(1)],[0,x(2)],[0,x(3)],'r',...
        [0,y(1)],[0,y(2)],[0,y(3)],'g',...
        [0,z(1)],[0,z(2)],[0,z(3)],'b');
    axis([-1 1 -1 1 -1 1]);
    grid on;

    % F=getframe(gcf);
    % I=frame2im(F);
    % [I,map]=rgb2ind(I,256); 
    % if i == 1
    %     imwrite(I,map,'test.gif','gif','Loopcount',inf,'DelayTime',0.05);
    % else
    %     imwrite(I,map,'test.gif','gif','WriteMode','append','DelayTime',0.05);    
    % end

end

结果如下:

 

测试数据点击这里

posted @ 2023-10-21 17:29  Dsp Tian  阅读(90)  评论(0编辑  收藏  举报