ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
小强ROS机器人教程(8)___kinect1代 ROS驱动测试与安装
-
小强底盘输出一个12v电源(DC头,贴有“kinect供电”标签)用于kinect 供电。
1.libfreenect测试
将小强主机接入显示器和键盘,在小强主机上新开一个命令终端输入
freenect-glview
可以看到如下图的类似界面
2.ROS驱动测试
关闭步骤1中的程序,新开一个命令窗口,使用freenect_launch启动相关kinect节点
roslaunch freenect_launch freenect-xyz.launch
新开1个窗口打开rviz
rviz
选择需要显示的内容,例如kinect的rgb图像和深度点云,显示效果如下
kienct各项功能的开启在/home/xiaoqiang/Documents/ros/src/freenect_stack/freenect_launch/launch/examples/freenect-xyz.launch里面<launch> <include file="$(find freenect_launch)/launch/freenect.launch"> <arg name="camera" value="kinect" /> <arg name="motor_processing" value="true" /> <arg name="audio_processing" value="false" /> <arg name="rgb_processing" value="true" /> <arg name="ir_processing" value="false" /> <arg name="depth_processing" value="true" /> <arg name="depth_registered_processing" value="false" /> <arg name="disparity_processing" value="false" /> <arg name="disparity_registered_processing" value="false" /> <arg name="num_worker_threads" value="4" /> </include> </launch>
通过设置true 或者false来开启、关闭相应功能
3.下文将介绍kienct1代的ros驱动安装步骤
2016年7月以后购买的用户不需要安装驱动,小强主机已经配置好kinect 1代驱动。
需要安装三个软件:
a.libfreenect
b.rgbd_launch
c.freenect_stacka. libfreenect
先将kinect接入小强主机,然后打开一个命令行终端,输入下列代码
cd Documents sudo apt-get install git-core cmake freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev git clone https://github.com/OpenKinect/libfreenect cd libfreenect mkdir build cd build # 重点来了,下面配置将使能kinect音频和解决安装路径问题 cmake .. -DCMAKE_INSTALL_RPATH:STRING="/usr/local/bin;/usr/local/lib" -DBUILD_REDIST_PACKAGE=OFF make sudo make install sudo ldconfig /usr/local/lib64/ sudo freenect-glview
现在应该可以看到kinect的输出图像了
再进行外设权限配置操作sudo adduser $xiaoqiang video //请将xiaoqiang换成自己电脑的账户名
增加一个udev规则,先打开51-kinect.rules文件
sudo gedit /etc/udev/rules.d/51-kinect.rules
拷贝如下内容后保存退出
# ATTR{product}=="Xbox NUI Motor" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02b0", MODE="0666" # ATTR{product}=="Xbox NUI Audio" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ad", MODE="0666" # ATTR{product}=="Xbox NUI Camera" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ae", MODE="0666" # ATTR{product}=="Xbox NUI Motor" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02c2", MODE="0666" # ATTR{product}=="Xbox NUI Motor" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02be", MODE="0666" # ATTR{product}=="Xbox NUI Motor" SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02bf", MODE="0666"
注销用户后重进系统,现在就能直接启用kinect了,不用sudo了
freenect-glview
b. 安装rgbd_launch
rgbd_launch包含了驱动安装包openni_launch或 freenect_launch需要的通用launch文件。
主要有两个重要的launch文件:- processing.launch.xml:安装一系列nodelets去处理来自RGB-D driver(openni_camera or freenect_camera的数据,还可以设定参数简化处理nodelets图像。
- kinect_frames.launch:为 Kinect安装tf tree。也可以从openni_launch or freenect_launch内部启动该文件。
rgbd_launch文件包含多个分散处理的launch文件。但只有 processing.launch.xml可以在外部修改使用。
cd ~/Documents/ros/src git clone https://git.bwbot.org/publish/rgbd_launch cd .. catkin_make
c. 安装freenect_stack
cd ~/Documents/ros/src git clone https://gitee.com/BlueWhaleRobot/freenect_stack cd .. catkin_make
d. 驱动安装完成,现在可以在ROS中使用kinect了,例如在rviz中观看kinect输出的点云,参考本节开头的步骤2
-
请问
“cmake … -DCMAKE_INSTALL_RPATH:STRING=“/usr/local/bin;/usr/local/lib” -DBUILD_REDIST_PACKAGE=OFFmake”
这两行命令输入时,会卡主,一直显示“Downloading SystemUpdate.zip from http://www.xbox.com/system-update-usb”我手动下载该zip并且解压后仍然不能make,make时仍然重新下载 SystemUpdate。请教楼主如何解决。
谢谢 -
@大水怪 sorry,没遇到过这种情况,如果你不需要kinect的音频输入,可以将命令中的-DBUILD_REDIST_PACKAGE=OFF去掉后重试
-
-
@frank 您好,在启动freenect-xyz.launch 之后,tf-tree显示kinect_Link在base_link下,kinect_link单独另起一支,请问这是正确的么?kinect_link和kinect_Link有什么不同么?
-
@gejiaqi1117 是正确的,因为kinect有些frame没用,就没有写一样把它连起来。
-
请教一下,运行这个launch文件时,Robotmodel中显示status:error; 均显示no transform from back_wheel/kinect_Link/base_link to kinect_depth_frame,请问是什么原因呢
-
@gejiaqi1117 和上面的原因一样,tf断开了,需要自己补齐
-
@xiaoqiang 麻烦问一下,kinect的tf和机器人的tf怎么连接起来?我加了一个静态tf,但是还是连接不上。
-
@terminal 先打印一下增加之前的tf树,然后再根据当前情况补。一个frame只能有一个parent,可以有多个child
-
不好意思 初学者
出现这种情况怎么处理呢
For frame [kinect_link_new]: Frame [kinect_link_new] does not exist -
@qq303956 rviz里面的global frame可以自己修改设置,freenect-xyz.launch不会发布这个tf,kinect-xyz.launch才会