【发布时间】:2019-03-01 07:39:17
【问题描述】:
我将以下代码用于发布者和订阅者。我能够在 Rviz 上为输入节点可视化 PointCloud,但无法可视化输出节点。因为我是 ROS 的新手。我该如何解决这个问题?我什至在 Rviz 中设置了固定框架:base_link。
ros::Subscriber subPointCloud;
ros::Publisher pubPointCloud;
void DEM(const sensor_msgs::PointCloud2ConstPtr& input)
{
ROS_DEBUG("Point Cloud Received");
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
sensor_msgs::PointCloud2 output;
// Convert from ROS message to PCL point cloud
pcl::fromROSMsg(*input, *cloud);
pcl::toROSMsg(*cloud, output);
output.header.stamp = ros::Time::now();
output.header.frame_id = "/baselink";
pubPointCloud.publish(output);
}
int main(int argc, char** argv)
{
ROS_INFO("Starting LIDAR Node");
ros::init(argc, argv, "kitti_lidar_node");
ros::NodeHandle nh;
subPointCloud = nh.subscribe<sensor_msgs::PointCloud2>("input", 1, DEM);
pubPointCloud = nh.advertise<pcl::PointCloud<pcl::PointXYZ> > ("output", 1);
ros::spin();
return 0;
}
【问题讨论】:
-
您是否已经尝试设置不带斜线的框架 ID,例如
"base_link"? -
是的,我尝试了两种方式,但不幸的是没有锻炼。
-
rostopic echo /input和rostopic echo /output在终端上给你什么。如果只是重新发送输入,是否会出现点云? -
在终端中运行这两个命令后,我什么也没看到。只是命令运行没有输出。
标签: c++ ros point-cloud-library