📄 genhexkins.h
字号:
/********************************************************************* Description: genhexkins.h* Kinematics for a generalised hexapod machine** Derived from a work by R. Brian Register** Author: * License: GPL Version 2* System: Linux* * Copyright (c) 2004 All rights reserved.** Last change:* $Revision: 1.2 $* $Author: jmkasunich $* $Date: 2006/07/09 21:57:42 $******************************************************************* This is the header file to accompany genhexkins.c. This header file is used to configure genhexkins.c to solve the kinematics for a particular Stewart Platform configuration. Defined are the parameters necessary to configure the functions to solve several different Stewart Platform configurations. To choose a particular configuration #define the configuration you are interested in and comment out any others. */#include "posemath.h" /* PmCartesian *//* genhexSetParams lets you set the Cartesian coords of the base and platform, overriding the defaults set in the subsequent #defines */extern int genhexSetParams(const PmCartesian base[], const PmCartesian platform[]);extern int genhexGetParams(PmCartesian base[], PmCartesian platform[]);extern int genhexKinematicsForwardIterations(void);#define MINI_TETRA#define NUM_STRUTS 6#ifdef INGERSOLL_HEXAPOD/* Define position of base strut ends in base (world) coordinates for *//* Ingersoll Hexapod */#define BASE_0_X 1.7580#define BASE_1_X 1.6021#define BASE_2_X -1.7580#define BASE_3_X -1.6021#define BASE_4_X 0.0#define BASE_5_X 0.0#define BASE_0_Y 2.8#define BASE_1_Y 3.07#define BASE_2_Y 2.8#define BASE_3_Y 3.07#define BASE_4_Y 2.8#define BASE_5_Y 3.07#define BASE_0_Z -1.015#define BASE_1_Z -0.925#define BASE_2_Z -1.015#define BASE_3_Z -0.925#define BASE_4_Z 2.03#define BASE_5_Z 1.85/* Define position of platform strut end in platform coordinate system *//* for Ingersoll Hexapod */#define PLATFORM_0_X 0.225#define PLATFORM_1_X 0.1125#define PLATFORM_2_X -0.1125#define PLATFORM_3_X -0.225#define PLATFORM_4_X -0.1125#define PLATFORM_5_X 0.1125#define PLATFORM_0_Y 0.0#define PLATFORM_1_Y 0.1949#define PLATFORM_2_Y 0.1949#define PLATFORM_3_Y 0.0#define PLATFORM_4_Y -0.1949#define PLATFORM_5_Y -0.1949#define PLATFORM_0_Z -0.228#define PLATFORM_1_Z -0.228#define PLATFORM_2_Z -0.228#define PLATFORM_3_Z -0.228#define PLATFORM_4_Z -0.228#define PLATFORM_5_Z -0.228#endif#ifdef UF_HEXAPOD/* Define position of base strut ends in base (world) coordinates for *//* UF Hexapod */#define BASE_0_X -16.00#define BASE_1_X -10.00#define BASE_2_X 16.00#define BASE_3_X 13.00#define BASE_4_X 0.00#define BASE_5_X -3.00#define BASE_0_Y -9.24#define BASE_1_Y -9.24#define BASE_2_Y -9.24#define BASE_3_Y -4.04#define BASE_4_Y 18.48#define BASE_5_Y 13.28#define BASE_0_Z 18.00#define BASE_1_Z 18.00#define BASE_2_Z 18.00#define BASE_3_Z 18.00#define BASE_4_Z 18.00#define BASE_5_Z 18.00/* Define position of platform strut end in platform coordinate system *//* for UF Hexapod */#define PLATFORM_0_X -9.00#define PLATFORM_1_X 0.00#define PLATFORM_2_X 3.00#define PLATFORM_3_X 12.00#define PLATFORM_4_X 6.00#define PLATFORM_5_X -12.00#define PLATFORM_0_Y 1.73#define PLATFORM_1_Y -13.86#define PLATFORM_2_Y -8.66#define PLATFORM_3_Y 6.93#define PLATFORM_4_Y 6.93#define PLATFORM_5_Y 6.93#define PLATFORM_0_Z 0.00#define PLATFORM_1_Z 0.00#define PLATFORM_2_Z 0.00#define PLATFORM_3_Z 0.00#define PLATFORM_4_Z 0.00#define PLATFORM_5_Z 0.00#endif#ifdef MINI_TETRA/* Define position of base strut ends in base (world) coordinates for *//* mini tetra */#define BASE_0_X -22.950#define BASE_0_Y 13.250#define BASE_1_X 22.950#define BASE_1_Y 13.250#define BASE_2_X 22.950#define BASE_2_Y 13.250#define BASE_3_X 0#define BASE_3_Y -26.5#define BASE_4_X 0#define BASE_4_Y -26.5#define BASE_5_X -22.950#define BASE_5_Y 13.250#define BASE_0_Z 0#define BASE_1_Z 0#define BASE_2_Z 0#define BASE_3_Z 0#define BASE_4_Z 0#define BASE_5_Z 0/* Define position of platform strut end in platform coordinate system *//* for mini tetra */#define PLATFORM_0_X -1#define PLATFORM_0_Y 11.5#define PLATFORM_1_X 1#define PLATFORM_1_Y 11.5#define PLATFORM_2_X 10.459#define PLATFORM_2_Y -4.884#define PLATFORM_3_X 9.459#define PLATFORM_3_Y -6.616#define PLATFORM_4_X -9.459#define PLATFORM_4_Y -6.616#define PLATFORM_5_X -10.459#define PLATFORM_5_Y -4.884#define PLATFORM_0_Z 0#define PLATFORM_1_Z 0#define PLATFORM_2_Z 0#define PLATFORM_3_Z 0#define PLATFORM_4_Z 0#define PLATFORM_5_Z 0#endif#ifdef OCTA_TETRA/* Define position of base strut ends in base (world) coordinates for minitetra with octahedral outside frame. Let A be side length of base triangle. Here A = 39 inches. */#define BASE_0_X -19.5 /* -A/2 */#define BASE_0_Y 11.258 /* A cos 30 * 1/3 */#define BASE_1_X 19.5 /* A/2 */#define BASE_1_Y 11.258 /* A cos 30 * 1/3 */#define BASE_2_X 19.5 /* same as BASE_1_X */#define BASE_2_Y 11.258 /* same as BASE_1_Y */#define BASE_3_X 0 /* 0 */#define BASE_3_Y -22.517 /* -A cos 30 * 2/3 */#define BASE_4_X 0 /* same as BASE_3_X */#define BASE_4_Y -22.517 /* same as BASE_3_Y */#define BASE_5_X -19.5 /* same as BASE_0_X */#define BASE_5_Y 11.258 /* same as BASE_0_Y */#define BASE_0_Z 0 /* all 0 */#define BASE_1_Z 0#define BASE_2_Z 0#define BASE_3_Z 0#define BASE_4_Z 0#define BASE_5_Z 0/* Define position of platform strut end in platform coordinate system for minitetra with octahedral outside frame */#define PLATFORM_0_X -1#define PLATFORM_0_Y 11.5#define PLATFORM_1_X 1#define PLATFORM_1_Y 11.5#define PLATFORM_2_X 10.459#define PLATFORM_2_Y -4.884#define PLATFORM_3_X 9.459#define PLATFORM_3_Y -6.616#define PLATFORM_4_X -9.459#define PLATFORM_4_Y -6.616#define PLATFORM_5_X -10.459#define PLATFORM_5_Y -4.884#define PLATFORM_0_Z 0#define PLATFORM_1_Z 0#define PLATFORM_2_Z 0#define PLATFORM_3_Z 0#define PLATFORM_4_Z 0#define PLATFORM_5_Z 0#endif#ifdef GEN_TETRA/* GEN_TETRA uses 4 parameters for the side and corner lengths of the base and platform. Set these and recompile, and you don't have to figure out all the vertex coordinates yourself.*/#define BASE_LENGTH 40.0#define BASE_CORNER 1.75#define PLATFORM_LENGTH 18.9#define PLATFORM_CORNER 0.5#define Q 0.2886751346 /* 1/3 cos 30 */#define BASE_0_X (0.5 * BASE_CORNER)#define BASE_0_Y (Q * (2.0 * BASE_LENGTH + BASE_CORNER))#define BASE_1_X (0.5 * (BASE_LENGTH + BASE_CORNER))#define BASE_1_Y (Q * (BASE_CORNER - BASE_LENGTH))#define BASE_2_X (0.5 * BASE_LENGTH)#define BASE_2_Y (-Q * (BASE_LENGTH + 2.0 * BASE_CORNER))#define BASE_3_X -BASE_2_X#define BASE_3_Y BASE_2_Y#define BASE_4_X -BASE_1_X#define BASE_4_Y BASE_1_Y#define BASE_5_X -BASE_0_X#define BASE_5_Y BASE_0_Y#define BASE_0_Z 0 /* all 0 */#define BASE_1_Z 0#define BASE_2_Z 0#define BASE_3_Z 0#define BASE_4_Z 0#define BASE_5_Z 0/* Define position of platform strut end in platform coordinate system for minitetra with octahedral outside frame */#define PLATFORM_0_X (0.5 * PLATFORM_LENGTH)#define PLATFORM_0_Y (Q * (PLATFORM_LENGTH + 2.0 * PLATFORM_CORNER))#define PLATFORM_1_X (0.5 * (PLATFORM_LENGTH + PLATFORM_CORNER))#define PLATFORM_1_Y (Q * (PLATFORM_LENGTH - PLATFORM_CORNER))#define PLATFORM_2_X (0.5 * PLATFORM_CORNER)#define PLATFORM_2_Y (-Q * (2.0 * PLATFORM_LENGTH + PLATFORM_CORNER))#define PLATFORM_3_X -PLATFORM_2_X#define PLATFORM_3_Y PLATFORM_2_Y#define PLATFORM_4_X -PLATFORM_1_X#define PLATFORM_4_Y PLATFORM_1_Y#define PLATFORM_5_X -PLATFORM_0_X#define PLATFORM_5_Y PLATFORM_0_Y#define PLATFORM_0_Z 0#define PLATFORM_1_Z 0#define PLATFORM_2_Z 0#define PLATFORM_3_Z 0#define PLATFORM_4_Z 0#define PLATFORM_5_Z 0#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -