【发布时间】:2017-03-31 00:15:47
【问题描述】:
我是 ROS 和 rospy 的新手,不熟悉非简单数据类型作为主题。
我想构建一个 ROS 节点作为订阅者和发布者:它接收一个主题(两个 float64 的列表),并使用一个函数(比如 my_function)返回一个列表列表 @987654323 @,然后将此列表列表发布为主题。
为此,我构建了一个节点,如下所示:
from pymongo import MongoClient
from myfile import my_function
import rospy
import numpy as np
pub = None
sub = None
def callback(req):
client = MongoClient()
db = client.block
lon = np.float64(req.b)
lat = np.float64(req.a)
point_list = my_function(lon, lat, db)
pub.publish(point_list)
def calculator():
global sub, pub
rospy.init_node('calculator', anonymous=True)
pub = rospy.Publisher('output_data', list)
# Listen
sub = rospy.Subscriber('input_data', list, callback)
print "Calculation finished. \n"
ros.spin()
if __name__ == '__main__':
try:
calculator()
except rospy.ROSInterruptException:
pass
我清楚地知道订阅者和发布者中的list 不是消息数据,但我不知道如何修复它,因为它不是整数也不是整数列表。
【问题讨论】:
标签: python publish-subscribe ros rospy