如何在我的ros系统中添加sensor_msgs.msg类型?

时间:2019-06-01 22:59:45

标签: python linux opencv raspberry-pi ros

我正在Raspberry Pi 3 Model B(包含Raspbian Stretch Lite)上使用 ROS Kinetic 。好吧,当我在特定的ws中创建一个程序包以将视频从Raspberry Pi传输到Linux远程PC时,我收到有关名为 sensor_msgs.msg 的msg类型的导入错误。当我在Linux PC上运行相同的代码时,它可以工作。但是由于该错误( sensor_msgs.msg ),它在Raspberry Pi上不起作用。

我想使用ros在树莓派上建立发布者。我该怎么办才能解决此错误?使用此命令 $ rosmsg list |在rosmsg列表中找不到此消息类型。 grep sensor_msgs

这是我在Raspberry Pi上的代码清单

#!/usr/bin/env python

import cv2
import rospy
from sensor_msgs.msg **import** Image
from cv_bridge import CvBridge, CvBridgeError

def main():
    cap = cv2.VideoCapture(0)
    rospy.init_node('stream_video',anonymous=False)
    front_pub = rospy.Publisher('/image_front',Image,queue_size=1)
    rate = rospy.Rate(30)
    bridge = CvBridge()

    while not rospy.is_shutdown():

        try:
            ret, frame = cap.read()
            if ret == True:
                img = bridge.cv2_to_imgmsg(frame, 'bgr8')
                front_pub.publish(img)

        except KeyboardInterrupt:
            break
        rate.sleep()

if __name__ == '__main__':
    main()

pi @ raspberrypi 〜/ selfdriving_ws / src / camera_stream / src $ rosrun camera_stream stream_video.py 追溯(最近一次通话):   在第5行的“ /home/pi/selfdriving_ws/src/camera_stream/src/stream_video.py”文件中     从sensor_msgs.msg导入图像 ImportError:没有名为sensor_msgs.msg的模块

2 个答案:

答案 0 :(得分:0)

我从不在RPI上运行它。在普通PC中,没有这种问题。

可能有几种可能的原因,例如CMAKE文件问题。 sensor_msgs未安装/不兼容,配置错误等

从您的话说:“当我使用此命令$ rosmsg list | grep sensor_msgs时,在rosmsg列表中找不到此消息类型。”我猜是因为您没有安装它或安装了不兼容的版本。

尝试使用wstools安装

{{1}}

答案 1 :(得分:0)

尝试安装ROS传感器消息包:

sudo apt-get install ros-<distro>-sensor-msgs

例如,如果您使用的是Kinetic版本的ROS:

sudo apt-get install ros-kinetic-sensor-msgs

然后尝试导入:

from sensor_msgs.msg import Image