ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
ROS can not publish 2D arrays. Alternatively you can publish a 1D array (use message int32[] data)
import rospy
import numpy as np
from iot_humans_track.msg import int_array1d
if __name__ == "__main__":
rospy.init_node('pub', anonymous=True)
data = np.array([[1,2,3], [4,5,6]])
#Convert to 1d array
data_1d = np.reshape(data,6)
puber = rospy.Publisher('topic', int_array1d, queue_size=10)
while not rospy.is_shutdown():
puber.publish(data_1d)
and convert it later as follows:
import rospy
import numpy as np
from iot_humans_track.msg import int_array1d
def callback(msg):
data_2d = np.reshape(msg.data,(-1,3))
print data_2d
if __name__ == "__main__":
rospy.init_node('sub', anonymous=True)
sub_node = rospy.Subscriber('topic', int_array1d, callback, queue_size=10)
rospy.spin()