IRBCAM plugins
Developer reference for IRBCAM plugins
Loading...
Searching...
No Matches
irbcaminterfacepublic.h
1#ifndef IRBCAMINTERFACEPUBLIC_H
2#define IRBCAMINTERFACEPUBLIC_H
3
4#include <QObject>
5#include "irbcaminterface.h"
6#include <QMatrix4x4>
7
8#include "targetproxymodel.h"
9
25class IrbcamInterfacePublic : public QObject
26{
27 Q_OBJECT
28
29 // Don't use Doxygen documentation on this property. It is only used for development in Hokarob.
30 Q_PROPERTY(bool irbcamForWeb READ IrbcamForWeb CONSTANT)
31 // Don't use Doxygen documentation on this property. It is needed to load the plugin
32 Q_PROPERTY(QString pluginUrl READ getPluginUrl CONSTANT)
33
34
46 Q_PROPERTY(QString pluginName READ getPluginName CONSTANT)
47
92 Q_PROPERTY(TargetProxyModel* pathModel READ pathModel CONSTANT FINAL)
93
110 Q_PROPERTY(QRect mainWindow READ getMainWindow NOTIFY mainWindowChanged)
111
112public:
113 explicit IrbcamInterfacePublic(QObject *parent = nullptr);
114 virtual ~IrbcamInterfacePublic();
115
116
136 Xyz = int(Hokarob::RotationSequence::xyz),
138 Xzy = int(Hokarob::RotationSequence::xzy),
140 Yxz = int(Hokarob::RotationSequence::yxz),
142 Yzx = int(Hokarob::RotationSequence::yzx),
144 Zxy = int(Hokarob::RotationSequence::zxy),
146 Zyx = int(Hokarob::RotationSequence::zyx),
148 Zyz = int(Hokarob::RotationSequence::zyz)
149 };
150 Q_ENUM(RotationSequence)
151
152
171 Q_INVOKABLE QQuaternion eulerToQuaternion(double rx, double ry, double rz, RotationSequence seq);
189 Q_INVOKABLE QVector3D quaternionToEuler(QQuaternion quat, RotationSequence seq);
202 Q_INVOKABLE double degToRad(double val);
216 Q_INVOKABLE double radToDeg(double val);
240 Q_INVOKABLE QQuaternion matrixToQuaternion(QMatrix4x4 mat);
260 Q_INVOKABLE QMatrix4x4 quaternionToMatrix(QQuaternion quat);
261
296 Q_INVOKABLE QVector3D quaternionToRpy(QQuaternion quat);
297
298 TargetProxyModel* pathModel();
299
331 Q_ENUM(CoordinateFrame)
332
333
348 {
350 MotionTypeLinear = int(EMotionType::MotionTypeLinear),
352 MotionTypeArcMidpoint = int(EMotionType::MotionTypeArcMidpoint),
354 MotionTypeLinearLiftPoint = int(EMotionType::MotionTypeLinearLiftPoint),
356 MotionTypeRotaryLiftPoint1 = int(EMotionType::MotionTypeRotaryLiftPoint1),
358 MotionTypeRotaryLiftPoint2 = int(EMotionType::MotionTypeRotaryLiftPoint2),
360 MotionTypeRotaryLiftPoint3 = int(EMotionType::MotionTypeRotaryLiftPoint3),
362 MotionTypeRotaryLiftPoint4 = int(EMotionType::MotionTypeRotaryLiftPoint4),
363 };
364 Q_ENUM(MotionType)
365
366
381 {
383 SpeedModeInput = int(ESpeedMode::SpeedModeInput),
385 SpeedModeRapid = int(ESpeedMode::SpeedModeRapid),
387 SpeedModeCutting = int(ESpeedMode::SpeedModeCutting),
388 };
389 Q_ENUM(SpeedMode)
390
391
422 {
424 NotSolved = int(EKinSolution::NotSolved),
426 Failed = int(EKinSolution::Failed),
428 Solved = int(EKinSolution::Solved),
429 };
430 Q_ENUM(KinSolution)
431
432
458 Q_INVOKABLE void setCoordinateFrame(CoordinateFrame frame, QVector3D position, QQuaternion quat);
459
460 static bool IrbcamForWeb();
461public slots:
462
463signals:
471
472};
473
474#endif // IRBCAMINTERFACEPUBLIC_H
Public Interface for Extending IRBCAM using QML Plugins.
Definition irbcaminterfacepublic.h:26
void mainWindowChanged()
Signal emitted when the main window size has changed.
TargetProxyModel * pathModel
Access the Cartesian path in the station.
Definition irbcaminterfacepublic.h:92
QRect mainWindow
Q_PROPERTY for accessing the main window's geometry as a QRect.
Definition irbcaminterfacepublic.h:110
CoordinateFrame
Enum representing different coordinate frames.
Definition irbcaminterfacepublic.h:315
@ RobotBaseFrame
Robot base frame transformation.
Definition irbcaminterfacepublic.h:325
@ LinearTrackBaseFrame
Linear track base frame transformation.
Definition irbcaminterfacepublic.h:329
@ ObjectFrame
Object frame transformation.
Definition irbcaminterfacepublic.h:319
@ TooltipFrame
Tool tip (TCP) frame transformation.
Definition irbcaminterfacepublic.h:321
@ UserFrame
User frame transformation.
Definition irbcaminterfacepublic.h:317
@ StationaryToolBaseFrame
Stationary tool base frame transformation.
Definition irbcaminterfacepublic.h:323
@ RotaryTableBaseFrame
Rotary table base frame transformation.
Definition irbcaminterfacepublic.h:327
SpeedMode
Target speed mode.
Definition irbcaminterfacepublic.h:381
@ SpeedModeRapid
Rapid move speed. Usually a special type of move speed configured by the controller.
Definition irbcaminterfacepublic.h:385
@ SpeedModeInput
Manual input.
Definition irbcaminterfacepublic.h:383
@ SpeedModeCutting
Cutting move speed. Usually a special type of move speed configured by the controller.
Definition irbcaminterfacepublic.h:387
Q_INVOKABLE void setCoordinateFrame(CoordinateFrame frame, QVector3D position, QQuaternion quat)
Sets position and orientation of a given coordinate frame.
KinSolution
Solution status.
Definition irbcaminterfacepublic.h:422
@ Solved
The target /path was solved successfully.
Definition irbcaminterfacepublic.h:428
@ NotSolved
The target/path is not solved and an attempt to solve it has not been made.
Definition irbcaminterfacepublic.h:424
@ Failed
An attempt to solve the target/path was made, but it failed.
Definition irbcaminterfacepublic.h:426
MotionType
Type of move operation.
Definition irbcaminterfacepublic.h:348
@ MotionTypeRotaryLiftPoint2
Rotary table lift point. Exported as a linear move.
Definition irbcaminterfacepublic.h:358
@ MotionTypeRotaryLiftPoint1
Rotary table lift point. Exported as a linear move.
Definition irbcaminterfacepublic.h:356
@ MotionTypeArcMidpoint
Arc move. Corresponds to moveC.
Definition irbcaminterfacepublic.h:352
@ MotionTypeRotaryLiftPoint4
Rotary table lift point. Exported as a linear move.
Definition irbcaminterfacepublic.h:362
@ MotionTypeLinear
Linear move. Corresponds to moveL.
Definition irbcaminterfacepublic.h:350
@ MotionTypeRotaryLiftPoint3
Rotary table lift point. Exported as a linear move.
Definition irbcaminterfacepublic.h:360
@ MotionTypeLinearLiftPoint
Linear lift point. Exported as a linear move.
Definition irbcaminterfacepublic.h:354
QString pluginName
Q_PROPERTY for accessing the name of the plugin.
Definition irbcaminterfacepublic.h:46
Q_INVOKABLE double radToDeg(double val)
Converts an angle from radians to degrees.
Q_INVOKABLE QMatrix4x4 quaternionToMatrix(QQuaternion quat)
Converts quaternion to transformation matrix.
RotationSequence
Enum representing different rotation sequences.
Definition irbcaminterfacepublic.h:134
@ Xzy
Rotation in sequence: X > Z > Y.
Definition irbcaminterfacepublic.h:138
@ Xyz
Rotation in sequence: X > Y > Z.
Definition irbcaminterfacepublic.h:136
@ Yxz
Rotation in sequence: Y > X > Z.
Definition irbcaminterfacepublic.h:140
@ Zxy
Rotation in sequence: Z > X > Y.
Definition irbcaminterfacepublic.h:144
@ Zyx
Rotation in sequence: Z > Y > X.
Definition irbcaminterfacepublic.h:146
@ Zyz
Rotation in sequence: Z > Y > Z.
Definition irbcaminterfacepublic.h:148
@ Yzx
Rotation in sequence: Y > Z > X.
Definition irbcaminterfacepublic.h:142
Q_INVOKABLE QQuaternion eulerToQuaternion(double rx, double ry, double rz, RotationSequence seq)
Converts Euler angles to a Quaternion using the specified rotation sequence.
Q_INVOKABLE QQuaternion matrixToQuaternion(QMatrix4x4 mat)
Converts transformation matrix to a quaternion.
Q_INVOKABLE QVector3D quaternionToEuler(QQuaternion quat, RotationSequence seq)
Converts a Quaternion to Euler angles using the specified rotation sequence.
Q_INVOKABLE QVector3D quaternionToRpy(QQuaternion quat)
Converts a quaternion to Roll Pitch Yaw (RPY) angles. This function converts a rotation expressed in ...
Q_INVOKABLE double degToRad(double val)
Converts an angle from degrees to radians.