ROS——XYZRGB点云存储与读取
ROS——XYZRGB点云存储与读取
1、配置
在package.xml中添加
<build_depend>pcl_ros</build_depend>
<build_depend>geometry_msgs</build_depend>
<run_depend>pcl_ros</run_depend>
<run_depend>geometry_msgs</run_depend>
在CMackList.txt中添加(红色部分)
第一部分:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
rostime sensor_msgs
message_filters
cv_bridge
image_transport
compressed_image_transport
compressed_depth_image_transport
pcl_ros
)
第二部分:
find_package(PCL REQUIRED)
##Add include directories
include_directories(include
${PCL_INCLUDE_DIRS}
)
##Add link directories
link_directories(
${PCL_LIBRARY_DIRS}
)
第三部分:
add_executable(d_1 src/d_1.cpp)
target_link_libraries(d_1
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
${kinect2_bridge_LIBRARIES}
${PCL_LIBRARIES}
)
2.XYZRGB点云存储
参考:https://blog.****.net/guo1988kui/article/details/80523271
(1)将参考链接的代码拷贝为d_2.cpp,同时需在CmakeList.txt进行添加
add_executable(d_2 src/d_2.cpp)
target_link_libraries(d_2
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
${kinect2_bridge_LIBRARIES}
${PCL_LIBRARIES}
)
install(TARGETS save_rgbd_from_kinect2 1 mix2 d_1 d_2
#ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
#LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
(2)运行roslaunch openni_launch openni.launch
(3)在需要存储pcd的文件夹中打开terminal,运行d_2.cpp (rosrun kinect_v1 d_2)(运行前注意要roscore)
(4)按照链接中的点击空格进行存储,如图所示
3.XYZRGB点云读取
(1) 程序如图,参考图书ROS机器人程序设计(点云部分)
(2)同时也要进行CMakeList.txt的配置
add_executable(pcl_read src/pcl_read.cpp)
target_link_libraries(pcl_read
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
${kinect2_bridge_LIBRARIES}
${PCL_LIBRARIES}
)
(3)在pcl_read中填写了需要被读取的pcd文件,接下来需要在存储该pcd文件的目录里打开terminal
运行rosrun kinect_v1 pcl_read
(4)运行rviz,设置为pcl_read的frame_id=odom 添加主题PointCloud2
(5)对比保存前的本身/camera/depth_registered/points主题,如图