mirror of
https://github.com/ME-561-W20-Quadcopter-Project/Quadcopter-Control.git
synced 2025-09-03 14:03:15 +00:00
Initial commit for visualization routine. TODO: Comments and explanations of usage.
This commit is contained in:
65
Animate_Drone.m
Normal file
65
Animate_Drone.m
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
%Setup
|
||||||
|
global Drone;
|
||||||
|
Drone.vertices = [0.5 0 0;
|
||||||
|
-0.5 0 0;
|
||||||
|
0 1 0];
|
||||||
|
Drone.faces = [1 2 3];
|
||||||
|
Drone.color = [0.6350 0.0780 0.1840];
|
||||||
|
Drone.rotation = [0 0 0];
|
||||||
|
Drone.position = [0 0 0];
|
||||||
|
|
||||||
|
%Import rotation and translation vectors
|
||||||
|
trans = zeros(3, 100);
|
||||||
|
rots = zeros(3, 100);
|
||||||
|
rots(3, :) = pi/6;
|
||||||
|
|
||||||
|
%Animation parameters
|
||||||
|
nframes = 100;
|
||||||
|
timestep = 0.05
|
||||||
|
time = 0;
|
||||||
|
|
||||||
|
%Animate
|
||||||
|
figure();
|
||||||
|
view(3);
|
||||||
|
axis([-10 10 -10 10 -10 10]);
|
||||||
|
xlabel("x");
|
||||||
|
ylabel("y");
|
||||||
|
zlabel("z");
|
||||||
|
|
||||||
|
for i = 1:nframes
|
||||||
|
move(trans(:, i), rots(:, i));
|
||||||
|
update;
|
||||||
|
time = time + timestep;
|
||||||
|
title(sprintf("t = %f", time));
|
||||||
|
pause(0.1);
|
||||||
|
end
|
||||||
|
|
||||||
|
function update
|
||||||
|
cla;
|
||||||
|
curr = getGlobalDrone;
|
||||||
|
patch("Faces", curr.faces, "Vertices", curr.vertices, 'FaceColor', 'blue');
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function move(trans, rots)
|
||||||
|
curr = getGlobalDrone;
|
||||||
|
%move first
|
||||||
|
curr.position = curr.position + trans;
|
||||||
|
curr.vertices = curr.vertices + trans;
|
||||||
|
%rotate
|
||||||
|
curr.rotation = curr.rotation + rots;
|
||||||
|
curr.vertices = ([cos(rots(1))*cos(rots(2)) cos(rots(1))*sin(rots(2))*sin(rots(3))-sin(rots(1))*cos(rots(3)) cos(rots(1))*sin(rots(2))*cos(rots(3))+sin(rots(1))*sin(rots(3));
|
||||||
|
sin(rots(1))*cos(rots(2)) sin(rots(1))*sin(rots(2))*sin(rots(3))+cos(rots(1))*cos(rots(3)) sin(rots(1))*sin(rots(2))*cos(rots(3))-cos(rots(1))*sin(rots(3));
|
||||||
|
-sin(rots(2)) cos(rots(2))*sin(rots(3)) cos(rots(2))*cos(rots(3))]*curr.vertices')';
|
||||||
|
setGlobalDrone(curr);
|
||||||
|
end
|
||||||
|
|
||||||
|
function setGlobalDrone(val)
|
||||||
|
global Drone
|
||||||
|
Drone = val;
|
||||||
|
end
|
||||||
|
|
||||||
|
function r = getGlobalDrone
|
||||||
|
global Drone
|
||||||
|
r = Drone;
|
||||||
|
end
|
Reference in New Issue
Block a user