More interpolation support

This commit is contained in:
simondlevy
2018-07-04 15:10:07 -04:00
parent 22ee7dc8cd
commit c5b86a6940
3 changed files with 19 additions and 11 deletions

View File

@@ -62,12 +62,6 @@ static double * double_alloc(int size)
return (double *)safe_malloc(size * sizeof(double)); return (double *)safe_malloc(size * sizeof(double));
} }
static float * float_alloc(int size)
{
return (float *)safe_malloc(size * sizeof(float));
}
static void static void
swap(int * a, int * b) swap(int * a, int * b)
{ {
@@ -264,6 +258,13 @@ int *
return (int *)safe_malloc(size * sizeof(int)); return (int *)safe_malloc(size * sizeof(int));
} }
float *
float_alloc(
int size)
{
return (float *)safe_malloc(size * sizeof(float));
}
void void
map_init( map_init(
map_t * map, map_t * map,

View File

@@ -86,6 +86,10 @@ int *
int_alloc( int_alloc(
int size); int size);
float *
float_alloc(
int size);
void void
map_init( map_init(
map_t * map, map_t * map,

View File

@@ -176,7 +176,8 @@ typedef struct
PyObject_HEAD PyObject_HEAD
scan_t scan; scan_t scan;
int * lidar_mm; int * lidar_distances_mm;
float * lidar_angles_deg;
} Scan; } Scan;
@@ -186,7 +187,8 @@ Scan_dealloc(Scan* self)
{ {
scan_free(&self->scan); scan_free(&self->scan);
free(self->lidar_mm); free(self->lidar_distances_mm);
free(self->lidar_angles_deg);
Py_TYPE(self)->tp_free((PyObject*)self); Py_TYPE(self)->tp_free((PyObject*)self);
} }
@@ -243,7 +245,8 @@ Scan_init(Scan *self, PyObject *args, PyObject *kwds)
detection_margin, detection_margin,
offset_mm); offset_mm);
self->lidar_mm = int_alloc(self->scan.size); self->lidar_distances_mm = int_alloc(self->scan.size);
self->lidar_angles_deg = float_alloc(self->scan.size);
return 0; return 0;
} }
@@ -338,13 +341,13 @@ Scan_update(Scan *self, PyObject *args, PyObject *kwds)
// Extract LIDAR values from argument // Extract LIDAR values from argument
for (int k=0; k<PyList_Size(py_lidar); ++k) for (int k=0; k<PyList_Size(py_lidar); ++k)
{ {
self->lidar_mm[k] = (int)PyFloat_AsDouble(PyList_GetItem(py_lidar, k)); self->lidar_distances_mm[k] = (int)PyFloat_AsDouble(PyList_GetItem(py_lidar, k));
} }
// Update the scan // Update the scan
scan_update( scan_update(
&self->scan, &self->scan,
self->lidar_mm, self->lidar_distances_mm,
hole_width_mm, hole_width_mm,
dxy_mm, dxy_mm,
dtheta_degrees); dtheta_degrees);