Convert ROS2 messages to and from numpy arrays
Project description
ros2_numpy
Note: This is the same as the original ros_numpy package by eric-wieser and ros2_numpy package by box-robotics just edited to be OS independent and installable using pip.
Pointcloud manipulation is updated ros2_numpy.pointcloud2
to be compatible with ROS2. It now gives a structured numpy array with the fields x
, y
, z
, rgb
, intensity
. The rgb
field is a 3-tuple of uint8 values. The intensity
field is a float32 value. The x
, y
, z
fields are float32 values.
This project is a fork of ros2_numpy to work with ROS 2. It provides tools for converting ROS messages to and from numpy arrays. In the ROS 2 port, the module has been renamed to
ros2_numpy
. Users are encouraged to update their application code to import
the module as shown below.
pip install ros2-numpy
import ros2_numpy as rnp
Prefacing your calls like rnp.numpify(...)
or rnp.msgify(...)
should help
future proof your codebase while the ROS 2 ports are API compatible.
This module contains two core functions:
arr = numpify(msg, ...)
- try to get a numpy object from a messagemsg = msgify(MessageType, arr, ...)
- try and convert a numpy object to a message
Currently supports:
-
sensor_msgs.msg.PointCloud2
↔ structurednp.array
: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 = ros2_numpy.msgify(PointCloud2, data)
data = ros2_numpy.numpify(msg)
-
sensor_msgs.msg.Image
↔ 2/3-Dnp.array
, similar to the function ofcv_bridge
, but without the dependency oncv2
-
nav_msgs.msg.OccupancyGrid
↔np.ma.array
-
geometry.msg.Vector3
↔ 1-Dnp.array
.hom=True
gives[x, y, z, 0]
-
geometry.msg.Point
↔ 1-Dnp.array
.hom=True
gives[x, y, z, 1]
-
geometry.msg.Quaternion
↔ 1-Dnp.array
,[x, y, z, w]
-
geometry.msg.Transform
↔ 4×4np.array
, the homogeneous transformation matrix -
geometry.msg.Pose
↔ 4×4np.array
, the homogeneous transformation matrix from the origin
Support for more types can be added with:
@ros2_numpy.converts_to_numpy(SomeMessageClass)
def convert(my_msg):
return np.array(...)
@ros2_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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ros2_numpy-0.0.4.tar.gz
.
File metadata
- Download URL: ros2_numpy-0.0.4.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 752aaae7a42a8ad7e2e8ff687bfd131207f16cc634e9d5d279b8ad1e54ca4595 |
|
MD5 | a2ae2d91941df4ec33b6c8a228794622 |
|
BLAKE2b-256 | 3ab944a3f46051bb11c41ca502341d86a345dbc0a3181ce9fc2df6da0a2855c2 |
File details
Details for the file ros2_numpy-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: ros2_numpy-0.0.4-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29bddf902231eac560659408649a9ed4a8925926daa7346f7a50584d020bb658 |
|
MD5 | 2d7f4b34b909a99e58e2a4de4de21c47 |
|
BLAKE2b-256 | 75392079d3c97580991dd40d1b58f7df4418f23a10688d9349e44c7cef55ef6e |