• ROS机械臂 Movelt 学习笔记3 | kinect360相机(v1)相关配置


    目标是做一个机械臂视觉抓取的demo,在基地里翻箱倒柜,没有找到学长所说的 d435,倒是找到了一个老古董 kinect 360。

    前几天就已经在旧电脑上配置好了,现在记录在新电脑上的配置过程。

    1. kinect 相机驱动安装

    环境:Ubuntu 18.04 + ROS Melodic

    需要安装3个驱动包,并且彼此版本需要适配,安装过程如下:

    在原作者的 Github 上下载:

    https://github.com/ZXWBOT/kinect_driver

    cd ~ARM/kinect_arm
    git clone https://github.com/ZXWBOT/kinect_driver.git
    

    也可以在网盘下载:

    http://pan.baidu.com/s/1hqHB10w 提取密码:wrmn

    下载完成后安装依赖:

    sudo apt-get install g++ python libusb-1.0-0-dev freeglut3-dev openjdk-8-jdk doxygen graphviz mono-complete 
    

    可以看到我们的 kinect_arm 文件夹下有一个 kinect_driver 文件夹,其下有:

    • OpenNI-Bin-Dev-Linux-x64-v1.5.7.10
    • NITE-Bin-Linux-x64-v1.5.2.23
    • Sensor-Bin-Linux-x64-v5.1.2.1

    这三个包的版本是相互匹配的,注意ubuntu下不能使用openni2.2和NITE2.2版本的包,接下来按照目录下的 README 来做就可以,没什么问题。

    2. 测试 kinect

    记得连上 kinect 的数据线,看到 kinect 亮起绿灯,然后:

    cd ~/...../OpenNI-Bin-Dev-Linux-x64-v1.5.7.10/Samples/Bin/x64-Release
    
    ./NiViewer 
    

    出现相机画面则配置成功。

    如果报错,尝试修改权限:

    sudo chmod +x /usr/bin/XnSensorServer
    

    再运行即可。

    左侧为深度图,右侧为彩色图,画面如下:

    image

    https://osrf-distributions.s3.amazonaws.com/gazebo/api/dev/classgazebo_1_1phisics_1_1World.html

    3. ROS 打开相机

    3.1 安装依赖

    sudo apt-get install ros-melodic-freenect-*  
    rospack profile  
    

    安装rqt-image-view显示图像

    sudo apt-get install ros-melodic-rqt-image-view
    

    3.2 安装 libfreenect 库

    继续找到文件夹:

    cd ~ARM/kinect_arm
    git clone https://github.com/ros-drivers/libfreenect.git
    cd libfreenect
    mkdir build
    cd build
    cmake -L ..
    make
    sudo make install
    

    3.3 ros下的 freenect_stack 包

    官方提供了运行 kinect 相机的ROS样例包 freenect_stack,下面我们把这个包跑起来:

    cd ~/ARM/kinect_arm
    mkdir -p ws_kinect/src
    cd ws_kinect/src
    git clone https://github.com/ros-drivers/freenect_stack.git
    # 如果还没有设置ROS空间
    # catkin_init_workspace
    cd ..
    catkin_make 
    rospack profile
    

    编译无误则:

    # 在 ~/ARM/kinect_arm/ws_kinect下
    source devel/setup.bash
    roslaunch freenect_launch freenect.launch
    

    新开一个终端:

    rosrun rqt_image_view rqt_image_view 
    

    在rqt_image_view中左上角选择不同的话题,就可以查看不同的图像,也可以查看深度图。

    image

    4. 录制 bag 并回放

    4.1 命令行录制

    可以查看一下当前活跃的话题:

    rostopic list
    

    对于其中一个话题进行录制:

    # 录制语法
    # 比如:rosbag record /topic1 -o out.bag
    rosbag record /camera/rgb/image_color -o  camera.bag
    # 显示录制内容(bag包中的信息)
    # rosbag info filename.bag
    rosbag info camera_2022-07-23-21-23-45.bag
    
    # 回放录制内容
    # rosbag play 
    rosbag play camera_2022-07-23-21-23-45.bag
    

    4.2 RViz 录制

    先在RViz 中显示我们向看到的图像,这也是学长们比赛时向国防临时学的技巧。

    cd ~/ARM/kinect_arm/ws_kinect
    source devel/setup.bash
    roslaunch freenect_launch freenect.launch
    

    新开终端2:

    rosrun rqt_image_view rqt_image_view 
    

    再开终端3:

    rostopic list
    

    终端4 打开rviz

    rosrun rviz rviz
    

    默认的rviz 应当是空无一物,下面来设置 rviz。

    1. 在rviz中将Global Option中的Fixed Frame后面选择camera_link

    2. 点击AddBy topic中选择想录制的话题,点击OK即可。

      这里我选择的是 /rgb/image_color,即彩色图。

    3. 设置完后,就可在rviz中实时查看想要录制的话题。

    下面录制:

    # 格式:rosrun topic_tools throttle messages   [outtopic]
    
    # 例如,如果我想要让激光雷达的topic发布频率降低至1HZ,则在终端中输入如下命令:
    rosrun topic_tools throttle messages base_scan 1.0
    

    举实例说明,比如 /camera/rgb/image_color/camera/rgb/image_raw两个话题修改为 4HZ,则:

    // 同时录制,只开一个终端
    rosbag record /my_image_color  /my_image_raw -o my_image.bag 
    //分开录制,开两个终端
    rosbag record /my_image_color -o my_image_color.bag
    rosbag record /my_image_raw   -o my_image_raw .bag
    

    5. 常用话题解释

    上面的 rostopic list 命令的一些解释:

    rostopic list
    

    rostopic list 列出了当前活跃的ROS节点,相关topic:

    1. RGB图像:/camera/rgb/image_color
      • ROS数据格式:sensor_msgs/Image
      • OPENCV数据格式:Mat
      • 图像尺寸:640*480
      • 像素数据类型:8UC3
    2. 深度图像:/camera/depth/image
      • ROS数据格式:sensor_msgs/Image
      • OPENCV数据格式:Mat
      • 图像尺寸:640*480
      • 像素数据类型:32FC1
    3. 点云数据(无整合RGB):/camera/depth/points
      • ROS数据格式:sensor_msgs/Image
      • PCL点云库数据格式:pcl::PointCloudpcl::PointXYZ
      • 图像尺寸:有序点云,640*480
      • 像素数据类型:double

    下表为 freenect_camera 功能包的话题和服务情况:

    来源:ros官网:http://wiki.ros.org/freenect_camera,日后可能会有更新。

    话题情况 名称 消息类型 描述
    Topic发布 rgb/camera_info sensor_msgs/CameraInfo RGB相机校准信息
    Topic发布 rgb/image_raw sensor_msgs/Image RGB相机图像数据
    Topic发布 depth/camera_info sensor_msgs/CameraInfo 深度相机校准信息
    Topic发布 depth/image_raw sensor_msgs/Image 深度相机图像数据
    Topic发布 depth_registered/camera_info sensor_msgs/CameraInfo 配准后的深度相机校准信息
    Topic发布 depth_registered/image_raw sensor_msgs/Image 配准后的深度相机图像数据
    Topic发布 ir/camera_info sensor_msgs/CameraInfo 红外相机校准信息
    Topic发布 ir/image_raw sensor_msgs/Image 红外相机图像数据
    Topic发布 projector/camera_info sensor_msgs/CameraInfo 红外相机的假校准
    Topic发布 /diagnostics diagnostic_msgs/DiagnosticArray 传感器诊断信息
    Servicecs rgb/set_camera_info sensor_msgs/SetCameraInfo 设置RGB相机的校准信息
    Servicecs ir/set_camera_info sensor_msgs/SetCameraInfo 设置红外相机的校准信息

    6. 在RViz 中显示点云

    打开相机节点:

    cd ~/ARM/kinect_arm/ws_kinect
    source devel/setup.bash
    roslaunch freenect_launch freenect.launch
    

    新开终端:

    rosrun rqt_image_view rqt_image_view 
    

    再开终端:

    rostopic list
    

    再开:

    rosrun rviz rviz
    

    打开了跟 4.2 相同的界面,在RViz 中左侧进行如下设置:

    1. Global Options中,将Fixed Frame 改为 camera_rgb_optical_frame
    2. 左下角点击 Add,将 PoitCloud2 加进来
    3. 在 PointCloud2 的 Topic 中选择 /camera/depth_registered/points

    即可看到点云图像:

    image

    查看话题的数据流:

     rostopic echo /camera/depth/points
    

    7. Kinect 相机相关介绍

    7.1 相机构成

    可见自左向右依次为:

    • 麦克风阵列
    • 红外CMOS摄像机(左1)
    • LED
    • 彩色摄像头
    • 红外摄像头(右1)
    • 下方是传动马达

    kinect

    7.2 深度信息获得原理

    结构光为基础进行改进后的光编码(Light Coding)技术获得物体的深度信息。各相机坐标系如下:

    image

    参考资料:

    1. 官方相关文档:http://wiki.ros.org/freenect_camera
    2. https://blog.csdn.net/qq_63379469/article/details/123834391
    3. https://blog.csdn.net/a_happy_bird/article/details/125378527
    4. 一个系列博客:https://blog.csdn.net/puqian13/article/list/4
    5. https://www.it610.com/article/1295398327008960512.htm
  • 相关阅读:
    文件下载Blob
    java-php-python-ssm志愿者网上服务平台的设计与实现计算机毕业设计
    浅谈安科瑞无线测温产品在埃及某房建配电项目中的应用
    Scss-混入和继承且如何正确使用
    组合数求法、卡特兰数
    如何选择服务器?服务器选择方法
    【Semi-Supervised Raw-to-Raw Mapping 半监督 Raw-to-Raw 映射】
    电工特种作业操作证登高作业等报名考试费用是怎么样的
    抖音自媒体运营的5个技巧,让你的账号快速涨粉
    13.8 - 软件测试工作量及成本估算 3.9 - 软件测试成本估算示例
  • 原文地址:https://www.cnblogs.com/Roboduster/p/16515869.html