当前位置: 首页 > 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”,就可以显示出来了。

相关文章:

  • 城乡建设官网手机优化软件
  • 淘宝网站官网专门培训seo的网站
  • 用花生棒自己做内网网站网络服务公司经营范围
  • 昌吉网站建设哪家便宜做网站排名优化的公司
  • 如何在网站开发国外大客户seo软件安卓版
  • openshift 做网站市场营销专业
  • web目录扫描-御剑
  • Redis跳表(skiplist)底层原理浅析
  • 使用亮数据网页抓取API自动获取Tiktok数据
  • matlab机器人工具箱(Robotics Toolbox)安装及使用
  • 【EDA软件】【应用功能子模块网表提供和加载编译方法】
  • 重置 MySQL root 密码
  • 前端面试专栏-主流框架:13.vue3组件通信与生命周期
  • webman 利用tcp 做服务端 对接物联网
  • C# LINQ语法
  • Boss:攻击
  • 【MQTT】常见问题
  • MySQL之视图深度解析
  • 第2章,[标签 Win32] :编写兼容多字节字符集和 Unicode 字符集的 Windows 程序
  • 【DevTools浏览器开发者工具反调试之无限Debugger跳过】
  • SpringBoot高校党务系统
  • PyTorch RNN实战:快速上手教程
  • Python 数据分析与可视化 Day 7 - 可视化整合报告实战
  • Python核心可视化库:Matplotlib与Seaborn深度解析
  • request这个包中,get 这个方法里传入的是params ,post这个方法里传入的是data 和 json。这个区别是什么?
  • pscc系统如何部署,怎么更安全更便捷?