Matlab - 以特定的速度移动点

时间:2016-05-15 08:02:11

标签: matlab oop object plot simulation

我正在使用OOP在matlab中进行模拟。我需要点从初始点移动到指定点,等待一点,然后飞回基地。作为参考,我正在使用的类是

classdef uavclass
    properties (Constant = true)
        maxVertClimb = 2;
        maxHorizSpeed = 5;
        sensorRange = 25;
        unloadingTime = 60;
        safeDistance = 5;
        chargingTime = 300;
        minCruiseAlt = 20;
        maxCruiseAlt = 70;
    end
    properties (Access = public, Constant = false)
        position@double vector = [];
        charge@double scalar = 100;
        destination@double vector = [];
    end

    methods
        function obj = uavclass(x,y,z)
            obj.position = [x,y,z];
        end

        function obj = changeCharge(obj,b)
            obj.position = b;
        end

        function obj = uavMoveTo(obj,destin)
            if obj.position(1) ~= destin(2) && obj.position(2) ~= destin(3)
                obj.position(1) = destin(2); 
                obj.position(2) = destin(3);
            end              
        end

        function obj = uavReturn(obj,destin)
            obj.position

        function obj = uavRise(obj)
            pause(2)
            obj.position(3) = 20;
        end

        function obj = uavLower(obj)
            pause(2)
            obj.position(3) = 0;
        end

    end
end

此刻我有一个循环,其中点将直接传送,等待,然后传送到下一个目的地,如下所示。

for t = 1:200
    pause(0.1)
    if t == times(1)
        uav1 = uav1.uavRise()
        uav1 = uav1.uavMoveTo(event1)
        uav1 = uav1.uavLower()
    end
    if t == times(6)
        uav1 = uav1.uavRise()
        uav1 = uav1.uavMoveTo(event6)
        uav1 = uav1.uavLower()
    end
    XY(:,1) = [uav1.position(1),uav2.position(1),uav3.position(1),uav4.position(1),...
    uav5.position(1),];
    XY(:,2) = [uav1.position(2),uav2.position(2),uav3.position(2),uav4.position(2),...
    uav5.position(2),];       
    set(UAVs, 'XData', XY(:,1), 'YData', XY(:,2));
end

XY是uavs的XY位置点的矩阵,在我用初始坐标(在循环之前定义)生成它们之后。

uav1 = uavclass(0,50,0);
uav2 = uavclass(50,0,0);
uav3 = uavclass(0,-50,0);
uav4 = uavclass(-50,0,0);
uav5 = uavclass(0,0,0);
XY = [];
XY(:,1) = [uav1.position(1),uav2.position(1),uav3.position(1),uav4.position(1),...
    uav5.position(1),];
XY(:,2) = [uav1.position(2),uav2.position(2),uav3.position(2),uav4.position(2),...
    uav5.position(2),];

set函数中绘制的对象UAV是

UAVs = plot(XY(:,1), XY(:,2),'Marker', '.','Color', 'r', 'LineStyle', 'none','MarkerSize', 8);

我需要做的是不是传送无人机,而是需要以5米/秒的速度移动到目的地。我只能通过首先沿x轴移动无人机,然后沿直线而不是对角线移动y轴来实现这一点。我怎样才能最好使用类方法来实现它?

0 个答案:

没有答案