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

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

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 <http://www.guyuehome.com/1228>
,包括之后的学习阶段也可以参考他的建议。

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

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



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

 

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

1.1、软件中心配置



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

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
<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
<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
<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/

<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
<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这一步不能运行也没关系,我会在之后的博文中介绍。也可以给我留言。

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信