PointCloud2和RobotOS.jl:ROSSerializationException(“字段数据必须是列表或元组类型”,)

时间:2019-08-02 16:34:45

标签: julia ros

我正在尝试通过Julia RobotOS.jl包发布sensor_msgs / PointCloud2。但是,出现以下错误。

PyError ($(Expr(:escape, :(ccall(#= /home/comrob/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:44 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) <class 'rospy.exceptions.ROSSerializationException'>
ROSSerializationException('field data must be a list or tuple type',)
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/topics.py", line 886, in publish
    raise ROSSerializationException(str(e))

我将代码简化为一个最小的示例,试图从订阅的主题重新发布pc2。

using RobotOS
@rosimport sensor_msgs.msg: PointCloud2
rostypegen()
using .sensor_msgs.msg

function callback(msg::PointCloud2, pub::Publisher{PointCloud2})

  try
    println("Received pc2 msg.")
    publish(pub, msg)
    println("Republished pc2 msg.")
  catch e
    println("pc2 callback exception: ", e)
  end

end

init_node("pc2_example")
pub = Publisher{PointCloud2}("/terrain/elevation", queue_size=1)
sub = Subscriber{PointCloud2}("/camerad/depth/color/points_throttle", callback, (pub,), queue_size=1)

spin()

仅当有内容订阅“ / terrain / elevation”主题时,才会出现错误。否则,代码将运行而不会出现任何错误,尽管我实际上必须手动捕获回调中发生的任何错误,否则它们不会被打印出来。

订阅的主题中的pc2消息是从rosbag播放的,rosbag是从RealSense D435记录的。我没有在使用Julia,Python或C ++解析这些点云时遇到任何重大问题,因此消息应该没问题。无论如何,我最初在尝试发布自己的一些pc2消息时遇到了问题,并且仅尝试重新发布以确保消息本身是有效的。

有什么主意要怎么做吗?

0 个答案:

没有答案