Need help with ros_numpy?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

eric-wieser
179 Stars 54 Forks MIT License 48 Commits 11 Opened issues

Description

Tools for converting ROS messages to and from numpy arrays

Services available

!
?

Need anything else?

Contributors list

# 9,907
vhdl
sensor-...
sed
gtk
35 commits
# 53,366
ros
Shell
apollo
HTML
3 commits
# 46,856
Rust
Git
Webpack
uploads
1 commit
# 72,645
C++
C
control...
pixhawk
1 commit
# 291,116
ros
C
Shell
sed
1 commit
# 142,365
Telegra...
amphp
pypi
MATLAB
1 commit
# 128,726
gitlab
travis
Lua
optimal...
1 commit

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

@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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.