导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    小强ROS机器人教程(8)___kinect1代 ROS驱动测试与安装

    产品服务
    小强ros kinect
    7
    12
    18987
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • frank
      frank 最后由 weijiz 编辑

      小强主页

      小强底盘输出一个12v电源(DC头,贴有“kinect供电”标签)用于kinect 供电。

      1.libfreenect测试

      将小强主机接入显示器和键盘,在小强主机上新开一个命令终端输入

      freenect-glview
      

      可以看到如下图的类似界面
      0_1489806026247_upload-2364da04-bc73-468a-b6c5-b5bfd1631171

      2.ROS驱动测试

      关闭步骤1中的程序,新开一个命令窗口,使用freenect_launch启动相关kinect节点

      roslaunch freenect_launch  freenect-xyz.launch
      

      新开1个窗口打开rviz

      rviz
      

      选择需要显示的内容,例如kinect的rgb图像和深度点云,显示效果如下
      0_1489467596893_1.png
      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_stack

      a. 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的输出图像了
      0_1468223365846_kinect1.png
      再进行外设权限配置操作

      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文件:

      1. processing.launch.xml:安装一系列nodelets去处理来自RGB-D driver(openni_camera or freenect_camera的数据,还可以设定参数简化处理nodelets图像。
      2. 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

      小强主页
      返回目录

      gejiaqi1117 1 条回复 最后回复 回复 引用 0
      • 大水怪
        大水怪 最后由 编辑

        请问
        “cmake … -DCMAKE_INSTALL_RPATH:STRING=“/usr/local/bin;/usr/local/lib” -DBUILD_REDIST_PACKAGE=OFF

        make”
        这两行命令输入时,会卡主,一直显示“Downloading SystemUpdate.zip from http://www.xbox.com/system-update-usb”

        我手动下载该zip并且解压后仍然不能make,make时仍然重新下载 SystemUpdate。请教楼主如何解决。
        谢谢

        frank xiaoqiang 2 条回复 最后回复 回复 引用 0
        • frank
          frank @大水怪 最后由 编辑

          @大水怪 sorry,没遇到过这种情况,如果你不需要kinect的音频输入,可以将命令中的-DBUILD_REDIST_PACKAGE=OFF去掉后重试

          1 条回复 最后回复 回复 引用 0
          • xiaoqiang
            xiaoqiang @大水怪 最后由 xiaoqiang 编辑

            @大水怪
            将 -DBUILD_REDIST_PACKAGE=OFF改成-DBUILD_REDIST_PACKAGE=ON后,可以编译完成,此时音频固件不会自动加载。请下载这份音频固件,放在这个目录下/usr/local/share/libfreenect/,现在启动freenect-micview可以成功开启麦克风。

            1 条回复 最后回复 回复 引用 0
            • gejiaqi1117
              gejiaqi1117 @frank 最后由 编辑

              @frank 您好,在启动freenect-xyz.launch 之后,tf-tree显示kinect_Link在base_link下,kinect_link单独另起一支,请问这是正确的么?kinect_link和kinect_Link有什么不同么?

              weijiz 1 条回复 最后回复 回复 引用 0
              • weijiz
                weijiz @gejiaqi1117 最后由 编辑

                @gejiaqi1117 是正确的,因为kinect有些frame没用,就没有写一样把它连起来。

                1 条回复 最后回复 回复 引用 0
                • gejiaqi1117
                  gejiaqi1117 最后由 编辑

                  请教一下,运行这个launch文件时,Robotmodel中显示status:error; 均显示no transform from back_wheel/kinect_Link/base_link to kinect_depth_frame,请问是什么原因呢

                  xiaoqiang 1 条回复 最后回复 回复 引用 0
                  • xiaoqiang
                    xiaoqiang @gejiaqi1117 最后由 编辑

                    @gejiaqi1117 和上面的原因一样,tf断开了,需要自己补齐

                    terminal 1 条回复 最后回复 回复 引用 0
                    • terminal
                      terminal @xiaoqiang 最后由 编辑

                      @xiaoqiang 麻烦问一下,kinect的tf和机器人的tf怎么连接起来?我加了一个静态tf,但是还是连接不上。

                      xiaoqiang 1 条回复 最后回复 回复 引用 0
                      • xiaoqiang
                        xiaoqiang @terminal 最后由 编辑

                        @terminal 先打印一下增加之前的tf树,然后再根据当前情况补。一个frame只能有一个parent,可以有多个child

                        1 条回复 最后回复 回复 引用 0
                        • qq303956
                          qq303956 最后由 编辑

                          不好意思 初学者
                          出现这种情况怎么处理呢
                          For frame [kinect_link_new]: Frame [kinect_link_new] does not exist

                          xiaoqiang 1 条回复 最后回复 回复 引用 0
                          • xiaoqiang
                            xiaoqiang @qq303956 最后由 xiaoqiang 编辑

                            @qq303956 rviz里面的global frame可以自己修改设置,freenect-xyz.launch不会发布这个tf,kinect-xyz.launch才会

                            1 条回复 最后回复 回复 引用 0
                            • 1 / 1
                            • First post
                              Last post
                            Copyright © 2015-2023 BlueWhale community