16 #define MILLIRAD_HALF_PI 1571
17 #define MILLIRAD_PI (MILLIRAD_HALF_PI * 2)
18 #define MILLIRAD_2PI (MILLIRAD_HALF_PI * 4)
20 #define MILLIRAD_DEG_0 0
21 #define MILLIRAD_DEG_15 (MILLIRAD_HALF_PI / 6)
22 #define MILLIRAD_DEG_20 (MILLIRAD_PI / 9)
23 #define MILLIRAD_DEG_30 (MILLIRAD_HALF_PI / 3)
24 #define MILLIRAD_DEG_45 (MILLIRAD_HALF_PI / 2)
25 #define MILLIRAD_DEG_90 MILLIRAD_HALF_PI
26 #define MILLIRAD_DEG_180 MILLIRAD_PI
27 #define MILLIRAD_DEG_270 (MILLIRAD_PI + MILLIRAD_HALF_PI)
28 #define MILLIRAD_DEG_360 MILLIRAD_2PI
30 #define MILLIRAD_TRIG_SCALER 32767
32 #define GAUSSIAN_LOOKUP_SIZE 64
33 #define GAUSSIAN_LOOKUP_MAX_RETURN 255
47 extern Pose poseOrigin;
66 uint32 sqrtInt(uint32 val);
76 int32 vectorMag(int32 x, int32 y);
84 uint32 decToZero(uint32 val);
94 int32 average(int32 val1, int32 val2);
104 uint8 bitsCount(uint32 val);
114 int32 min(int32 x, int32 y);
125 int32 max(int32 x, int32 y);
137 int32 boundAbs(int32 val, int32 bound);
150 int32 bound(int32 val, int32 lowerBound, int32 upperBound);
160 int16 sinMilliRad(int16 angle);
169 int16 cosMilliRad(int16 angle);
180 int16 atan2MilliRad(int32 y, int32 x);
190 int16 normalizeAngleMilliRad(int16 angle);
200 int16 normalizeAngleMilliRad2(int16 angle);
210 int32 normalizeAngleMicroRad(int32 angle);
214 int16 normalizeAngleMilliRad3(int16 angle);
225 int16 smallestAngleDifference(int16 thetaGoal, int16 theta);
236 int32 min3(int32 valueA, int32 valueB, int32 valueC);
251 int32 filterIIR(int32 sample, int32 average, int32 alpha);
261 int16 averageAngles(int16 angle1, int16 angle2);
271 int32 averageAnglesMicroRad(int32 theta1, int32 theta2);
282 int16 averageArrayAngle(int16 angleArray[], int32 size);
292 int16 averageAnglesLeftToRight(int16 angleLeft, int16 angleRight);
302 int16 byteToMillirad(int8 angle);
312 int8 milliradToByte(int16 angle);
324 void pack16(uint8 * arrayPtr, uint32 dataWord);
334 void pack24(uint8 * arrayPtr, uint32 dataWord);
344 void pack32(uint8 * arrayPtr, uint32 dataWord);
353 uint16 unpack16(uint8 * arrayPtr);
362 uint32 unpack24(uint8 * arrayPtr);
372 uint32 unpack32(uint8 * arrayPtr);
383 int16 byteToMillirad(int8 angle);
391 int8 milliradToByte(int16 angle);
401 int16 byteToMilliradUnsigned(uint8 angle);
411 uint8 milliradToByteUnsigned(int16 angle);
428 uint32 stol(uint8 * str,
int len);
438 int16 angleFromBitVector(uint8 bitVector);
448 int16 angleFromBitVectorOffset(uint8 bitVector);
458 int16 angleFromBitVectorBeacon(uint8 bitVector);
468 uint8 bitsMaxContiguous(uint8 val);
480 int32 poseAngleDiff(
Pose* poseGoalPtr,
Pose* posePtr);
491 void poseAdd(
Pose* poseResPtr,
Pose* pose1Ptr,
Pose* pose2Ptr);
501 int32 poseDistance(
Pose* pose1Ptr,
Pose* pose2Ptr);
512 int16 gaussianNoise();
516 #define add32(v1, v2) add32func(v1, v2, __FILE__, __LINE__)
517 #define sub32(v1, v2) sub32func(v1, v2, __FILE__, __LINE__)
518 #define mul32(v1, v2) mul32func(v1, v2, __FILE__, __LINE__)
519 #define div32(v1, v2) div32func(v1, v2, __FILE__, __LINE__)
521 uint8 msb32(uint32 val);
522 int32 add32func(int32 v1, int32 v2,
const char * filePathName,
unsigned int lineNum);
523 int32 sub32func(int32 v1, int32 v2,
const char * filePathName,
unsigned int lineNum);
524 int32 mul32func(int32 v1, int32 v2,
const char * filePathName,
unsigned int lineNum);
525 int32 div32func(int32 v1, int32 v2,
const char * filePathName,
unsigned int lineNum);
527 #define add64(v1, v2) add64func(v1, v2, __FILE__, __LINE__)
528 #define sub64(v1, v2) sub64func(v1, v2, __FILE__, __LINE__)
529 #define mul64(v1, v2) mul64func(v1, v2, __FILE__, __LINE__)
530 #define div64(v1, v2) div64func(v1, v2, __FILE__, __LINE__)
532 int64 abs64(int64 val);
533 uint8 msb64(uint64 val);
534 int64 add64func(int64 v1, int64 v2,
const char * filePathName,
unsigned int lineNum);
535 int64 sub64func(int64 v1, int64 v2,
const char * filePathName,
unsigned int lineNum);
536 int64 mul64func(int64 v1, int64 v2,
const char * filePathName,
unsigned int lineNum);
537 int64 div64func(int64 v1, int64 v2,
const char * filePathName,
unsigned int lineNum);
540 #endif // #ifndef intMath_h