Also, I looked through the GeppettoExtrude file and didn't see anything that was specific to extrusion. I have also read elsewhere that you used a post-processor to turn E words into U words and just treated the extruder as a U axis. Is this correct?
I intend to use linear scales on each of the X and Y axes. Since these do not translate directly into actuator counts, would it work if I set up two independant channels with just encoder inputs (no output) similar to the CorrectEncoders C program?
Any help would be greatly appreciated!
Sincerely,
Travis
CoreXY motion shceme: http://corexy (dot) com/ (It won't let me post a link)
KinematicsCoreXY.cpp:
Code: Select all
// KinematicsCoreXY.cpp: implementation of the CKinematicsCoreXY class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "KinematicsCoreXY.h"
#define sqr(x) ((x)*(x))
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CKinematicsCoreXY::CKinematicsCoreXY()
{
}
CKinematicsCoreXY::~CKinematicsCoreXY()
{
}
int CKinematicsCoreXY::TransformCADtoActuators(double x, double y, double z, double a, double b, double c, double *Acts, bool NoGeo)
{
// find motor counts of each actuator
GeoCorrect(x,y,z,&x,&y,&z);
Acts[0] = (x + y)*m_MotionParams.CountsPerInchX;
Acts[1] = (x - y)*m_MotionParams.CountsPerInchY;
Acts[2] = z*m_MotionParams.CountsPerInchZ;
Acts[3] = a*m_MotionParams.CountsPerInchA;
Acts[4] = b*m_MotionParams.CountsPerInchB;
Acts[5] = c*m_MotionParams.CountsPerInchC;
return 0;
}
// perform Inversion to go the other way
int CKinematicsCoreXY::TransformActuatorstoCAD(double *Acts, double *xr, double *yr, double *zr, double *ar, double *br, double *cr, bool NoGeo)
{
return InvertTransformCADtoActuators(Acts, xr, yr, zr, ar, br, cr);
}
Code: Select all
// KinematicsCoreXY.h: interface for the CKinematicsCoreXY class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_KINEMATICSCOREXY_H__876A0A72_6EC3_48D0_9040_60AE3DA2F3C7__INCLUDED_)
#define AFX_KINEMATICSCOREXY_H__876A0A72_6EC3_48D0_9040_60AE3DA2F3C7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "stdafx.h"
class CKinematicsCoreXY : public CKinematics
{
public:
CKinematicsCoreXY();
virtual ~CKinematicsCoreXY();
virtual int TransformCADtoActuators(double x, double y, double z, double a, double b, double c, double *Acts, bool NoGeo = false);
virtual int TransformActuatorstoCAD(double *Acts, double *x, double *y, double *z, double *a, double *b, double *c, bool NoGeo = false);
};
#endif // !defined(AFX_KINEMATICSCOREXY_H__876A0A72_6EC3_48D0_9040_60AE3DA2F3C7__INCLUDED_)