- cd ros_numpy
- pip install -e .
- add following code to ~/.bashrc
export ROS_HOSTNAME=172.16.0.5 # your ip address
export ROS_MASTER_URI=http://172.16.0.3:11311
export ROS_IP=172.16.0.5 # your ip address
#export ROS_MASTER_URI=http://127.0.0.1:11311
#export ROS_HOSTNAME=127.0.0.1
#export ROS_IP=127.0.0.1
- python rgbd_ros.py
Tools for converting ROS messages to and from numpy arrays. Contains two 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 = ros_numpy.msgify(PointCloud2, data)
data = ros_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=Truegives[x, y, z, 0] -
geometry.msg.Point↔ 1-Dnp.array.hom=Truegives[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:
@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
-
Add simple conversions for:
geometry_msgs.msg.Inertia