Perception Tool Kit (PTK) API Guide
radar_kin_utils.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2018 Texas Instruments Incorporated
4  *
5  * All rights reserved not granted herein.
6  *
7  * Limited License.
8  *
9  * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10  * license under copyrights and patents it now or hereafter owns or controls to make,
11  * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12  * terms herein. With respect to the foregoing patent license, such license is granted
13  * solely to the extent that any such patent is necessary to Utilize the software alone.
14  * The patent license shall not apply to any combinations which include this software,
15  * other than combinations with devices manufactured by or for TI ("TI Devices").
16  * No hardware patent is licensed hereunder.
17  *
18  * Redistributions must preserve existing copyright notices and reproduce this license
19  * (including the above copyright notice and the disclaimer and (if applicable) source
20  * code license limitations below) in the documentation and/or other materials provided
21  * with the distribution
22  *
23  * Redistribution and use in binary form, without modification, are permitted provided
24  * that the following conditions are met:
25  *
26  * * No reverse engineering, decompilation, or disassembly of this software is
27  * permitted with respect to any software provided in binary form.
28  *
29  * * any redistribution and use are licensed by TI for use only with TI Devices.
30  *
31  * * Nothing shall obligate TI to provide you with source code for the software
32  * licensed and provided to you in object code.
33  *
34  * If software source code is provided to you, modification and redistribution of the
35  * source code are permitted provided that the following conditions are met:
36  *
37  * * any redistribution and use of the source code, including any resulting derivative
38  * works, are licensed by TI for use only with TI Devices.
39  *
40  * * any redistribution and use of any object code compiled from the source code
41  * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42  *
43  * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44  *
45  * may be used to endorse or promote products derived from this software without
46  * specific prior written permission.
47  *
48  * DISCLAIMER.
49  *
50  * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53  * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59  * OF THE POSSIBILITY OF SUCH DAMAGE.
60  *
61  */
62 #ifndef RADAR_KIN_UTILS_H
63 #define RADAR_KIN_UTILS_H
64 
65 #include <perception/perception.h>
66 #include <perception/mathmapping.h>
67 
68 #ifdef __cplusplus
69 extern "C" {
70 #endif
71 
72 #define IMU_TIME_TO_SECONDS_CONVERSION_CONSTANT (1000000.0f)
73 
74 /* PUBLIC APIS */
84 static inline float PTK_Util_computeYawRate(const PTK_INS_Record * prevInsRec,
85  const PTK_INS_Record * curInsRec)
86 {
87  float yawRate;
88 
90  (curInsRec->data.inspva.attitude.azimuth -
91  prevInsRec->data.inspva.attitude.azimuth) /
92  (float)(curInsRec->timestamp - prevInsRec->timestamp);
93 
94  return yawRate;
95 }
96 
120  float * rotAngle_H_M,
121  float * rotAngle_H,
122  const float azimuth,
123  const float sensorOrientation,
124  float * rotMat_H_M,
125  float * rotMat_H);
126 
153  float * v_sensor,
154  float * rotMat_H,
155  const float yawRate,
156  const float velEast,
157  const float velNorth,
158  const float sensorPosX,
159  const float sensorPosY);
160 
183  const float * rotMat_H,
184  const float sensorPosX,
185  const float sensorPosY,
186  float * trfLoc_x,
187  float * trfLoc_y);
188 
209  const float rotAngle_H_M,
210  const PTK_RigidTransform * M_w_enu,
211  const float trfLoc_x,
212  const float trfLoc_y,
213  float * sensor_pva);
214 
234  const float rotAngle_H_M,
235  const float * v_s_w,
236  const float vRad_o_s,
237  const float a_o_s,
238  const float rotAngle_H,
239  float * vRad_o_sw);
240 
241 
270  const float rotAngle_H_M,
271  const float * v_s_w,
272  const float vRad_o_s,
273  const float a_o_s,
274  const float aRad_o_w,
275  const float * sensor_pva,
276  const float x_o_w,
277  const float y_o_w,
278  const float rotAngle_H,
279  float * vRad_o_w);
280 
281 #ifdef __cplusplus
282 }
283 #endif
284 
285 #endif
PTK_INS_Attitude attitude
Definition: ins.h:199
void PTK_Util_KinCompRotMatrices(float *rotAngle_H_M, float *rotAngle_H, const float azimuth, const float sensorOrientation, float *rotMat_H_M, float *rotMat_H)
Computes rotation angles and matices to transform between sensor and world coordinates.
float azimuth
Definition: ins.h:181
PTK_INS_InsPva inspva
Definition: ins.h:242
#define IMU_TIME_TO_SECONDS_CONVERSION_CONSTANT
Definition: radar_kin_utils.h:72
Rigid Transform Matrix (single precision).
Definition: rigidTransform.h:85
void PTK_Util_KinCompSensorPva(const float rotAngle_H_M, const PTK_RigidTransform *M_w_enu, const float trfLoc_x, const float trfLoc_y, float *sensor_pva)
Computes sensor position and attitude in world coordinates.
void PTK_Util_KinCompRadVelWR2WFromWorldOrigin(const float rotAngle_H_M, const float *v_s_w, const float vRad_o_s, const float a_o_s, const float aRad_o_w, const float *sensor_pva, const float x_o_w, const float y_o_w, const float rotAngle_H, float *vRad_o_w)
Computes radial velocity of object towards world origin.
void PTK_Util_KinTfrmSensorLoc(const float *rotMat_H, const float sensorPosX, const float sensorPosY, float *trfLoc_x, float *trfLoc_y)
Tranforms sensor locations (x/y) in vehicle coordinates to sensor locations (x/y) in world coordinate...
uint64_t timestamp
Definition: ins.h:257
void PTK_Util_KinCompRadVelWR2WFromSensorOrigin(const float rotAngle_H_M, const float *v_s_w, const float vRad_o_s, const float a_o_s, const float rotAngle_H, float *vRad_o_sw)
Computes radial velocity of object towards sensor origin.
PTK_INS_RecordData data
Definition: ins.h:263
INS record.
Definition: ins.h:254
static float PTK_Util_computeYawRate(const PTK_INS_Record *prevInsRec, const PTK_INS_Record *curInsRec)
Computes the yaw rate from successive INS records.
Definition: radar_kin_utils.h:84
void PTK_Util_KinCompSensorVel(float *v_sensor, float *rotMat_H, const float yawRate, const float velEast, const float velNorth, const float sensorPosX, const float sensorPosY)
Compute rotation matrices.