More interpolation support
This commit is contained in:
13
c/coreslam.c
13
c/coreslam.c
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user