Skip to main content

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 message
  • msg = msgify(MessageType, arr, ...) - try and convert a numpy object to a message

Currently supports:

  • sensor_msgs.msg.PointCloud2 ↔ structured dict: # See PointCloud2 message type in ros2

    data = {"xyz": np.random.rand(100, 3), "rgb": np.random.rand(100, 3)}
    msg = ros2_numpy.msgify(PointCloud2, data)
    
    data = ros2_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.OccupancyGridnp.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:

@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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ros2_numpy-0.0.5.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ros2_numpy-0.0.5-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file ros2_numpy-0.0.5.tar.gz.

File metadata

  • Download URL: ros2_numpy-0.0.5.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for ros2_numpy-0.0.5.tar.gz
Algorithm Hash digest
SHA256 e7e446647e5e4d1020ea0e6b389f750d3fdb642bbe3e56ab0e53f41746ddd6f8
MD5 f2282c92b2f25ad2c3691a5674e3793a
BLAKE2b-256 ef1cf693a49765543a890f3cc04f8bb129d1209c2cf85c322f8ea64d189a966c

See more details on using hashes here.

File details

Details for the file ros2_numpy-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: ros2_numpy-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for ros2_numpy-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0c4db675c25cc7de163455d6dcbf338e28aaee5d0805754843f60ac663d48362
MD5 297f8b86314ee484706f8e239e3956ea
BLAKE2b-256 b11bb27812080944ce0657d2bd44e8bf3f89e41af702e157fa9b542cbf02cb2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page