rotatekins.c
来自「CNC 的开放码,EMC2 V2.2.8版」· C语言 代码 · 共 95 行
C
95 行
/********************************************************************* Description: rotatekins.c* Simple example kinematics for coord system rotated 45 degrees* in XY** Derived from a work by Fred Proctor & Will Shackleford** Author: Chris Radek* License: GPL Version 2* System: Linux* * Copyright (c) 2006 All rights reserved.*********************************************************************/#include "rtapi_math.h"#ifndef M_PI_4l#define M_PI_4l (M_PIl/4.0)#endif#include "kinematics.h" /* these decls */int kinematicsForward(const double *joints, EmcPose * pos, const KINEMATICS_FORWARD_FLAGS * fflags, KINEMATICS_INVERSE_FLAGS * iflags){ pos->tran.x = joints[0] * cos(-M_PI_4l) - joints[1] * sin(-M_PI_4l); pos->tran.y = joints[0] * sin(-M_PI_4l) + joints[1] * cos(-M_PI_4l); pos->tran.z = joints[2]; pos->a = joints[3]; pos->b = joints[4]; pos->c = joints[5]; pos->u = joints[6]; pos->v = joints[7]; pos->w = joints[8]; return 0;}int kinematicsInverse(const EmcPose * pos, double *joints, const KINEMATICS_INVERSE_FLAGS * iflags, KINEMATICS_FORWARD_FLAGS * fflags){ joints[0] = pos->tran.x * cos(M_PI_4l) - pos->tran.y * sin(M_PI_4l); joints[1] = pos->tran.x * sin(M_PI_4l) + pos->tran.y * cos(M_PI_4l); joints[2] = pos->tran.z; joints[3] = pos->a; joints[4] = pos->b; joints[5] = pos->c; joints[6] = pos->u; joints[7] = pos->v; joints[8] = pos->w; return 0;}/* implemented for these kinematics as giving joints preference */int kinematicsHome(EmcPose * world, double *joint, KINEMATICS_FORWARD_FLAGS * fflags, KINEMATICS_INVERSE_FLAGS * iflags){ *fflags = 0; *iflags = 0; return kinematicsForward(joint, world, fflags, iflags);}KINEMATICS_TYPE kinematicsType(){ return KINEMATICS_BOTH;}#include "rtapi.h" /* RTAPI realtime OS API */#include "rtapi_app.h" /* RTAPI realtime module decls */#include "hal.h"EXPORT_SYMBOL(kinematicsType);EXPORT_SYMBOL(kinematicsForward);EXPORT_SYMBOL(kinematicsInverse);MODULE_LICENSE("GPL");int comp_id;int rtapi_app_main(void) { comp_id = hal_init("rotatekins"); if(comp_id > 0) { hal_ready(comp_id); return 0; } return comp_id;}void rtapi_app_exit(void) { hal_exit(comp_id); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?