ORB-SLAM3在树莓派4B ubuntu-20.04上跑单目摄像头ROS数据接收不到的问题

测试环境:

  • Hardware : BCM2835
  • Model       : Raspberry Pi 4 Model B Rev 1.4  
  • CPU         : 4x Cortex A72 
  • Linux version 5.4.0-1052-raspi (buildd@bos02-arm64-043) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #58-Ubuntu SMP PREEMPT Mon Feb 7 16:52:35 UTC 2022
  • Orb-SLAM3: V1.0, December 22th, 2021
  • ROS         : noetic
  • Camera    : 640 x 480 @ 25Hz

问题描述:

1、运行:

Terminal 1:

gland@gland-desktop:~$ roscore

Terminal 2:

gland@gland-desktop:~/Downloads/ORB_SLAM3-master$ rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples_old/Monocular/EuRoC.yaml 

2、播放标准数据集正常:

Terminal 3:

gland@gland-desktop:~/Downloads/DataSet$ rosbag play MH_01_easy.bag 

视频图像数据rostopic 为: [Examples_old/ROS/ORB_SLAM3/src/ros_mono.cc]

image_transport::Subscriber sub = it.subscribe("cam0/image_raw",1,&ImageGrabber::GrabImage,&igb);

3、停止 “rosbag play MH_01_easy.bag”,改为本地摄像头视频:

摄像头端发送视频代码为:

#include <ros/ros.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>

using namespace cv;
using namespace std;

int main(int argc,char** argv)
{
        ros::init(argc,argv,"image_publisher");
        ros::NodeHandle nh;

        image_transport::ImageTransport it(nh);
        image_transport::Publisher pub = it.advertise("cam0/image_raw",1);

        ROS_INFO("camera open ...");
        VideoCapture cam(0);

        if(!cam.isOpened())
        {
                exit(0);
        }
        ROS_INFO("camera opened!");

        Mat srcframe;
        ros::Rate loop_rate(10);

        while(nh.ok())
        {
                cam >> srcframe;
                sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(),"mono8",srcframe).toImageMsg();
                pub.publish(msg);
                ros::spinOnce();
                loop_rate.sleep();
                ROS_INFO("send image");
        }
}

问题:

(1)ORB-SLAM3 Mono 接收不到视频数据;

(2)长时间等待后,能接收到摄像头发送的数据;

测试:

(1)rqt_graph 查看,节点的话题发布和订阅正常

(2)摄像头拍摄复杂图像(特征点多),Mono端较快出现图像并显示特征点

(3)摄像头拍摄简单图像(特征点少),Mono端不能出现图像,“WAITING FOR IMAGES”

(4)将摄像头由简单图像移动到复杂图像时,Mono端会捕捉到特征点,开始输出并显示图像。

结论:

ORB-SLAM3 Mono 在完成特征点抓取后才会首次输出并显示图像。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值