delta机器人建模、解算、仿真

视频地址:

http://blob:https://www.bilibili.com/569b84b9-49a6-4cdd-a84d-8bdfa43291dc

http://blob:https://www.bilibili.com/1318a076-ff92-495a-b42e-2823b2f6f4bb

http://blob:https://www.bilibili.com/c565b5db-03ef-4aef-ba1c-9ae45aa6f8d5

1.在SolidWorks中建模

2.抽象结构

3.编写一个计算模型

首先建立一套几何结构的类,方便模型计算

然后写一个模型,利用这些几何类计算。使用了VTK库,负责导入Stl文件,根据计算结果实时更新模型姿态。

#ifndef MYDELTA_H
#define MYDELTA_H

#include"myRobotModel.h"
#include"myTrackPoints.h"


#include<QObject>
#include<QThread>

#include"myLeg.h"
#include"myArm.h"
#include"myHand.h"
#include"myActor.h"

class myVTKWidget;
class vtkRenderer;
class vtkAxesActor;
class myRobotModel;
class vtkTextActor;
class myArrowPlane;
class myDelta: public QThread
{
    Q_OBJECT
public:
    explicit myDelta(myVTKWidget *parent);
    ~myDelta()override;

    void run() override;                                                                //线程中加载模型
    vtkRenderer *Render();                                //返回renderer

    void setDragState(int state);                         //是否在拖拽
    myRobotModel getModel()const;                         //获取当前显示的模型

    void updateFromUser();                                //来自用户拖动更新
    void updateFromMotion(const myRobotModel &model);     //来自机械运动更新

    enum DragState {
        NoneDrag,
        Waiting,
        Moving
    };

signals:
    void signalProgress(int value);                       //反馈文件加载进度

private:
    myActor *m_frame;                                     //框架
    myActor  *m_base;                                     //电机座
    myArm  *m_arm[3];                                     //手臂
    myLeg  *m_leg[6];                                     //支腿
    myHand  *m_hand;                                      //手


    myTrackPoints m_track;                                //轨迹线

    myArrowPlane *m_arrow[4];
    vtkTextActor *m_text;                                 //文本显示
    myRobotModel m_model;                                 //当前模型
    myVTKWidget *m_parent;                                //父类
    vtkRenderer *m_render;                                //渲染器


private:
    void update();                                                                        //更新模型
    void createFrame();                                   //创建框架
    void createBase();                                                                  //创建电机座
    void createArms();                                                                  //创建手臂
    void createLegs();                                                                  //创建支腿
    void createHand();                                                                  //创建手
    void createFileName(const char *from, char *to);      //将本地文件名字转成绝对路径

private slots:
    void startThread();                                                                 //开启线程
};

#endif // MYDELTA_H

4.使用QVTKOpenGLWidget类显示

使用了之前开源的交互样式,操作习惯模仿SolidWorks.

  • 30
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值