ROS下驱动Intel RealSense深度相机D435i(二)

前言

续上篇介绍Intel 深度摄像头D435i的安装与环境的搭建,现在准备在ROS功能包下驱动Intel D435i,起个抛砖引玉的作用,具体想实现啥功能,就靠大家自行探索啦!

环境配置

ROS环境:Ubuntu18.04 + Melodic
ROS IDE:Qt Creator 4.9.2

功能包建立及C++节点编写

新建个opencv_tutorial功能包,指令如下

mkdir -p opencv_tutorial/src
cd ~/opencv_tutorial
catkin_make

打开Qt工具,选择刚刚创建的opencv_tutorial功能包,在src文件下建立opencv_tutorial文件,如下图示
在这里插入图片描述

然后在opencv_tutorial/src的文件夹下创建一个basic_opencv.cpp节点。
在这里插入图片描述
为了将opencv库添加到ROS环境里,需要在CMakeLists.txt文件里增加以下内容,改动处见下图标识
在这里插入图片描述
在这里插入图片描述
编写basic_opencv.cpp节点文件,内容如下

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

using namespace cv;
using namespace std;

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

  cout << "OpenCV version :" << CV_VERSION << endl;
  cout << "Major version :" << CV_MAJOR_VERSION << endl;
  ROS_INFO("Hello world!");

  double width;
  double height;
  double exposure;
  double brightness;

  Mat img;

  VideoCapture vc(4);

  width = vc.get(CAP_PROP_FRAME_WIDTH);
  height = vc.get(CAP_PROP_FRAME_HEIGHT);
  exposure = vc.get(CAP_PROP_EXPOSURE);
  brightness = vc.get(CAP_PROP_BRIGHTNESS);
  cout << "width :" << width << endl;
  cout << "height :" << height << endl;
  cout << "exposure :" << exposure << endl;
  cout << "brightness :" << brightness << endl;

  namedWindow("video",1);

  ros::Rate loop_rate(60);

  while (ros::ok()) {
    vc >> img;
    flip(img,img,1);
    imshow("video",img);
    if(waitKey(10)==27) break;
    ros::spinOnce();
    loop_rate.sleep();
}
 return 0;
}

然后在终端把功能包编译,添加到ROS环境里,敲以下指令就可以在框内显示摄像头拍摄到的内容,效果如下

rosrun opencv_tutorial basic_opencv

在这里插入图片描述


版权声明:本文为qq_43412584原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。