publish camerainfo: plumb_bob error! (python)

asked 2016-07-26 08:38:40 -0500

nio4990 gravatar image

I'm trying to write a node that publish a camera_info topic:

#!/usr/bin/env python
import cv2
import numpy as np
import rospy
from sensor_msgs.msg import CameraInfo
import time
import yaml


def imput_yaml(calib_file):
    with file(calib_file, 'r') as f:
        params = yaml.load(f)

    cam_info = CameraInfo()
    cam_info.height = params['size']['height']
    cam_info.width = params['size']['width']
    cam_info.distortion_model = 'plumb_bob'
    cam_info.K = params['cameraMatrix']['data']
    cam_info.D = params['distortionCoefficients']['data']
    cam_info.R = params['rotation']['data']
    cam_info.P = params['projection']['data']
    return cam_info

def publisher(cam_info,cam_pub):
    stamp = rospy.Time.from_sec(time.time())
    cam_info.header.stamp = stamp
    cam_pub.publish(cam_info)

if __name__ == '__main__':
    rospy.init_node('tester')
    cam_info = imput_yaml('test.yaml')
    cam_pub = rospy.Publisher('testing', CameraInfo)

    try:
        while not rospy.is_shutdown():
            publisher(cam_info,cam_pub)
            rospy.sleep(1.0)

    except rospy.ROSInterruptException:
        pass

but then i got this error message:

  File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/topics.py", line 856, in publish
    raise ROSSerializationException(str(e))
rospy.exceptions.ROSSerializationException: <class 'struct.error'>: 'pack expected 12 items for packing (got 16)' when writing 'plumb_bob'

can anyone please help me?

edit retag flag offensive close merge delete

Comments

What is the content of the test.yaml file?

Ruben Alves gravatar image Ruben Alves  ( 2017-08-28 06:46:33 -0500 )edit