目录
ubuntu删除命令
相机标定
一些快捷键
准备工作
详细步骤
ubuntu删除命令
ubuntu中删除命令一般使用rm,但是rm误删之后,想恢复比较麻烦,所以在这里介绍另外一种删除方法,trash,文件删除是放到回收站,这样误删之后还有挽回的机会
trash删除是将文件删除到回收站中,但是trash不是自带的命令,需要使用
sudo apt-get install trash-cil
来安装trash。
使用方法:trash [选项].. 文件..
删除(unlink)文件
-f,--force 强制删除文件,无论文件是否存在,都不会提示确认 (和-i的作用刚好相反)
-i 在删除文件前给确认提示
-I 比-i提示的要少,只当文件多于3个或者删除有递归的文件的时候才提示,但也能阻止很多错误。
--interactive[=WHEN] 根据WHEN来决定提示:never,once(-I)或者always(-i)。如果没有WHEN,默认为always。
--one-file-system 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件 (这个我暂时还不懂)
--no-preserve-root 不特殊对待'/'
--preserve-root 不去删除'/'
-r,-R,--recursive 删除文件夹以及它下面递归的文件
-d,--dir 删除空文件夹
-v,--verbose 详细解释每一步删除
--help 显示帮助,并退出
--version 输出版本信息
默认,trash不会删除文件夹。使用--recursive(-r or -R)选项去删除文件夹以及它下面的目录文件
删除一个文件,例如删除-foo,可以使用trash如下
trash -- -foo
trash ./-foo
相机标定
主要参考了ros+iai_kinect2标定教程-失败-效果很差-更新和解决办法、https://github.com/code-iai/iai_kinect2/tree/master/kinect2_calibration、kinect2的标定 三篇文章,其中主要参考的是第二篇,第一篇主要看了博主总结的一些错误和改进措施
在进行标定前,最好看一下张正友标定法的原理【一文弄懂】张正友标定法-完整学习笔记-从原理到实战
深度相机的简单介绍三种主流深度相机介绍
一些快捷键
窗户:
ESC
, : 退出q
SPACE
、: 保存当前图像以进行校准s
l
:降低 IR 值 rage 的最小值和最大值h
:增加 IR 值 rage 的最小值和最大值1
:降低 IR 值 rage 的最小值2
:增加 IR 值 rage 的最小值3
:降低 IR 值狂暴的最大值4
:增加 IR 值 rage 的最大值
终端:
准备工作
- 打印标定板(我使用的是chess5x7x0.03格式的棋盘格)并将其粘附到平面对象上。标定板必须非常平坦,这一点非常重要。此外,使用卡尺检查打印图案的特征之间的距离是否正确。有时,打印机会缩放文档,校准将不起作用。对于上述图案,黑白角交叉点之间的距离应正好为3cm。
- 获取两个三脚架,一个用于固定标定板,另一个用于固定 kinect2 相机。理想情况下,kinect2的三脚架将有一个球形云台,以便您在拍摄图像之前轻松移动并将其锁定到位。在拍摄图像之前,传感器稳定(图像清晰且不模糊)非常重要。三脚架可以确保相机在红外和RGB图像拍摄之间没有移动。
- 为下面指示的所有步骤(RGB,IR,SYNC)录制图像时,启动录制程序,然后按空格键记录每个图像。应检测校准图案(由覆盖在校准图案上的彩色线指示),图像应清晰稳定。
- 建议拍摄在图像的所有区域显示校准图案的图像,并且具有图案的不同方向(相对于图像平面倾斜图案),并且至少两个距离。因此,每个校准集最好采用100张图像(由于第一次操作,主要学习方法,我只采集了20张)。
- 我们通常从一小段距离开始,此时标定板覆盖了大部分图像,按下空格拍摄几张照片,垂直倾斜校准图案,然后水平倾斜。想象一下,一条光线从相机传感器中射出,这可以确保拥有校准图案不垂直于该光线的图像。
- 然后,我们将校准图案移得更远,对于图案的不同方向(倾斜),拍摄了多张照片,以便校准图案存在于大多数相机图像周围。例如,首先将标定板放于左上角。然后在中上角的下一个图像上,然后在右上角。然后是一些标定板垂直位于中间的图像,等等...
- github那位作者按照以下步骤拍摄大约100 - 200张图像 i. 将图案放置在相机附近; ii. 将图案放置在图像的左上角; iii. 在拍照时沿着该行移动; iv. 往下走一排,然后进行步骤iii。直到你最终在右下角; v. 旋转图案,以便(1)左边框距离摄像机比右侧距离更远,(2)反过来(3)顶部边框 比底部边框更远,(4)另一个方向,(5)左上角指向上方,右下角指向下方。对于 每一次轮换,回到步骤ii。 vi. 将图案放置在离相机更远的位置,然后转到步骤ii。对3个不同距离执行此操作:近(<= 1m),中(> 1m,<2.5m)和远(> = 2.5m)的3个不同距离进行。(可能的距离取决 于棋盘大小)
- 特别是对于外部校准,重要的是相机和标定板在拍摄图像时不会移动。
下图是典型的校准设置
详细步骤
1、输入下面命令来获取Kinect数据
roslaunch kinect2_bridge kinect2_bridge.launch
2、以每秒较低的帧数启动kinect2_bridge(以便于 CPU 使用)
rosrun kinect2_bridge kinect2_bridge _fps_limit:=2
3、为校准数据文件创建目录
mkdir ~/kinect_cal_data;
cd ~/kinect_cal_data
4、为彩色相机录制图像
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record color
此时调整标定板位置,以便拍下不同位置的图片(最好20张以上),下面同理
5、校准内部函数:图片保存好后输入下面命令进行校准
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate color
6、为红外相机录制图像
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record ir
7、校准红外相机的固有特性
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate ir
8、在两台相机上同步录制图像
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record sync
9、校准外在因素
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate sync
10、校准深度测量值
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate depth
11、通过查看kinect2_bridge打印出来的第一行,找出 kinect2 的序列号(大概在第一个窗口的三分之一位置)。该行如下所示:(后面的序列号每个人的会不一样)
device serial: 020620440947
12、在kinect2_bridge/data文件夹中创建校准结果目录:
roscd kinect2_bridge/data;
mkdir 020620440947
13、将以下文件从校准目录(在第三步创建)(~/kinect_cal_data) 复制到刚刚创建的目录中:
calib_color.yaml
calib_depth.yaml
calib_ir.yaml
calib_pose.yaml
14、重启kinect_brige,观察前后结果。
另外,我在做的时候还遇到一个错误,不过好像并没有影响标定过程:
[ERROR] Tried to advertise a service that is already advertised in this node [/kinect2_calib_1458721837266890808/compressed/set_parameters]
[ERROR] Tried to advertise a service that is already advertised in this node [/kinect2_calib_1458721837266890808/compressed/set_parameters]
真正影响我们的是我们输入的参数 比如ROS的开发包给例子是使用棋盘格6*8的棋盘,正方形的边长为0.03米 但是我们的棋盘可能并并不是那么小的,这时候要使用我们的棋盘的话就要注意给的参数了。比如用的是长有9个,款有7个正方形的标定棋盘,这时候我们的参数是6*8*0.05,参数一定要给准确,不然会出现错误、而且就是在同一个文件下使用命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)