Astra深度相机在Ubuntu18.04系统下实现相机标定

这篇具有很好参考价值的文章主要介绍了Astra深度相机在Ubuntu18.04系统下实现相机标定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

当使用Astra相机的启动的指令启动相机后,使用rviz查看相机所发布的rgb数据时,在终端会出现如下的提示信息:

Camera calibration file /home/car/.ros/camera_info/rgb_Astra_Orbbec.yaml not found.

Camera calibration file /home/car/.ros/camera_info/depth_Astra_Orbbec.yaml not found.

可以看到提示的信息为相机的标定文件未能在 /home/car/.ros/camera_info/下找到,当我自己根据提示的路径去查找时,发现在/home/car/.ros/路径文件下,并没有camera_info这个文件夹,因此网上查询发现是因为自己没有对相机进行标定的缘故而导致。

下面就根据下面的步骤开始解决这个相机标定问题:

1、准备阶段

1)打印棋盘格,可在下面的这个网站链接中打印自己想要的尺寸的棋盘格,我设置的行列为7x10,大小为18mm的棋盘格

棋盘格网页链接:Camera Calibration Pattern Generator – calib.io

也可下载我的7x10棋盘格文件:棋盘格_200x150_7x10_18.pdf官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

2)在Ubuntu18.04系统中安装标定功能包

sudo apt-get install ros-melodic-camera-calibration

2.1、标定彩色相机

1)启动相机节点

roslaunch astra_camera astra.launch

2)打开相机标定节点并指定话题(astra相机发布的彩色节点为:/camera/rgb/image_raw,可以使用 rostopic list 进行查看相机发布的节点名称

rosrun camera_calibration cameracalibrator.py --size 6x9 --square 0.018 image:=/camera/rgb/image_raw

其中的指令参考如下进行修改:

(1) size指的是:棋盘格内部的角点的行列数;

(注意:不是棋盘格的行列数,如我指定的行列为 7x10 ,则指令中的size就应就改为 6x9 ,因为这个对应的是棋盘格内部的角点的行列数。)

(2) square 是棋盘格每个格子的边长(可以自己用尺子量一下),我这里的是18mm,对应指令应输入0.018,因为指令的单位为米(m);

(3) image是图像话题名称,当Astra深度相机通常为/camera/rgb/image_raw,其他的相机可以通过 rostopic list 指令查看发布的相机节点名称。

3)在弹出的窗口相机视野中手持标定板,不断分别进行左右(X),上下(Y),远近(Size),倾斜(Skew)运动,尽量让这四个维度的进度条都为绿色。此过程要保证标定板上有彩色的条纹才为有效。这个过程中控制台也会打印出标定个数的日志。此过程也可以将标定板固定,然后移动相机。

(1)X:标定靶在摄像头视野中的左右移动;

(2)Y:标定靶在摄像头视野中的上下移动;

(3)Size:标定靶在摄像头视野中的前后移动;

(4)Skew:标定靶在摄像头视野中的倾斜转动

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

4)当右侧的CALIBRATE圆形按钮由灰色转为绿色时,说明数据采集完毕,此时点击CALIBRATE按钮,便开始读取之前保存的图片并执行标定计算,这里需要等待一会,因为计算需要时间。

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

5)有标定结果出来后,点击标定界面的SAVE按钮,再点commit按钮,标定结果保存在/tmp/calibrationdata.tar.gz这个压缩包中,到这里彩色相机的标定就结束了,关闭标定程序。

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

在终端中也会输出相应的标定结果。

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

6)保存后的标定文件为 /tmp/calibrationdata.tar.gz 的压缩包,将之解压,其中的 ost.yaml就是我们想要的标定结果。

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

打开ost.yaml,如下:

image_width: 640
image_height: 480
camera_name: narrow_stereo               #相机名称
camera_matrix:                           #相机内参矩阵(相机坐标系->像素坐标系)
  rows: 3
  cols: 3
  data: [ 556.03872,    0.     ,  335.509  ,
            0.     ,  556.50706,  233.42121,
            0.     ,    0.     ,    1.     ]
distortion_model: plumb_bob
distortion_coefficients:                 #相机畸变系数
  rows: 1
  cols: 5
  data: [0.057411, -0.256237, 0.007304, 0.014521, 0.000000]
rectification_matrix:                    #矫正矩阵
  rows: 3
  cols: 3
  data: [ 1.,  0.,  0.,
          0.,  1.,  0.,
          0.,  0.,  1.]
projection_matrix:                       #投影矩阵(世界坐标系->图像坐标系)
  rows: 3
  cols: 4
  data: [ 547.36389,    0.     ,  345.97145,    0.     ,
            0.     ,  559.91687,  235.82042,    0.     ,
            0.     ,    0.     ,    1.     ,    0.     ]

【参数说明】

   camera_matrix:相机内参矩阵 (固有参数)

   distortion_coefficients:相机畸变系数 (固有参数)

   rectification_matrix:矫正矩阵(一般为单位阵 )

   projection_matrix:投影矩阵(世界坐标系到图像坐标系)

 7)然后将得到的标定文件 ost.yaml 进行名称的修改,此时的更改是根据刚刚报错的终端提文件名进行修改即可,刚刚终端提示的第一条是

Camera calibration file /home/car/.ros/camera_info/rgb_Astra_Orbbec.yaml not found.

然后我们将刚刚彩色相机得到的标定文件 ost.yaml 的名称修改为 rgb_Astra_Orbbec.yaml ,并且还需要将该 yaml 文件中的 camera_name 也修改为 rgb_Astra_Orbbec ,不然后续运行的过程中会出现如下的提示:

[rgb_Astra_Orbbec] does not match name narrow_stereo in file /home/car/.ros/camera_info/rgb_Astra_Orbbec.yaml

因为标定文件中默认的名称为 narrow_stereo ,而我们已经将彩色相机的标定文件修改为了 ost.yaml 的名称修改为 rgb_Astra_Orbbec.yaml ,因此为了保证不出现错误提示,还需要将 yaml 中的 camera_name 也修改为 rgb_Astra_Orbbec 便可解决此问题。

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

8)将刚刚修改的 rgb_Astra_Orbbec.yaml 移动到 /home/car/.ros文件下的/camera_info/文件夹中,由于我的 /home/car/.ros文件下没有/camera_info/文件夹,因此需要创建并移入

cd /tmp/calibrationdata/

mkdir -p ~/.ros/camera_info

mv rgb_Astra_Orbbec.yaml ~/.ros/camera_info/ 

到此处对于 Astra 相机的彩色部分标定完成。接下来对深度相机(红外相机)部分进行标定操作

2.2、标定红外相机

 1)标定ir红外相机与标定rgb彩色相机相比,除了第一步的image参数不同,其他都一样。

由于其深度数据的成像即为红外相机的投影光斑分析得到的,ir红外的相机标定结果即是深度相机的标定结果。

运行红外相机标定节点:

# 启动相机
roslaunch astra_camera astra.launch

# 运行红外标定
rosrun camera_calibration cameracalibrator.py --size 6x9 --square 0.018 image:=/camera/ir/image

目前测试,在Ubuntu18.04下melodic预览图像内容是黑色的,如下图。但是在rviz下却可以正常查看。

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

原因是由于默认的IR图像数据是16-bit的,如果想清晰的显示出来,我们需要将之归一化成一个数值范围为0-255范围的8-bit图片。而rviz已经帮我们做了这样的归一化操作。

根据这个思想,我们实现一个图像类型转换节点,即订阅 /camera/ir/image 话题,将得到的16-bit的图片转换成8-bit,然后输出到 /camera/ir/image_mono8,想要输出为 /camera/ir/image_mono8的节点需要使用如下的转换文件才可以,网盘下载链接如下:

image_transformer.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

将此文件保存到catkin_ws/src文件下,然后使用 catkin_make 指令对刚刚的 image_transformer进行编译操作,编译完成后再次执行如下操作即可实现对红外相机的标定工作。

也可以通过如下指令进行克隆指令

cd catkin_ws/src
git clone https://gitee.com/tangyang/image_transformer

注意,一定得按照我下面的启动顺序依次启动运行指令,不然会出错

# 1)启动相机
roslaunch astra_camera astra.launch

# 2)启动image_transformer转换节点
cd catkin_ws
source ./devel/setup.bash
rosrun image_transformer gray_image_transformer

# 3)运行红外标定
rosrun camera_calibration cameracalibrator.py --size 6x9 --square 0.018 image:= /camera/ir/image_mono8

运行完 rosrun image_transformer gray_image_transformer 指令后,使用 rostopic list 指令便可以查询到转换后的8-bit节点,如下图所示:

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

运行红外标定指令后的图像如下:

Astra深度相机在Ubuntu18.04系统下实现相机标定,经验分享,ubuntu,机器人,深度相机

然后便可以在标定程序中查看到如彩色相机标定的类似画面,其中标定的步骤和彩色相机部分一致,并且此处需注意,标定红外相机标定文件保存路径也是在/tmp/下,并且名称也是calibrationdata.tar.gz 的文件,需提前将前面的彩色相机的 calibrationdata.gz 的文件保存到其他地方,不然在红外相机标定文件保存时会将其覆盖。

此外,这里所得到的红外相机的标定文件打开也是和彩色相机相同的命名方式,将 ost.yaml 的名称修改为 depth_Astra_Orbbec.yaml ,将 yaml 中的 camera_name 也修改为 depth_Astra_Orbbec,然后保存修改文件,并使用如下指令将 depth_Astra_Orbbec.yaml 移动到 /home/car/.ros/camera_info/ 路径下

cd /tmp/calibrationdata/

mv depth_Astra_Orbbec.yaml ~/.ros/camera_info/ 

至此,Astra 深度相机的整体标定已完成。

参考博客

奥比中光Astra相机(一)驱动安装及ROS标定 - 哔哩哔哩

使用标定文件出错:does not match name narrow_stereo in file /home/michael/.ros/camera_info/head_camera.yaml._[head_camera] does not match name narrow_stereo in-CSDN博客

Astra plus 深度相机校准标定-CSDN博客文章来源地址https://www.toymoban.com/news/detail-845390.html

到了这里,关于Astra深度相机在Ubuntu18.04系统下实现相机标定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux系统 Ubuntu18.04安装的详细教程(提供18.04ubuntu镜像)

    镜像文件下载: 链接:https://pan.baidu.com/s/12bEdRBwO1YbLt23QKnrSrA 提取码:h7as 关于全名、用户名区别可先看第四部分 处理器和内核数量,根据需要配置就行。我是8核16线程,配置2,2。小白学习的话,配置低一点没关系。如果你只是为了学一些基础命令,配置成1,1应该也没问题

    2024年02月01日
    浏览(84)
  • Ubuntu 18.04安装D435i 相机驱动及Ros1 Wrapper

    1.安装前注意 librealsense SDK相当于相机的驱动,SR300和ZR300的支持驱动是librealsense SDK 1.0,而D435i是librealsense SDK 2.0 **安装前一定要注意librealsense,realsense-ros(即Ros Wrapper),D435i相机固件版本三者之间的版本对应关系。**ros1环境只支持librealsense2.50.0之前的版本,ros2环境要下载librealse

    2024年02月22日
    浏览(48)
  • ubuntu16.04下标定Astra相机

    1.安装相机驱动 2.下载camere_calibration 3.进行标定 打开终端,输入 打开另一个终端,输入

    2024年02月07日
    浏览(41)
  • Ubuntu系统升级16.04升级18.04

      作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版,目前官网最新版本是22.04。Ubuntu16.04是2016年4月发行的版本,于2019年4月停止更新维护。很多软件支持的Ubuntu最早版本也是18.04,所以考虑对现有

    2024年01月20日
    浏览(55)
  • Ubuntu18.04 系统安装 Docker

     

    2024年02月16日
    浏览(49)
  • Ubuntu18.04 系统安装 OpenCv

    Ubuntu18.04 系统安装 OpenCv。 打开新终端,按如下指令顺序依次输入,配置OpenCv环境依赖。 注:安装libdc1394-22-dev时会出现报错(无法定位 libjasper-dev),打开新终端并依次输入以下命令即可解决该问题。 打开下面网址,选择所需OpenCv版本,下载Sources格式文件,下载完成后解压

    2024年02月11日
    浏览(54)
  • 双系统ubuntu18.04如何更新到22.04

    将双系统中的Ubuntu 18.04更新到22.04,按照以下步骤操作: 1.打开终端并更新系统,使用以下命令: 2.确保系统是最新的,然后备份数据,以防万一。 3.执行以下命令,安装 update-manager-core: 4.执行以下命令,将Ubuntu 18.04升级到20.04: 如果没有升级到20.04,请参考以下内容: 1.确

    2024年02月04日
    浏览(75)
  • Ubuntu 18.04修改系统语言为(中文简体)教程

    目录   说明 步骤 1. 打开系统设置 2. 进入“区域和语言”设置 3. 添加中文语言支持 4. 选择安装简体中文 5. 修改系统语言 6. 重启系统     Ubuntu全程需要联网正常,因为要下一些安装包。   1. 打开系统设置 点击屏幕右上角的系统菜单图标,选择“设置”选项。   2. 进入“区

    2024年02月03日
    浏览(46)
  • Ubuntu18.04 Qt 实现MQTT

    什么是MQTT? 作用是什么(适用场景)? 与其他通讯协议相比,优缺点在那里? 使用 EMQ X(开源且可视化管理) 下载 EMQX 下载的是    emqx-5.0.26-ubuntu18.04-amd64.deb  直接访问:127.0.0.1:18083 无法访问的解决办法: 查看配置文件的默认端口号 (一般在 /etc/emqx/emqx.conf) 查看端口是

    2024年01月21日
    浏览(51)
  • wsl子系统Ubuntu18.04,cuDNN安装

    如果觉得本篇文章对您的学习起到帮助作用,请 点赞 + 关注 + 评论 ,留下您的足迹💪💪💪 本文主要wls子系统Ubuntu18.04安装cuDNN,安装cudnn坑巨多,因此记录以备日后查看,同时,如果能够帮助到更多人,也不胜荣幸。 下载Debian本地存储库安装包。在发出以下命令之前,必须

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包