Edit on GitHub

References

AMSDK Define

Pose3D

timeprofile

MotionPose

ARMSDK Math

static matd GetOrientationMatrix(double Roll, double Pitch, double Yaw)

static matd GetTransformMatrix(double Roll, double Pitch, double Yaw, double x, double y, double z)

static vecd rot2omega(mat3d Rerr)

static vecd ConvertRad2Deg(vecd q)

static vecd GetEulerRollPitchYaw(matd T)

MotionEngine

Error.h

void ErrorCheck(int Error)

JointData.h

void SetJointID(unsigned int ID)

void SetJointAngle(double JointAngle);

void SetMinAngleInRad(double MinAngleInRad);

void SetMaxAngleInRad(double MaxAngleInRad);

void SetMinAngleInValue(int Min_AngleValue);

void SetMaxAngleInValue(int Max_AngleValue);

void SetMinAngleLimitInRad(double MinAngleLimitInRad);

void SetMaxAngleLimitInRad(double MaxAngleLimitInRad);

unsigned int GetID(void);

void SetJointDataDH(double LinkLength, double LinkTwist, double JointOffset, double JointAngle);

double GetJointAngle(void);

double GetMinAngleInRad(void);

double GetMaxAngleInRad(void);

int GetMinAngleInValue(void);

int GetMaxAngleInValue(void);

double GetMinAngleLimitInRad(void);

double GetMaxAngleLimitInRad(void);

int GetMinAngleLimitInValue(void);

int GetMaxAngleLimitInValue(void);

matd GetTransformMatirx(void);

RobotInfo.h

int AddJoint (double LinkLength, double LinkTwist, double JointOffset, double JointAngle, double MaxAngleInRad, double MinAngleInRad, int MaxAngleValue , int MinAngleValue, double MaxAngleLimitInRad, double MinAngleLimitInRad, unsigned int Dynamixel_ID);

JointData GetJointInfo(int joint_number);

std::vector* GetRobotInfo(void);

void ClearRobotInfo(void);

veci GetArmIDList(void);

veci Rad2Value(vecd q);

vecd Value2Rad(veci q);

Kinematics.h

void RobotInfoReload(void);

matd Forward(vecd angle);

matd Forward(vecd angle, Pose3D *pose);

void SetMaximumNumberOfIterationsForIK(unsigned int max_num);

void SetConvergenceCondition(double max_error, double max_acceptable_error);

matd Jacobian(void);

vecd CalcError(Pose3D _desired, matd _current);

void ComputeIK(Pose3D _desired , vecd *q_rad, vecd Initangle_rad, int *ErrorStatus);

TrajectoryGenerator.h

void KinematicsInfoReload(void);

void Set_P2P(vecd StartPose, vecd EndPose, double TotalTime, double AccelTime);

void Set_P2P(Pose3D StartPose, Pose3D EndPose, double TotalTime, double AccelTime);

void Set_LIN(vecd StartPose, vecd EndPose, double TotalTime, double AccelTime);

void Set_LIN(Pose3D StartPose, Pose3D EndPose, double TotalTime, double AccelTime);

void Set_CIRC(vecd StartPose, vecd ViaPose, vecd EndPose, double TotalTime, double AccelTime);

void Set_CIRC(Pose3D StartPose, Pose3D ViaPose, Pose3D EndPose, double TotalTime, double AccelTime);

void Set_P2PwithHand(vecd StartPose, vecd EndPose, veci Hand1, veci Hand2, double TotalTime, double AccelTime);

void Set_P2PwithHand(Pose3D StartPose, Pose3D EndPose, veci Hand1, veci Hand2, double TotalTime, double AccelTime);

void Set_LINwithHand(vecd StartPose, vecd EndPose, veci Hand1, veci Hand2, double TotalTime, double AccelTime);

void Set_LINwithHand(Pose3D StartPose, Pose3D EndPose, veci Hand1, veci Hand2, double TotalTime, double AccelTime);

void Set_CIRCwithHand(vecd StartPose, vecd ViaPose, vecd EndPose, veci Hand1, veci Hand2, double TotalTime, double AccelTime);

void Set_CIRCwithHand(Pose3D StartPose, Pose3D ViaPose, Pose3D EndPose, veci Hand1, veci Hand2, double TotalTime, double AccelTime);

void ClearMF(void)

double GetMotionTotalTime(void)

MotionPlay.h

void All_Info_Reload(void);

void initialize(void)

void Set_Time_Period(int MilliSecond)

vecd NextStepAtTime(double CurrentTime, int *ErrorStatus)

veci NextStepAtTimeforHand(double CurrentTime)

vecd NextStep(int* ErrorStatus)

veci NextStepforHand(void)

vecd GetCurrentAngle(void);

Pose3D GetCurrentEndPose(void);

double Get_CurrentTime(void);

RobotisLib

Pro_Arm_Comm_win.h

void DXL_Set_Init_Param(int portnum, int baudnum);

int DXL_Open();

SerialPort* DXL_Get_Port(void);

void DXL_Close(void);

void Arm_ID_Setup(veci Arm_ID_LIST);

int Arm_Torque_On(void);

int Arm_Torque_Off(void);

int Arm_Set_JointPosition(veci position);

int Arm_Set_JointVelocity(veci velocity);

int Arm_Set_JointVelocity(int velocity);

int Arm_Set_JointAcceleration(veci accel);

int Arm_Set_JointAcceleration(int accel);

int Arm_Set_Position_PID_Gain(int P_Gain, int I_Gain, int D_Gain);

int Arm_Set_Position_PID_Gain(int id, int P_Gain, int I_Gain, int D_Gain, int* ErrorStatus);

int Arm_Get_JointPosition(veci *position);

int Arm_Get_JointCurrent(veci *torque);

int Arm_LED_On(void);

int Arm_LED_Off(void);

int Arm_LED_On(int r, int g, int b);

int Arm_Red_LED_On(void);

int Arm_Green_LED_On(void);

int Arm_Blue_LED_On(void);

void Gripper_ID_Setup(veci Gripper_ID_List);

int Gripper_Ping(void);

int Gripper_Torque_On(void);

int Gripper_Torque_Off(void);

int Gripper_Get_Joint_Value(veci *value);

int Gripper_Set_Joint_Value(veci value);

Timer

MotionTimer.h

time measurement fromQueryPerformanceCounter

void Start(void)

void Stop(void)

double GetElapsedTime(void)

void Wait(double millisec)