ROS de l'édition de tableau de python nœud
Je suis nouveau sur ros+python et je suis en train de publier un 1-D tableau de python ros nœud. J'ai utilisé Int32MultiArray mais je ne peux pas comprendre le concept de mise en page dans multiarray. Quelqu'un peut-il m'expliquer? ou est-il un autre moyen de la publication d'un tableau ?
Grâce.
#!/usr/bin/env python
import roslib
roslib.load_manifest('test_drone')
import numpy
import rospy
import sys
import serial
from std_msgs.msg import String,Int32,Int32MultiArray,MultiArrayLayout,MultiArrayDimension
from rospy.numpy_msg import numpy_msg
from rospy_tutorials.msg import Floats
#port = "dev/ttyS0"
#baud = 115200
#ser = serial.Serial()
#ser.port = port
#ser.baudrate = baud
################################################################################################
def main(args):
pub=rospy.Publisher('sonar_vals',Int32MultiArray,queue_size = 10)
rospy.init_node('ca_serial')
r = rospy.Rate(0.2)
while not rospy.is_shutdown():
print "LOOP running"
a = [3250,2682,6832,2296,8865,7796,6955,8236]
pub.publish(a)
r.sleep();
# try:
#data_raw = ser.readline()
# except e:
# print e
#sd = data_raw.split(',')
#a = numpy.array([sd[0],sd[1],sd[2],sd[3],sd[4],sd[5],sd[6],sd[7],sd[8],sd[9]],dtype=numpy.float32)
#if sd[0] == 777:
# pub.publish(a)
# else:
# print 'Invalid Data'
if __name__ == '__main__':
import sys, getopt
main(sys.argv)
Vous devez vous connecter pour publier un commentaire.
La
*MultiArray
les messages sont un peu exagéré dans votre cas. Je pense que c'est beaucoup plus simple si vous créez votre propre message simple de typeIntList
pour cela (voir ce tutoriel sur la façon de créer des messages personnalisés). LeIntList.msg
-fichier se présente comme suit:De publier une liste avec ce message, utilisez le code suivant:
Notez que vous ne pouvez pas directement la publication de la liste, mais avoir à instancier un
IntList
objet et remplissez ledata
membre de cet objet (cela vaut pour tous les types de messages, même si vous voulez juste de publier un entier!).Si vous ne souhaitez utiliser
MultiArray
, essayez: