diff --git a/common/params_pyx.pyx b/common/params_pyx.pyx index 47d2075df2..827a2f32b4 100644 --- a/common/params_pyx.pyx +++ b/common/params_pyx.pyx @@ -29,11 +29,13 @@ cdef extern from "common/params.h": def ensure_bytes(v): - return v.encode() if isinstance(v, str) else v; + return v.encode() if isinstance(v, str) else v + class UnknownKeyName(Exception): pass + cdef class Params: cdef c_Params* p diff --git a/common/transformations/transformations.pxd b/common/transformations/transformations.pxd index 7af0098701..964adf06ec 100644 --- a/common/transformations/transformations.pxd +++ b/common/transformations/transformations.pxd @@ -1,4 +1,4 @@ -#cython: language_level=3 +# cython: language_level=3 from libcpp cimport bool cdef extern from "orientation.cc": diff --git a/common/transformations/transformations.pyx b/common/transformations/transformations.pyx index c5cb9e0056..3aa44da530 100644 --- a/common/transformations/transformations.pyx +++ b/common/transformations/transformations.pyx @@ -16,8 +16,6 @@ from openpilot.common.transformations.transformations cimport geodetic2ecef as g from openpilot.common.transformations.transformations cimport ecef2geodetic as ecef2geodetic_c from openpilot.common.transformations.transformations cimport LocalCoord_c - -import cython import numpy as np cimport numpy as np @@ -34,14 +32,14 @@ cdef Matrix3 numpy2matrix(np.ndarray[double, ndim=2, mode="fortran"] m): return Matrix3(m.data) cdef ECEF list2ecef(ecef): - cdef ECEF e; + cdef ECEF e e.x = ecef[0] e.y = ecef[1] e.z = ecef[2] return e cdef NED list2ned(ned): - cdef NED n; + cdef NED n n.n = ned[0] n.e = ned[1] n.d = ned[2] @@ -54,39 +52,47 @@ cdef Geodetic list2geodetic(geodetic): g.alt = geodetic[2] return g + def euler2quat_single(euler): cdef Vector3 e = Vector3(euler[0], euler[1], euler[2]) cdef Quaternion q = euler2quat_c(e) return [q.w(), q.x(), q.y(), q.z()] + def quat2euler_single(quat): cdef Quaternion q = Quaternion(quat[0], quat[1], quat[2], quat[3]) - cdef Vector3 e = quat2euler_c(q); + cdef Vector3 e = quat2euler_c(q) return [e(0), e(1), e(2)] + def quat2rot_single(quat): cdef Quaternion q = Quaternion(quat[0], quat[1], quat[2], quat[3]) cdef Matrix3 r = quat2rot_c(q) return matrix2numpy(r) + def rot2quat_single(rot): cdef Matrix3 r = numpy2matrix(np.asfortranarray(rot, dtype=np.double)) cdef Quaternion q = rot2quat_c(r) return [q.w(), q.x(), q.y(), q.z()] + def euler2rot_single(euler): cdef Vector3 e = Vector3(euler[0], euler[1], euler[2]) cdef Matrix3 r = euler2rot_c(e) return matrix2numpy(r) + def rot2euler_single(rot): cdef Matrix3 r = numpy2matrix(np.asfortranarray(rot, dtype=np.double)) cdef Vector3 e = rot2euler_c(r) return [e(0), e(1), e(2)] + def rot_matrix(roll, pitch, yaw): return matrix2numpy(rot_matrix_c(roll, pitch, yaw)) + def ecef_euler_from_ned_single(ecef_init, ned_pose): cdef ECEF init = list2ecef(ecef_init) cdef Vector3 pose = Vector3(ned_pose[0], ned_pose[1], ned_pose[2]) @@ -94,6 +100,7 @@ def ecef_euler_from_ned_single(ecef_init, ned_pose): cdef Vector3 e = ecef_euler_from_ned_c(init, pose) return [e(0), e(1), e(2)] + def ned_euler_from_ecef_single(ecef_init, ecef_pose): cdef ECEF init = list2ecef(ecef_init) cdef Vector3 pose = Vector3(ecef_pose[0], ecef_pose[1], ecef_pose[2]) @@ -101,11 +108,13 @@ def ned_euler_from_ecef_single(ecef_init, ecef_pose): cdef Vector3 e = ned_euler_from_ecef_c(init, pose) return [e(0), e(1), e(2)] + def geodetic2ecef_single(geodetic): cdef Geodetic g = list2geodetic(geodetic) cdef ECEF e = geodetic2ecef_c(g) return [e.x, e.y, e.z] + def ecef2geodetic_single(ecef): cdef ECEF e = list2ecef(ecef) cdef Geodetic g = ecef2geodetic_c(e) diff --git a/selfdrive/boardd/boardd_api_impl.pyx b/selfdrive/boardd/boardd_api_impl.pyx index 6a552bb447..6569e458af 100644 --- a/selfdrive/boardd/boardd_api_impl.pyx +++ b/selfdrive/boardd/boardd_api_impl.pyx @@ -14,6 +14,7 @@ cdef extern from "panda.h": cdef extern from "can_list_to_can_capnp.cc": void can_list_to_can_capnp_cpp(const vector[can_frame] &can_list, string &out, bool sendCan, bool valid) + def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True): cdef vector[can_frame] can_list can_list.reserve(len(can_msgs)) diff --git a/selfdrive/modeld/models/commonmodel_pyx.pxd b/selfdrive/modeld/models/commonmodel_pyx.pxd index 21c0716de4..97e3914588 100644 --- a/selfdrive/modeld/models/commonmodel_pyx.pxd +++ b/selfdrive/modeld/models/commonmodel_pyx.pxd @@ -7,7 +7,7 @@ cdef class CLContext(BaseCLContext): pass cdef class CLMem: - cdef cl_mem * mem; + cdef cl_mem * mem @staticmethod cdef create(void*) diff --git a/selfdrive/modeld/models/commonmodel_pyx.pyx b/selfdrive/modeld/models/commonmodel_pyx.pyx index e33d301aff..83b562acd6 100644 --- a/selfdrive/modeld/models/commonmodel_pyx.pyx +++ b/selfdrive/modeld/models/commonmodel_pyx.pyx @@ -10,9 +10,11 @@ from cereal.visionipc.visionipc_pyx cimport VisionBuf, CLContext as BaseCLContex from .commonmodel cimport CL_DEVICE_TYPE_DEFAULT, cl_get_device_id, cl_create_context from .commonmodel cimport mat3, sigmoid as cppSigmoid, ModelFrame as cppModelFrame + def sigmoid(x): return cppSigmoid(x) + cdef class CLContext(BaseCLContext): def __cinit__(self): self.device_id = cl_get_device_id(CL_DEVICE_TYPE_DEFAULT) diff --git a/selfdrive/modeld/runners/runmodel_pyx.pyx b/selfdrive/modeld/runners/runmodel_pyx.pyx index cdc62a79be..4c712ad5eb 100644 --- a/selfdrive/modeld/runners/runmodel_pyx.pyx +++ b/selfdrive/modeld/runners/runmodel_pyx.pyx @@ -2,16 +2,17 @@ # cython: c_string_encoding=ascii from libcpp.string cimport string -from libc.string cimport memcpy from .runmodel cimport USE_CPU_RUNTIME, USE_GPU_RUNTIME, USE_DSP_RUNTIME from selfdrive.modeld.models.commonmodel_pyx cimport CLMem + class Runtime: CPU = USE_CPU_RUNTIME GPU = USE_GPU_RUNTIME DSP = USE_DSP_RUNTIME + cdef class RunModel: def __dealloc__(self): del self.model