《即時控制軟體設計》第二個編程作業

來源:互聯網
上載者:User

標籤:

第二個編程作業,為了實現我們的機器人咖啡角,我們將基於第一次作業中的圖形旋轉,構造一個兩軸平面機器人,運動原理見動畫
要求:
1)代碼中至少包括兩個類:一個Robot類和一個Solver類,Robot類中定義每個機械臂的長度,每個關節的轉動角度範圍和零點,Solver求解器類用於實現機器人的正逆運動學變換,正運動學為把機器人的關節座標變換成笛卡爾座標,逆運動學為把機器人的笛卡爾座標變換成關節座標。
2)定義座標系類:機器人的原點為全局座標系(World Frame),同時,允許使用者定義工件座標系或任務座標系(Task Frame),任務座標系和全局座標系之間存在著位移和旋轉關係。機器人各個關節的角度值構成關節座標系(Joint Frame)。
3)每個機器人允許定義任意多個任務座標系,請運用Vector容器實現該功能。
4)機器人對象接收來自使用者的PTP(Point To Point)運動指令,該指令所給出的座標值,可能是關節座標系或全局座標系或任務座標系,機器人通過Solver求解器類把全局座標值和任務座標值變換成關節座標並更新關節角度值。
注意:在本次編程中不需要機器人具備連續軌跡運動的功能,只需要能夠根據使用者的PTP指令直接把內部的關節角度值更新就可以。
5)測試主程式架構如下:

int main()
{
//建立一個機器人對象myRobot,初始化機器人的機械參數,關節座標系(JF),全局座標系(WF)。
//給機器人對象建立3個任務座標系TF1, TF2, TF3。
//控制機器人對象在不同座標系下的運動,如:
//myRobot.PTPMove(JF,P1);
//myRobot.PTPMove(WF,P2);
//myRobot.PTPMove(TF1,P3);
//myRobot.PTPMove(TF2,P4);
//myRobot.PTPMove(TF3,P5);
}

#include<iostream>#include<vector>#include<algorithm>using namespace std;class Point{public:    Point()    {        x = 0;        y = 0;    }    Point(double x, double y)    {        this->x = x;        this->y = y;    }private:    double x;    double y;};class Line{public:    Line(Point start, Point end)    {        this->start = start;        this->end = end;    }private:    Point start;    Point end;};class Solver{    };class Frame{public:    Frame()    {        delta_theta = 0;        delta_x = 0;        delta_y = 0;    }    Frame(double delta_theta, double delta_x, double delta_y)    {        this->delta_theta = delta_theta;        this->delta_x = delta_x;        this->delta_x = delta_x;    }private:    double delta_theta;    double delta_x;    double delta_y;};class Robot{public:    vector<Frame> TaskFrame;    Robot()    {        ArmLength1 = 5;        ArmLength2 = 5;    }    Robot(double ArmLength1,double Armlength2)    {        this->ArmLength1 = ArmLength1;        this->ArmLength2 = Armlength2;    }    void PTPMove(Point start, Point end)    {    }private:    Frame WorldFrame;    Frame JointFrame;    double ArmLength1;    double ArmLength2;};int main(){    //建立一個機器人對象myRobot,初始化機器人的機械參數,關節座標系(JF),全局座標系(WF)。    //給機器人對象建立3個任務座標系TF1, TF2, TF3。    //控制機器人對象在不同座標系下的運動,如:    //myRobot.PTPMove(JF,P1);    //myRobot.PTPMove(WF,P2);    //myRobot.PTPMove(TF1,P3);    //myRobot.PTPMove(TF2,P4);    //myRobot.PTPMove(TF3,P5);}

 

《即時控制軟體設計》第二個編程作業

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.