当前位置: 首页 > news >正文

rviz可视化(一、可视化点云)

目录

一、点云数据路径

二、导入相关头文件

三、编写主程序代码

四、CMakeLists文件编写

五、rviz配置


参考链接:学习笔记:使用Octomap将点云地图pcd转换为三维栅格地图,并在rviz中可视化_点云地图转为占据栅格地图-CSDN博客

Octomap 在ROS环境下实时显示_octomap在ros环境下实时显示-飞天熊猫-CSDN博客

一、点云数据路径

https://github.com/RuPingCen/publish_pointcloud/tree/master/data

二、导入相关头文件

#include <ros/ros.h>
#include <pcl/point_cloud.h> 
#include <pcl_conversions/pcl_conversions.h> 
#include <pcl/io/pcd_io.h>
#include <sensor_msgs/PointCloud2.h>

三、编写主程序代码

int main(int argc, char** argv) {
    ros::init(argc, argv, "publish_pointcloud");  // 初始化ROS节点
    ros::NodeHandle nh;  // 创建节点句柄
 
    // 从参数服务器获取参数
    std::string path = "/home/yzh/catkin_ws_acados_mpc/src/mpc_controller/data/test2.pcd";
    std::string frame_id = "map";
    std::string topic = "pointcloud_topic";
    int hz = 5;  // 发布频率,单位 Hz
 
    // 加载点云数据到pcl::PointCloud对象中
    pcl::PointCloud<pcl::PointXYZ> pcl_cloud; 
    pcl::io::loadPCDFile(path, pcl_cloud);  // 从文件加载点云数据
    // 创建Publisher对象,将点云数据发布到指定话题
    ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2>(topic, 10);          
    // 转换PCL点云到ROS下的 PointCloud2 类型
    sensor_msgs::PointCloud2 output;  
    pcl::toROSMsg(pcl_cloud, output);
 
    output.header.stamp = ros::Time::now();  // 设置时间戳
    output.header.frame_id = frame_id;  // 设置坐标系框架
 
    // 打印参数信息
    std::cout << "path = " << path << std::endl;
    std::cout << "frame_id = " << frame_id << std::endl;
    std::cout << "topic = " << topic << std::endl;
    std::cout << "hz = " << hz << std::endl;
 
    ros::Rate loop_rate(hz);  // 设置发布频率  
    while (ros::ok())  
    {  
        pcl_pub.publish(output);  // 发布 PointCloud2 数据
        ros::spinOnce();  // 处理所有回调函数
        loop_rate.sleep();  // 按照指定频率睡眠
    }

四、CMakeLists文件编写

主要是将点云相关的包找到。

cmake_minimum_required(VERSION 3.0.2)
project(mpc_controller)
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)
find_package(PCL REQUIRED)
include_directories(
  ${catkin_INCLUDE_DIRS}
  ${PCL_INCLUDE_DIRS}
)
target_link_libraries(map_node
  ${catkin_LIBRARIES}
  ${PCL_LIBRARIES}
)

五、rviz配置

给点云变颜色,根据z轴变颜色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/100679.html

相关文章:

  • 4. Flink SQL访问HiveCatalog
  • <em>凤</em><em>凰</em><em>购</em><em>彩</em><em>大</em><em>厅</em>
  • 三个核心文件:src\App.vue文件,index.html文件,src\main.js文件 的关系与运行流程解析(通俗形象)
  • L2-037 包装机 (分数25)(详解)
  • DeepSeek协助优化-GTX750Ti文物显卡0.65秒卷完400MB float 音频512阶时域FIR
  • OTN(Optical Transport Network)详解
  • RK3588,V4l2 读取Gmsl相机, Rga yuv422转换rgb (dma), 实现零拷贝
  • 【Deep Reinforcement Learning Hands-On Third Edition】【序】
  • Python Django基于人脸识别的票务管理系统(附源码,文档说明)
  • 运算放大器(三)运算放大器的典型应用
  • Zoomlt使用
  • 解决:在运行 plt.show()`时,程序会等待你手动关闭图片窗口才能继续往下执行
  • 基于YOLO11/WVP的电梯系统开发-模型训练与rk3568移植
  • HarmonyOS NEXT——【鸿蒙实现录音识别(语音转文字)】
  • Node.js 技术原理分析系列 —— Node.js 调试能力分析
  • 正则化是什么?
  • Anolis OS 8.4修复CVE-1999-0554漏洞记录
  • 操作系统——线程的概念和特点
  • ssm框架之Spring
  • BIM/I-FGSM对抗样本生成算法实现(pytorch版)
  • Java-01-源码篇-JUC并发编程-常用类
  • 并查集基础模板(java实现)
  • 【力扣hot100题】(019)旋转图像
  • Kubernetes深度解析:云原生时代的容器编排引擎
  • 树莓派5从零开发至脱机脚本运行教程——8.设置静态IP地址篇
  • 【行测】资料分析
  • XML标签格式转换为YOLO TXT格式
  • 通义千问Qwen2.5-Omni:全模态实时交互的下一代多模态大模型
  • 小蓝和钥匙
  • 机器学习stats_linregress