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
再运行即可。
左侧为深度图,右侧为彩色图,画面如下:

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。
在rviz中将Global Option中的Fixed Frame后面选择camera_link
点击Add在By topic中选择想录制的话题,点击OK即可。
这里我选择的是
/rgb/image_color,即彩色图。设置完后,就可在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:
- RGB图像:
/camera/rgb/image_color- ROS数据格式:sensor_msgs/Image
- OPENCV数据格式:Mat
- 图像尺寸:640*480
- 像素数据类型:8UC3
- 深度图像:
/camera/depth/image- ROS数据格式:sensor_msgs/Image
- OPENCV数据格式:Mat
- 图像尺寸:640*480
- 像素数据类型:32FC1
- 点云数据(无整合RGB):
/camera/depth/points- ROS数据格式:sensor_msgs/Image
- PCL点云库数据格式:pcl::PointCloudpcl::PointXYZ
- 图像尺寸:有序点云,640*480
- 像素数据类型:double
下表为 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 中左侧进行如下设置:
- Global Options中,将Fixed Frame 改为 camera_rgb_optical_frame
- 左下角点击 Add,将 PoitCloud2 加进来
- 在 PointCloud2 的 Topic 中选择
/camera/depth_registered/points

查看话题的数据流:
rostopic echo /camera/depth/points
7. Kinect 相机相关介绍
7.1 相机构成
可见自左向右依次为:
- 麦克风阵列
- 红外CMOS摄像机(左1)
- LED
- 彩色摄像头
- 红外摄像头(右1)
- 下方是传动马达

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

参考资料:
- 官方相关文档:http://wiki.ros.org/freenect_camera
- https://blog.csdn.net/qq_63379469/article/details/123834391
- https://blog.csdn.net/a_happy_bird/article/details/125378527
- 一个系列博客:https://blog.csdn.net/puqian13/article/list/4
- https://www.it610.com/article/1295398327008960512.htm
ROS机械臂 Movelt 学习笔记3 | kinect360相机(v1)相关配置的更多相关文章
- ROS机械臂 Movelt 学习笔记1 | 基础准备
环境:Ubuntu18.04 + ROS Melodic 1. 安装ROS 官网下载安装步骤:http://wiki.ros.org/melodic/Installation/Ubuntu 一键安装的 ...
- ROS机械臂 Movelt 学习笔记2 | Move Group 接口 C++
Movelt为使用者提供了一个最通用且简单的接口 MoveGroupInterface 类,这个接口提供了很多控制机器人的常用基本操作,如: 设置机械臂的位姿 进行运动规划 移动机器人本体 将物品添加 ...
- ROS机械臂 Movelt 学习笔记4 | Move Group 接口 Python
Python 的使用总是比 C++ 简单许多,Move Group 的 Python 接口更为便捷,也为使用者提供了很多用于操纵机器人和机械臂的函数,能够和 C++ 接口实现相同的功能: 设置机械臂的 ...
- ROS机械臂 Movelt 学习笔记5 | MoveIt Commander Scripting
前一讲python接口中提到moveit_commander 包.这个包提供了用于运动规划.笛卡尔路径计算以及拾取和放置的接口. moveit_commander 包还包括一个命令行接口程序movei ...
- Android学习笔记(一)Git相关配置及使用
一.配置 打开Git Bash, git config --global user.name "username" git config --global user.email & ...
- Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合
一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- STM32 FSMC学习笔记+补充(LCD的FSMC配置)
STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD
- HBase学习笔记之HBase的安装和配置
HBase学习笔记之HBase的安装和配置 我是为了调研和验证hbase的bulkload功能,才安装hbase,学习hbase的.为了快速的验证bulkload功能,我安装了一个节点的hadoop集 ...
随机推荐
- 一文看懂:网址,URL,域名,IP地址,DNS,域名解析
一个执着于技术的公众号 前言 今天给大家梳理一篇关于网址.URL.IP地址.域名.DNS.域名解析的白话长文,并以简单的提问-解答 形式让读者更加深刻理解,希望有助于读者的学习,面试和工作! 1.一个 ...
- Jackson通用工具类
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.1' compile group: ...
- 基于SqlSugar的开发框架循序渐进介绍(2)-- 基于中间表的查询处理
在前面介绍的SqlSugar的相关查询处理操作中,我们主要以单表的方式生成相关的实体类,并在查询的时候,对单表的字段进行条件的对比处理,从而返回对应的数据记录.本篇随笔介绍在一些外键或者中间表的处理中 ...
- OpenHarmony3.1 Release版本关键特性解析——Enhanced SWAP内存管理
樊成阳 华为技术有限公司内核专家 陈杰 华为技术有限公司内核专家 OpenAtom OpenHarmony(以下简称"OpenHarmony")是面向全场景泛终端设备的操作系统,终 ...
- Hadoop安装学习(第三天)
学习任务: 1.解压jdk和hadoop包 2.安装jdk 3.修改hadoop配置文件 4.hadoop格式化 5.hadoop启动 出现的问题:hadoop可以正常启动,但是端口9000丢失,导致 ...
- Vue基础篇 之 v-model 模拟
我们知道vue中 为简化表单输入 提供了v-model 的语法绑定 将 vue的属性和表单元素进行了双向绑定 大大简化了表单数据操作的数据绑定 那么v-model 是如何实现双向绑定的呢? 今天我们来 ...
- sqlserver 插入 更新 删除 语句中的 output子句
官方文档镇楼: https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/ms177564(v=sql.100) 从 ...
- 深入C++02:深入学习C++还必须掌握的基础
深入学习C++还必须掌握的基础 掌握形参带默认的函数 1.给默认值方向:从右向左给默认值: 2.调用效率:如果传默认值或者立即数(不需要从容器或内存取取的数字)的话都是直接将数字直接push进栈:没有 ...
- 前端2CSS2
内容概要 伪元素选择器 选择器优先级 字体样式 文字属性 背景属性 display属性 边框属性 盒子模型 浮动(重要) 解决浮动造成的影响 内容详情 伪元素选择器 """ ...
- 基于web3D展示技术的煤矿巷道3D可视化系统
地下开采离不开巷道工程.煤矿的生产.运输.排水.通风等各个环节都少不了巷道的支持.在煤矿智能化建设被提上日程的今天,巷道工程的智能化.可视化建设也成了行业趋势.尤其是复杂的井下作业环境,人员信息安全问 ...