You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <array>
|
|
#include <vector>
|
|
|
|
constexpr double degToRad(double degrees)
|
|
{
|
|
return degrees * (3.14159265 / 180.0);
|
|
}
|
|
|
|
using stHelixPosition = struct _stHelixPosition
|
|
{
|
|
// MUST be 3 elements: X, Y, Z
|
|
std::array<double, 3> arrCenterPosition;
|
|
std::array<double, 3> arrNormal;
|
|
double AngleDegree{ 0. }; // angle in degree
|
|
double deltaHeight{ 0. }; // height change
|
|
double endRadius{ 0. }; // end radius
|
|
//
|
|
unsigned long ulDwell{ 0 }; // dwell time in ms
|
|
};
|
|
|
|
using stPointPosition = struct _stPointPosition
|
|
{
|
|
// axis position for each point (number of position MUST match number of axis)
|
|
std::vector<double> vecAxisPosition;
|
|
//
|
|
unsigned long ulDwell{ 0 }; // dwell time in ms
|
|
};
|
|
|
|
using stAxSpeed = struct _stAxSpeed
|
|
{
|
|
double dStartSpeed{ 0. }; // axis start speed
|
|
double dMaxSpeed{ 0. }; // axis max speed
|
|
double dEndSpeed{ 0. }; // axis end speed
|
|
// reserved
|
|
double dSCurve{ 0.5 }; // s-curve
|
|
double dAcc{ 0. }; // axis acceleration
|
|
double dDec{ 0. }; // axis deceleration
|
|
};
|
|
|
|
using stMotionPath = struct _stMotionPath
|
|
{
|
|
// point path
|
|
std::vector<int> vecAxisId; // list of axis id
|
|
std::vector<stPointPosition> vecPointPath; // list of axis position for each point
|
|
std::vector<stHelixPosition> vecHelixPath; // list of helix position for each point
|
|
// speed profile
|
|
stAxSpeed AxSpeed; // speed for each axis
|
|
int nId{}; // Point Table Id for ECAT
|
|
bool bUseAbsolutePos{}; // true: absolute position, false: relative position (default)
|
|
}; |