# ros_numpy **Repository Path**: fu-zihao/ros_numpy ## Basic Information - **Project Name**: ros_numpy - **Description**: 无00000000000 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-30 - **Last Updated**: 2023-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ros_numpy Tools for converting ROS messages to and from numpy arrays. Contains two functions: * `arr = numpify(msg, ...)` - try to get a numpy object from a message * `msg = msgify(MessageType, arr, ...)` - try and convert a numpy object to a message Currently supports: * `sensor_msgs.msg.PointCloud2` ↔ structured `np.array`: ```python data = np.zeros(100, dtype=[ ('x', np.float32), ('y', np.float32), ('vectors', np.float32, (3,)) ]) data['x'] = np.arange(100) data['y'] = data['x']*2 data['vectors'] = np.arange(100)[:,np.newaxis] msg = ros_numpy.msgify(PointCloud2, data) ``` ``` data = ros_numpy.numpify(msg) ``` * `sensor_msgs.msg.Image` ↔ 2/3-D `np.array`, similar to the function of `cv_bridge`, but without the dependency on `cv2` * `nav_msgs.msg.OccupancyGrid` ↔ `np.ma.array` * `geometry.msg.Vector3` ↔ 1-D `np.array`. `hom=True` gives `[x, y, z, 0]` * `geometry.msg.Point` ↔ 1-D `np.array`. `hom=True` gives `[x, y, z, 1]` * `geometry.msg.Quaternion` ↔ 1-D `np.array`, `[x, y, z, w]` * `geometry.msg.Transform` ↔ 4×4 `np.array`, the homogeneous transformation matrix * `geometry.msg.Pose` ↔ 4×4 `np.array`, the homogeneous transformation matrix from the origin Support for more types can be added with: ```python @ros_numpy.converts_to_numpy(SomeMessageClass) def convert(my_msg): return np.array(...) @ros_numpy.converts_from_numpy(SomeMessageClass) def convert(my_array): return SomeMessageClass(...) ``` Any extra args or kwargs to `numpify` or `msgify` will be forwarded to your conversion function ## Future work * Add simple conversions for: * `geometry_msgs.msg.Inertia`