ROS2下Rviz显示orbbec相机depth深度图

ROS2下Rviz显示orbbec相机depth深度图

视频讲解

ROS2下Rviz显示orbbec相机depth深度图

在《ROS2下编写orbbec相机C++ package并Rviz显示》的基础上,继续添加depth图像的获取及显示

复制代码
rgb_publisher_ = this->create_publisher<sensor_msgs::msg::Image>("rgb_image", 10);
depth_publisher_ = this->create_publisher<sensor_msgs::msg::Image>("depth_image", 10);

rclcpp::Publisher<sensor_msgs::msg::Image>::SharedPtr rgb_publisher_;
rclcpp::Publisher<sensor_msgs::msg::Image>::SharedPtr depth_publisher_;

将原来的publisher变量变成rgb,并增加depth发布者,同时将深度图像的消息名称命名为depth_image

复制代码
void timer_callback()
{
    //CV_8UC3 8位无符号3通道图像
    cv::Mat rgb_image = cam_.getImg();
    sensor_msgs::msg::Image::SharedPtr rgb_msg = cv_bridge::CvImage(std_msgs::msg::Header(), "bgr8", rgb_image).toImageMsg();
    rgb_publisher_->publish(*rgb_msg);
    //CV_16UC1 16位无符号单通道图像
    cv::Mat depth_image = cam_.getDepth();
    sensor_msgs::msg::Image::SharedPtr depth_msg = cv_bridge::CvImage(std_msgs::msg::Header(), "mono16", depth_image).toImageMsg();
    depth_publisher_->publish(*depth_msg);
    // RCLCPP_INFO(this->get_logger(), "Publishing image");
}

只需要修改time_callback函数即可,增加cam_.getDetph();图像的类型为16位单通道无符号,所以要将cv_brige的格式改成mono16,不然会出现格式转换有问题的现象

复制代码
sudo su
colcon build --packages-select orbbec_cam_pkg
source install/setup.bash 
ros2 run orbbec_cam_pkg image_publisher  

切换到sudo,编译,运行,另起一个窗口启动Rviz2

再添加一个Image,Topic选择/depth_image,如果图像不显示,则将三个policy全选System Default即可

相关推荐
IT成长日记33 分钟前
05【Linux经典命令】Linux 用户管理全面指南:从基础到高级操作
linux·运维·服务器·用户管理·命令
Sapphire~6 小时前
Linux-07 ubuntu 的 chrome 启动不了
linux·chrome·ubuntu
伤不起bb6 小时前
NoSQL 之 Redis 配置与优化
linux·运维·数据库·redis·nosql
广东数字化转型7 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
啵啵学习7 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
中达瑞和-高光谱·多光谱7 小时前
中达瑞和SHIS高光谱相机在黑色水彩笔墨迹鉴定中的应用
人工智能·数码相机
把玩计算机7 小时前
【相机基础知识与物体检测】更新中
数码相机
半桔8 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
网硕互联的小客服8 小时前
如何利用Elastic Stack(ELK)进行安全日志分析
linux·服务器·网络·安全
冰橙子id9 小时前
linux——磁盘和文件系统管理
linux·运维·服务器