目标是做一个机械臂视觉抓取的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

再运行即可。

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

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中左上角选择不同的话题,就可以查看不同的图像,也可以查看深度图。

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 <bagfile_name>
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 <intopic> <msgs_per_sec> [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

查看话题的数据流:

 rostopic echo /camera/depth/points

7. Kinect 相机相关介绍

7.1 相机构成

可见自左向右依次为:

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

7.2 深度信息获得原理

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

参考资料:

  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

ROS机械臂 Movelt 学习笔记3 | kinect360相机(v1)相关配置的更多相关文章

  1. ROS机械臂 Movelt 学习笔记1 | 基础准备

    环境:Ubuntu18.04 + ROS Melodic 1. 安装ROS 官网下载安装步骤:http://wiki.ros.org/melodic/Installation/Ubuntu 一键安装的 ...

  2. ROS机械臂 Movelt 学习笔记2 | Move Group 接口 C++

    Movelt为使用者提供了一个最通用且简单的接口 MoveGroupInterface 类,这个接口提供了很多控制机器人的常用基本操作,如: 设置机械臂的位姿 进行运动规划 移动机器人本体 将物品添加 ...

  3. ROS机械臂 Movelt 学习笔记4 | Move Group 接口 Python

    Python 的使用总是比 C++ 简单许多,Move Group 的 Python 接口更为便捷,也为使用者提供了很多用于操纵机器人和机械臂的函数,能够和 C++ 接口实现相同的功能: 设置机械臂的 ...

  4. ROS机械臂 Movelt 学习笔记5 | MoveIt Commander Scripting

    前一讲python接口中提到moveit_commander 包.这个包提供了用于运动规划.笛卡尔路径计算以及拾取和放置的接口. moveit_commander 包还包括一个命令行接口程序movei ...

  5. Android学习笔记(一)Git相关配置及使用

    一.配置 打开Git Bash, git config --global user.name "username" git config --global user.email & ...

  6. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  7. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  8. STM32 FSMC学习笔记+补充(LCD的FSMC配置)

    STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD

  9. HBase学习笔记之HBase的安装和配置

    HBase学习笔记之HBase的安装和配置 我是为了调研和验证hbase的bulkload功能,才安装hbase,学习hbase的.为了快速的验证bulkload功能,我安装了一个节点的hadoop集 ...

随机推荐

  1. [源码解析] TensorFlow 分布式之 ParameterServerStrategy V2

    [源码解析] TensorFlow 分布式之 ParameterServerStrategy V2 目录 [源码解析] TensorFlow 分布式之 ParameterServerStrategy ...

  2. 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)

    电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 目录 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 写在前面 正文 电机噪声 谐波的产生 什么 ...

  3. 网络协议之:sctp流控制传输协议

    目录 简介 TCP有什么不好 sctp的特点 总结 简介 要讲网络协议,肯定离不开OSI(Open System Interconnection)的七层模型. 我们一般关注的是网络层之上的几层,比如I ...

  4. 890. Find and Replace Pattern - LeetCode

    Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["ab ...

  5. linux篇-linux mysql数据库定时备份

    1在linux上面创建一个文件夹,并且进行备份 cd /home mkdir backup cd backup 2创建一个脚本 Vi imaginebase.sh #!/bin/bash mysqld ...

  6. ethtools-网卡适配器管理

    查看网卡适配器配置信息,并且我们可以通过它修改网卡适配器的双工模式. 1.安装Ethtools [root@localhost ~]# yum -y install ethtools 2.命令语法 语 ...

  7. MongoDB 设置用户和密码

    每日一句 Zeal without knowledge is fire without light. 没有知识的热忱犹如火之无光. 给每个数据库设置单独的管理员 我们除了可以设置数据库的超级管理员以外 ...

  8. SpringBoot 整合 RabbitMQ 实现消息可靠传输

    消息的可靠传输是面试必问的问题之一,保证消息的可靠传输主要在生产端开启 comfirm 模式,RabbitMQ 开启持久化,消费端关闭自动 ack 模式. 环境配置 SpringBoot 整合 Rab ...

  9. SpringCloud Alibaba Sentinel 限流详解

    点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 熔断规则 在上一篇文章中我们讲解了 ...

  10. 浏览器代理user-agent

    两种方法: 法1:浏览器地址栏输入:about://version,然后复制用户代理: 如果法1不行,法2肯定可以. 法2:打开任意浏览器,输入任意网址,下面以火狐和百度网址为例来进行说明: 打开火狐 ...