读取iai_kinect2的点云数据并且在rviz显示

读取iai_kinect2的点云数据并且在rviz显示

1.安装iai_kinect2

2.创建getcloud功能包并且编写getcloud.cpp文件

2.1在工作空间的src文件目录下创建功能包

catkin_create_pkg getcloud roscpp rospy sensor_msgs  std_msgs

读取iai_kinect2的点云数据并且在rviz显示_第1张图片
注释:libfreenect2功能包是笔者其他用处,不用管,忽略掉,也可以参考另外一篇关于Kinect的博客有介绍。

2.2在创建的功能包的src文件下编写getcloud.cpp文件

读取iai_kinect2的点云数据并且在rviz显示_第2张图片
总代码:

#include "ros/ros.h"
#include 
 
 
class SubscribeAndPublish
{
private:
  ros::NodeHandle n_; 
  ros::Publisher pub_;
  ros::Subscriber sub_;
  
public:
  SubscribeAndPublish()
  {
    //Topic you want to publish
    pub_ = n_.advertise<sensor_msgs::PointCloud2>("cloud2", 50);
 
    //Topic you want to subscribe
    sub_ = n_.subscribe("/kinect2/sd/points", 1, &SubscribeAndPublish::callback, this);
  }
 
  void callback(const sensor_msgs::PointCloud2& msg)
  {
     ROS_INFO("OK");
     pub_.publish(msg);
  }
 
 
 
};//End of class SubscribeAndPublish
 
int main(int argc, char **argv)
{
  //Initiate ROS
  ros::init(argc, argv, "subscribe_and_publish");
 
  
  //Create an object of class SubscribeAndPublish that will take care of everything
  SubscribeAndPublish SAPObject;
 
  ros::spin();
 
  return 0;
}

2.3修改cmakelist的编译规则

读取iai_kinect2的点云数据并且在rviz显示_第3张图片
在build的最底下加上两行代码,第一行意思是将getcloud.cpp编译成可执行文件getcloud。

add_executable(getCloud src/getCloud.cpp)
target_link_libraries(getCloud ${catkin_LIBRARIES})

2.4返回总的工作空间下进行编译

catkin_make

3.测试程序

3.1打开第一个终端运行kinect2_bridge

roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true 

读取iai_kinect2的点云数据并且在rviz显示_第4张图片

3.2打开第二个终端运行刚刚编写的cpp的节点

rosrun getcloud getCloud 

读取iai_kinect2的点云数据并且在rviz显示_第5张图片

3.3打开第三终端运行rviz

rviz

首先在fixed frame选择kinect2_link
其次在topic选择/cloud2
读取iai_kinect2的点云数据并且在rviz显示_第6张图片

参考链接:

1.读取iai_kinect2数据+处理+rviz显示
本文主要参考第一个链接,此链接主要讲了大体方法。

2.使用Rviz查看基于iai_kinect2的kinect2_bridge发布的实时点云和Octomap_server发布的实时octomap数据
此应该实现的第二种方法,可以参考;

3.http://octomap.github.io/

你可能感兴趣的:(#,ros-机器视觉)