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

ros (二) 使用消息传递点云+rviz显示

一、创建环境

catkin_create_pkg pclros  roscpp std_msgs  sensor_msgs pcl_ros pcl_conversions
cd pclros/src
catkin_make
touch pcl_pub.cpp
touch pcl_sub.cpp

二、发布点云消息

#include<ros/ros.h>
#include<sensor_msgs/PointCloud2.h>
#include<pcl_conversions/pcl_conversions.h>
#include<pcl/point_types.h>
#include<pcl/point_cloud.h>int main(int argc, char** argv)
{ros::init(argc, argv, "ros_pub");ros::NodeHandle nh_("~");pcl::PointCloud<pcl::PointXYZ> cloud;cloud.width = 100;cloud.height = 1;cloud.points.resize(100);for(size_t i =0; i< cloud.points.size();i++){cloud.points[i].x = i * 0.5;cloud.points[i].y = i * 0.5;cloud.points[i].z = i * 0.5;}ros::Publisher pcl_pub = nh_.advertise<sensor_msgs::PointCloud2>("/point2", 1);sensor_msgs::PointCloud2 pcl_msg;ros::Rate rate_loop(5);while(nh_.ok()){pcl::toROSMsg(cloud, pcl_msg);pcl_msg.header.frame_id = "map";pcl_msg.header.stamp = ros::Time::now();pcl_pub.publish(pcl_msg);ros::spinOnce();rate_loop.sleep();}return 0;}

三、接收点云消息

#include<ros/ros.h>
#include<pcl/point_cloud.h>
#include<pcl/point_types.h>
#include<pcl_ros/point_cloud.h>
#include<pcl_conversions/pcl_conversions.h>
#include<sensor_msgs/PointCloud2.h>void callBack(const sensor_msgs::PointCloud2ConstPtr& msg)
{pcl::PointCloud<pcl::PointXYZ> cloud;pcl::fromROSMsg(*msg, cloud);ROS_INFO("cv_bridge exception: %d  %d\n", cloud.width ,  cloud.height);
}int main(int argc, char** argv)
{ros::init(argc, argv, "pcl_sub");ros::NodeHandle nh_;ros::Subscriber sub_ = nh_.subscribe<sensor_msgs::PointCloud2>("/point2", 1, callBack);ros::spin();}

四、使用rviz接收消息

点击rviz左下角的add按钮,选择pointcloud2,显示点云,如果发现点云没有显示,则更改pub中的frame_id = “map”,就可以显示出来了。

http://www.lryc.cn/news/574985.html

相关文章:

  • Happy-LLM-Task06 :3.1 Encoder-only PLM
  • C++设计模式(GOF-23)——04 C++装饰器模式(Decorator)(一个类同时继承和组合另一个类)解决类爆炸问题、模板装饰器
  • python3文件操作
  • Node.js特训专栏-实战进阶:8. Express RESTful API设计规范与实现
  • python的智慧养老院管理系统
  • klayout db::edge 里的 crossed_by_point 的坑点
  • mbedtls ssl handshake error,res:-0x2700
  • 从零开始的云计算生活——第二十三天,稍作休息,Tomcat
  • Excel数据转SQL语句(增删改查)
  • 阿里云Web应用防火墙3.0使用CNAME接入传统负载均衡CLB
  • DDNS-GO 使用教程:快速搭建属于自己的动态域名解析服务(Windows 版)
  • 大语言模型的通用局限性与全球技术演进
  • React Native【实战范例】账号管理(含转换分组列表数据的封装,分组折叠的实现,账号的增删改查,表单校验等)
  • 【版本控制教程】如何使用Unreal Engine 5 + UE源代码控制(Perforce P4)
  • 【GPU RAM】实时监控GPU内存分配(一)
  • 微信小程序中scss、ts、wxml
  • 如何在 Manjaro Linux 上安装 Docker 容器
  • 云计算-Azure Functions :构建事件驱动的云原生应用报告
  • 《Effective Python》第十章 健壮性——警惕异常变量消失的问题
  • Encoder-only PLM RoBERTa ALBERT (BERT的变体)
  • 【大模型学习 | 量化】pytorch量化基础知识(1)
  • webpack5 css-loader 配置项中的modules
  • 华为云Flexus+DeepSeek征文|基于Dify+ModelArts打造智能客服工单处理系统
  • 设计模式精讲 Day 13:责任链模式(Chain of Responsibility Pattern)
  • 告别Excel地狱!用 PostgreSQL + ServBay 搭建跨境电商WMS数据中枢
  • 华为运维工程师面试题(英语试题,内部资料)
  • 数据库系统总结
  • AI+智慧高校数字化校园解决方案PPT(34页)
  • 【开源解析】基于PyQt5的智能费用报销管理系统开发全解:附完整源码
  • 博图SCL语言中 RETURN 语句使用详解