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++

#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)
};