ROS kinetic安装、Kinect2驱动安装和配置

为了以后的人可以少走弯路,我会尽可能的列出自己遇到的问题和解决方法。

提一个非常实用的建议:多用谷歌搜索。

1、安装ROS

在安装ROS之前,我们需要了解ROS的版本,ROS分为1.0和2.0,ROS1.0的运行环境为Linux,普遍被大家所接受,2.0的正式版是去年出的,虽然说可以在windows下运行,但是稳定性不敢保证,再者2.0也是基于1.0开发的,所以初学者还是要学习1.0。

具体的介绍可以参考古月居http://www.guyuehome.com/1228,包括之后的学习阶段也可以参考他的建议。

具体的安装过程参考ROS wiki http://wiki.ros.org/cn/kinetic/Installation/Ubuntu

ROS的常用版本有以下几种:

ROS kinetic安装、Kinect2驱动安装和配置_第1张图片

ROS的版本与Ubuntu的版本相互对应,千万别装错了!

 

ROS版本 Ubuntu版本
ROS indigo Ubuntu 14.04
ROS kinetic Ubuntu 16.04

目前最常用的版本是这两个,之前用的是ROS indigo,因为换了16.04的系统,所以ROS的版本也换了,但是安装过程都是一样的(indigo与kinetic替换)。

1.1、软件中心配置

ROS kinetic安装、Kinect2驱动安装和配置_第2张图片

最好选用中国的源,阿里云、中科大、清华等都可以。

1.2、添加软件源

打开终端输入:

apt-cache search ros-kinetic

 

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

添加keys:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

1.3、安装过程

保证系统的软件包索引最新:

sudo apt-get update

通过apt安装ROS完整版    :

sudo apt-get install ros-kinetic-desktop-full

安装完成后可通过以下命令查看可用的软件包:

apt-cache search ros-kinetic

1.4、初始化rosedep

sudo rosdep init

会出现警告,意思就是说你要执行下面的命令啦:

rosdep update

在这条命令会出现一些未知错误(我记得是有一个包不能安装),解决方法千奇百怪。我的经验就是确保自己的电脑连接的不是手机热点!!!如果还出现错误就请百度或者谷歌。

1.5、环境配置

上一篇博文中讲了一般的步骤,这里讲一个简单点的:

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

最后安装一个使用的工具和一些依赖项:

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

1.6、创建ROS工作空间

 

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

在catkin_ws的devel文件里有一些setup.bash文件,source这些文件可以讲当前工作空间设置为catkin工作环境最顶层。

source devel/setup.bash

为了方便以后使用,直接将其加入环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证安装,输入

roscore

2、libfreenect2安装

 

这是Kinect2在Ubuntu下的通用驱动安装。参考github 

 

https://github.com/OpenKinect/libfreenect2/blob/master/README.md#linux

系统要求>=Ubuntu14.04,

2.1、下载libfreenect2源码

确保已安装git,不要修改下载路径。

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2/

2.2、下载upgrade deb文件(仅Ubuntu14.04)

 

cd depends; ./download_debs_trusty.sh/

2.3、下载编译工具

sudo apt-get install build-essential cmake pkg-config

2.4、安装libusb,版本要求>=1.0.20

Ubuntu14.04:

sudo dpkg -i debs/libusb*deb

其他版本

sudo apt-get install libusb-1.0-0-dev

2.5、安装TurboJPEG

Ubuntu 14.04和16.04

sudo apt-get install libturbojpeg libjpeg-turbo8-dev

更高版本

sudo apt-get install libturbojpeg0-dev/

2.6、安装OpenGL

Ubuntu 14.04

sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f

其他版本

sudo apt-get install libglfw3-dev

2.7、安装OpenCL(可选,如果电脑有NVIDIA,请跳过这一步)

inter GPU

 

  • Ubuntu 14.04
sudo apt-add-repository ppa:floe/beignet; sudo apt-get update; sudo apt-get install beignet-dev; sudo dpkg -i debs/ocl-icd*deb

 

  • 其他版本
sudo apt-get install beignet-dev

AMD GPU

sudo apt-get install opencl-headers

吐槽:装这个之前要先装AMD驱动,但是我一直没有装上,所以就换了NVIDIA的电脑。NVIDIA的cuda自带OpenCL(良心啊)。

还有一些其他的GPU就不说了,需要就看github/

2.8、安装 CUDA(可选,仅NVIDIA)

这部分主要为了实现GPU加速,具体的安装过程参考我的另一篇博文https://blog.csdn.net/zhang970187013/article/details/81012845

2.9、安装 VAAPI(可选,仅inter)

Ubuntu 14.04

sudo dpkg -i debs/{libva,i965}*deb; sudo apt-get install -f

其他版本

sudo apt-get install libva-dev libjpeg-dev

2.10、安装OpenNI2(可选)

Ubuntu 14.04(有ROS跳过这一步)

sudo apt-add-repository ppa:deb-rob/ros-trusty && sudo apt-get update
sudo apt-get install libopenni2-dev

其他

sudo apt-get install libopenni2-dev

2.11、Build

cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 -DENABLE_CXX11=ON
make
make install

cmake命令第一句是指定安装路径(不要改),第二句是添加C++支持(ROS与Kinect需要)

2.12、设置udev rules

sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

重新插拔USB

测试

./bin/Protonect

出现画面则基本成功,然后在上面的命令分别加入参数gl、cl、cpu(前面加空格),如果都成功就nice。

 

如果不成功就继续看。

3、iai_Kinect2安装

这是ROS下的Kinect驱动包,如果在前一步出现错误,参考github https://github.com/code-iai/iai_kinect2

github中的说明要求在ROS indigo上安装,但是在ROS kinetic上也可以安装成功。

cd ~/catkin_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths .
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

如果运行rosdep install -r --from-paths .出现以下错误:

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
kinect2_viewer: Cannot locate rosdep definition for [kinect2_bridge]
iai_kinect2: Cannot locate rosdep definition for [kinect2_registration]
kinect2_calibration: Cannot locate rosdep definition for [kinect2_bridge]
kinect2_bridge: Cannot locate rosdep definition for [kinect2_registration]

参考解决方案:https://answers.ros.org/question/237451/run-rosdep-install-r-from-paths-error-when-i-install-iai_kinect2/

如果你之前安装的libfreenect2不是标准的路径,那么你就需要指明路径

catkin_make -Dfreenect2_DIR=path_to_freenect2/lib/cmake/freenect2 -DCMAKE_BUILD_TYPE="Release"

 

测试如果你已经按照步骤把setup.bash加入环境变量中,那么执行

 

roslaunch kinect2_bridge kinect2_bridge.launch

可能会出现关于opencl的错误:

[Error] [VaapiRgbPacketProcessorImpl] vaInitialize(display, &major_ver, &minor_ver): unknown libva error
[Error] [OpenCLAllocator] b->buffer = cl::Buffer(context, CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR, size, NULL, &err): -34
...
...
[Error] [OpenCLDepthPacketProcessorImpl] OpenCLDepthPacketProcessor is not initialized!

解决方法参考https://github.com/code-iai/iai_kinect2/issues/220,具体执行

roslaunch kinect2_bridge kinect2_bridge.launch depth_method:=opengl reg_method:=cpu 或
rosrun kinect2_bridge kinect2_bridge _depth_method:=opengl _reg_method:=cpu

解决一下错误后,如果出现以下警告

[ WARN] [1557200552.447012178]: [Kinect2Bridge::initCalibration] using sensor defaults for color intrinsic parameters.
[ WARN] [1557200552.447106272]: [Kinect2Bridge::initCalibration] using sensor defaults for ir intrinsic parameters.
[ WARN] [1557200552.447164408]: [Kinect2Bridge::initCalibration] using defaults for rotation and translation.
[ WARN] [1557200552.447292482]: [Kinect2Bridge::initCalibration] using defaults for depth shift.

这是因为你没有标定你的kinect,参考前面的github链接解决。不过也可以使用。

查看kinect2_bridge的节点信息

rostopic list

启动viewer查看图像

rosrun kinect2_viewer kinect2_viewer sd cloud

如果viewer这一步不能运行也没关系,我会在之后的博文中介绍。也可以给我留言。

你可能感兴趣的:(ROS kinetic安装、Kinect2驱动安装和配置)