ROS实验笔记之——XBOX Kinect2 的使用及基于RTAB-MAP的建图

82 篇文章 120 订阅

最近准备弄一下ORB-SLAM的实验,先写下本博文记录一下Kinect2的配置~
先给出一个视频看看效果哈~

基于 Kinec的3D重建

最终的建图效果

基于 Kinec的3D重(最终建图效果)


 

目录

安装Kinect2的驱动

测试

rtabmap

补充

参考资料:


 

安装Kinect2的驱动

#下载libfreenect2源代码
git clone https://github.com/OpenKinect/libfreenect2.git     

#安装cmake编译器和必要的依赖
sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev   
sudo apt-get install libglfw3-dev
sudo apt-get install libopenni2-dev

#安装最新版libusb-dev
sudo apt-get install libusb-dev 

#缺少这个依赖下面会报错[来自github解答](https://github.com/OpenKinect/libfreenect2/issues/984)   
sudo apt-get install libturbojpeg0-dev

#开始编译过程
cd libfreenect2
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2    #地址可以修改,但是后面对应也有些需要修改。
make
sudo make install

#设定udev rules:(填好自己libfreenect2的路径)
sudo cp ~/libfreenect2/platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

然后运行下面代码测试

./bin/Protonect
./bin/Protonect gl  # to test OpenGL support.
./bin/Protonect cl  # to test OpenCL support.
./bin/Protonect cpu # to test CPU support.

貌似报错了,试试重启

发现还是不行,原来是插头的问题,换一个口就可以了~

接下来安装iai_kinect2。但此处改为安装一个比较好的工程(https://github.com/ArghyaChatterjee/SDK-Installation-ROS-Wrapper-for-Kinect-v2-on-Ubuntu-18.04):

git clone https://github.com/ArghyaChatterjee/SDK-Installation-ROS-Wrapper-for-Kinect-v2-on-Ubuntu-18.0
cd iai_kinect2
rosdep install -r --from-paths 
rosdep install --from-paths ~/catkin_ws/src/SDK-Installation-ROS-Wrapper-for-Kinect-v2-on-Ubuntu-18.04/iai_kinect2 --ignore-src -r

然后cm一下

cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

貌似是源文件不是cpp文件,重命名一下即解决。但还是报错

将kinect2_viewer的CMakeLists.txt修改如下:

cmake_minimum_required(VERSION 2.8.3)
project(kinect2_viewer CXX)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBT_USE_DOUBLE_PRECISION -Wall")
# Unused warnings
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized -Winit-self -Wunused-function -Wunused-label -Wunused-variable -Wunused-but-set-variable -Wunused-but-set-parameter")
# Additional warnings
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Warray-bounds -Wtype-limits -Wreturn-type -Wsequence-point -Wparentheses -Wmissing-braces -Wchar-subscripts -Wswitch -Wwrite-strings -Wenum-compare -Wempty-body -Wlogical-op")

# Check for c++11 support
INCLUDE(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
IF(COMPILER_SUPPORTS_CXX11)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
ELSEIF(COMPILER_SUPPORTS_CXX0X)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
ELSE()
  MESSAGE(ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
ENDIF()

find_package(catkin REQUIRED COMPONENTS roscpp rostime std_msgs sensor_msgs message_filters cv_bridge image_transport compressed_image_transport compressed_depth_image_transport kinect2_bridge)

## System dependencies are found with CMake's conventions
find_package(OpenCV REQUIRED)
find_package(OpenMP)
find_package(PCL REQUIRED)
find_package(Pangolin REQUIRED)

if(OPENMP_FOUND)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()

################################################
## Declare ROS messages, services and actions ##
################################################

###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if you package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES kinect2_viewer
#  CATKIN_DEPENDS other_catkin_pkg
#  DEPENDS system_lib
)

###########
## Build ##
###########

# Display additional files in qtcreator
execute_process(COMMAND find ${PROJECT_SOURCE_DIR} -type f OUTPUT_VARIABLE FILES_STRING)
string(REPLACE "\n" ";" FILES_LIST ${FILES_STRING})
add_custom_target(additional_files_${PROJECT_NAME}
  SOURCES
  ${FILES_LIST}
)

include_directories(include
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
  ${PCL_INCLUDE_DIRS}
  ${kinect2_bridge_INCLUDE_DIRS}
)

add_executable(kinect2_viewer src/viewer.cpp)
target_link_libraries(kinect2_viewer
  ${catkin_LIBRARIES}
  ${OpenCV_LIBRARIES}
  ${PCL_LIBRARIES}
  ${kinect2_bridge_LIBRARIES}
)

include_directories( 
${Pangolin_INCLUDE_DIRS}
/home/kwanwaipang/catkin_ws/src/ORB_SLAM2/include
)

#############
## Install ##
#############

# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# install(PROGRAMS
#   scripts/my_python_script
#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Mark executables and/or libraries for installation
install(TARGETS kinect2_viewer
#   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
#   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

## Mark cpp header files for installation
# install(DIRECTORY include/${PROJECT_NAME}/
#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
#   FILES_MATCHING PATTERN "*.h"
#   PATTERN ".svn" EXCLUDE
# )

## Mark other files for installation (e.g. launch and bag files, etc.)
# install(FILES
#   # myfile1
#   # myfile2
#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )

#############
## Testing ##
#############

## Add gtest based cpp test target and link libraries
# catkin_add_gtest(${PROJECT_NAME}-test test/test_kinect2_bridge.cpp)
# if(TARGET ${PROJECT_NAME}-test)
#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()

## Add folders to be run by python nosetests
# catkin_add_nosetests(test)

target_link_libraries(kinect2_viewer
  ${catkin_LIBRARIES}
  ${OpenCV_LIBRARIES}
  ${PCL_LIBRARIES}
  ${kinect2_bridge_LIBRARIES}
  ${Pangolin_LIBRARIES}
  /home/kwanwaipang/catkin_ws/src/ORB_SLAM2/lib/libORB_SLAM2.so
)

即可正常编译

测试

roslaunch kinect2_bridge kinect2_bridge.launch
rosrun kinect2_viewer kinect2_viewe

安装rtabmap
 

sudo apt-get install ros-melodic-rtabmap-ros

然后运行

roslaunch kinect2_bridge kinect2_bridge.launch
roslaunch rtabmap_ros rgbd_mapping_kinect2.launch resolution:=hd

开启rviz
 

roslaunch kinect2_bridge kinect2_bridge_custom_rviz_qhd.launch  #to open qhd video stream in ROS.
roslaunch kinect2_bridge kinect2_bridge_custom_rviz_hd.launch   #to open hd video stream in ROS.
roslaunch kinect2_bridge kinect2_bridge_custom_rviz_sd.launch   #to open sd video stream in ROS.

整体效果如视频所示

 

rtabmap

http://wiki.ros.org/rtabmap_ros

Real-Time Appearance-Based Mapping。这是一个基于具有实时约束的全局环路闭合检测器的RGB-D SLAM方法,建立的应该是稠密SLAM地图

这个包可以用于创建环境的3D点云以及用于导航的2D的栅格地图
学习教程可以参考:https://www.ncnynl.com/archives/201806/2453.html
 

 

补充

按照网上的资料安装好驱动如下:

./bin/Protonect

然后安装包

再运行
 

roscore
roslaunch kinect2_bridge kinect2_bridge.launch
rosrun kinect2_viewer kinect2_viewer
roslaunch kinect2_bridge kinect2_bridge.launch depth_method:=opengl reg_method:=cpu

查看图像

rosrun kinect2_viewer kinect2_viewer sd cloud
rosrun rqt_image_view rqt_image_view
rosrun image_view image_view image:=/kinect2/hd/image_color

 

 

 

参考资料:

https://github.com/ArghyaChatterjee/SDK-Installation-ROS-Wrapper-for-Kinect-v2-on-Ubuntu-18.04

https://blog.csdn.net/moumourenaini/article/details/103377012

https://blog.csdn.net/moumourenaini/article/details/103377012

https://blog.csdn.net/p942005405/article/details/87978803

https://blog.csdn.net/yeluohanchan/article/details/75769512
https://www.cnblogs.com/gaoxiang12/p/5161223.html

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值