Skip to content
Tools for converting ROS messages to and from numpy arrays
Branch: master
Clone or download
Latest commit 772af22 Aug 26, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/ros_numpy add bayer_* encoding Mar 25, 2017
test Fix OccupancyGrid serialization, and add a test Apr 25, 2016
.gitignore
.travis.yml Fix travis builds waiting on interactive input Mar 25, 2017
CMakeLists.txt Only run tests if tests are enabled Apr 28, 2018
LICENSE Create LICENSE Aug 25, 2018
README.md
package.xml
setup.py

README.md

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:

    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.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:

@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
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.