图漾TM421-E1相机专栏(待完善)

文章目录

  • 1.TM421-E1相机
    • [1.1 TM421-E1工作场景](#1.1 TM421-E1工作场景)
    • [1.2 TM421-E1 IO线和数据线定义](#1.2 TM421-E1 IO线和数据线定义)
      • [1.2.1 IO接口定义](#1.2.1 IO接口定义)
      • [1.2.2 数据接口线](#1.2.2 数据接口线)
      • [1.2.3 TM421-E1相机连接拓扑网络](#1.2.3 TM421-E1相机连接拓扑网络)
      • [1.2.4 TM421-E1相机正面安装方向](#1.2.4 TM421-E1相机正面安装方向)
      • [1.2.5 上下面螺纹孔安装](#1.2.5 上下面螺纹孔安装)
      • [1.2.6 侧面螺纹孔安装](#1.2.6 侧面螺纹孔安装)
      • [1.2.7 TM421-E1相机IO指示灯](#1.2.7 TM421-E1相机IO指示灯)
    • [1.3 TM421-E1相机性能指标](#1.3 TM421-E1相机性能指标)
  • 2.TM421-e1相机操作
    • [2.1 下载看图软件连接相机](#2.1 下载看图软件连接相机)
    • [2.2 图漾PercipioViewer软件更改相机IP](#2.2 图漾PercipioViewer软件更改相机IP)
    • [2.3 深度图调参](#2.3 深度图调参)
      • [2.3.1 相机的IR参数](#2.3.1 相机的IR参数)
      • [2.3.2 相机的Depth参数](#2.3.2 相机的Depth参数)
      • [2.3.3 相机的RGB参数](#2.3.3 相机的RGB参数)
    • [2.4 深度图评估](#2.4 深度图评估)
      • [2.4.1 评估点云](#2.4.1 评估点云)
      • [2.4.2 填充空洞](#2.4.2 填充空洞)
      • [2.4.3 滤波功能](#2.4.3 滤波功能)
      • [2.4.4 时域滤波功能](#2.4.4 时域滤波功能)
      • [2.4.5 中值滤波](#2.4.5 中值滤波)
      • [2.4.6 调节深度图渲染效果](#2.4.6 调节深度图渲染效果)
    • [2.5 保存图像](#2.5 保存图像)
      • [2.5.1 单张存图](#2.5.1 单张存图)
      • [2.5.2 连续存图](#2.5.2 连续存图)
    • [2.6 相机保存参数配置](#2.6 相机保存参数配置)
      • [2.6.1 保存参数限制](#2.6.1 保存参数限制)
  • 3.TM421-E1相机SDK相关
    • [3.1 C++语言SDK(`推荐`)](#3.1 C++语言SDK(推荐))
    • [3.2 ROS1版本(`推荐`)](#3.2 ROS1版本(推荐))
    • [3.3 ROS2版本(`推荐`)](#3.3 ROS2版本(推荐))
    • 3.4 C#语言SDK
    • [3.5 Python语言SDK](#3.5 Python语言SDK)
    • [3.6 Halcon语言SDK](#3.6 Halcon语言SDK)
    • [3.7 VisionPro语言SDK](#3.7 VisionPro语言SDK)
  • 4.TM421-E1相机内外参说明
    • [4.1 如何获取TM421-E1相机内参?](#4.1 如何获取TM421-E1相机内参?)
      • [4.1.1 方法一 运行DumpCalibInfo](#4.1.1 方法一 运行DumpCalibInfo)
      • [4.1.2 方法二 运行DumpAllFeature例子](#4.1.2 方法二 运行DumpAllFeature例子)
      • [4.1.3 通过PV软件](#4.1.3 通过PV软件)
    • [4.2 TM421-E1相机内参说明](#4.2 TM421-E1相机内参说明)
      • [4.2.1 深度图内参](#4.2.1 深度图内参)
      • [4.2.2 彩色图内参/畸变系数/外参](#4.2.2 彩色图内参/畸变系数/外参)
    • [4.3 TM421-E1相机光心位置](#4.3 TM421-E1相机光心位置)
  • 5.TM421-E1相机常见问题FAQ
    • [5.1 拍摄黑色托盘成像较差,如何调整](#5.1 拍摄黑色托盘成像较差,如何调整)
      • [5.1.1 验证是否生效](#5.1.1 验证是否生效)
      • [5.1.2 调整相机参数](#5.1.2 调整相机参数)
    • [5.2 相机贴地安装/高亮地面等造成成像异常](#5.2 相机贴地安装/高亮地面等造成成像异常)
    • [5.3 托盘上有高低反材质](#5.3 托盘上有高低反材质)
  • 6.TM421-E1相机测试结果
    • [6.1 TM421-E1 帧率测试](#6.1 TM421-E1 帧率测试)
      • [6.1.1 TM421-E1 出图延迟时间](#6.1.1 TM421-E1 出图延迟时间)
      • [6.1.2 TM421-E1 帧率测试](#6.1.2 TM421-E1 帧率测试)
  • 7.其他学习资料

1.TM421-E1相机


TM421-E1相机外观

1.1 TM421-E1工作场景

材质 :木质、蓝色等标准托盘,适合在室内,半室外等工作场景

不适宜场景:相机贴地安装,附近有高反物体(如反光柱),圆柱形金属料卷等场景,如需要拍摄黑色材质,建议在2m以内,同时联系图漾技术更改相机寄存器配置。

1.2 TM421-E1 IO线和数据线定义

1.2.1 IO接口定义

TM421-E1相机的IO引脚定义如下:

注释:新的TM421相机,供电线改为了红黑线,红色接24V,黑色接0V。

1.2.2 数据接口线

TM421-E1相机数据线如下图:

1.2.3 TM421-E1相机连接拓扑网络

TM421-E1相机拓扑网络如下图:

1.2.4 TM421-E1相机正面安装方向

TM421-E1相机正面安装方向如下:

从左到右依次是激光发射器,IR镜头和RGB相机。

1.2.5 上下面螺纹孔安装

TM421-E1相机上下面有一组M3螺纹孔(螺纹深度5mm)

1.2.6 侧面螺纹孔安装

1.2.7 TM421-E1相机IO指示灯

TM421-E1相机的状态指示灯如下图:

TM421-E1相机指示灯


TM421-E1相机指示灯说明

1.3 TM421-E1相机性能指标

TM421-E1相机的性能指标如下:

2.TM421-e1相机操作

2.1 下载看图软件连接相机

1.TM421-E1相机,建议搭配图漾官网PercipioViewer看图软件使用,看图软件下载链接:图漾官网

2.PercipioViewer看图软件详细操作,可查看此链接:图漾官网PercipioViewer软件操作手册


2.2 图漾PercipioViewer软件更改相机IP

详细更改相机的IP操作,可打开链接:

通过PercipioViewer软件更改相机IP

2.3 深度图调参

2.3.1 相机的IR参数

PercipioViewer软件参数设置:

个人推荐的参数配置:

2.3.2 相机的Depth参数

PercipioViewer软件参数设置:

个人推荐的参数配置:

2.3.3 相机的RGB参数

PercipioViewer软件参数设置:

个人推荐的参数配置:

每个参数的作用,可参看链接:相机参数作用

2.4 深度图评估

2.4.1 评估点云

打开深度取图开关,打开下图如下位置:

个人建议参考上图中的1和3,2的数值会收到ROI大小和ROI是否平整等因素有关,会波动较大。

2.4.2 填充空洞

2.4.3 滤波功能

2.4.4 时域滤波功能

2.4.5 中值滤波

2.4.6 调节深度图渲染效果

个人推荐使用Turto渲染功能,该功能类似Opencv中的colorformap函数。

2.5 保存图像

详细操作和图像格式,可打开链接:图漾看图软件保存图片

2.5.1 单张存图

具体操作步骤如下:

2.5.2 连续存图

Percipio Viewer 可以按照预设帧数连续保存图像(深度图、彩色图、左右灰度图、深度图映射至彩色图的对齐图、彩色图映射至深度图的对齐图、点云图、深度与彩色对齐后生成的点云图)。

2.6 相机保存参数配置

保存相机参数进相机storage区域,具体操作流程如下图:

图漾相机保存参数配置

2.6.1 保存参数限制

只能保存每个组件control下的属性,其他的参数无法保存进相机里。

3.TM421-E1相机SDK相关

TM421-E1相机,推荐使用的编程语言和SDK版本如下:

3.1 C++语言SDK(推荐)

TM421-E1相机,既可以使用官网3.X.X版本的SDK,也可以使用4.X.X版本的SDK。

具体操作和Sample和案例,可打开如下链接:

1.图漾相机4.X.X版本C++语言SDK

2.图漾官网C++语言教程

3.2 ROS1版本(推荐)

TM421-E1相机,既可以使用官网3.X.X版本的SDK,也可以使用4.X.X版本的SDK。

具体操作和Sample和案例,可打开如下链接:

图漾相机-ROS1_SDK_ubuntu 4.X.X版本编译

图漾官网ROS1教程

3.3 ROS2版本(推荐)

TM421-E1相机,既可以使用官网3.X.X版本的SDK,也可以使用4.X.X版本的SDK。

具体操作和Sample和案例,可打开如下链接:

图漾相机-ROS2-SDK-Ubuntu 4.X.X版本编译

图漾官网ROS2教程

3.4 C#语言SDK

目前只建议使用3.X.X版本

建议参考以下链接

1.图漾相机------C#语言 3.X.X版本属性设置

2.图漾官网3.X.X版本C#语言属性设置

3.5 Python语言SDK

目前只建议使用3.X.X版本

建议参考以下链接:

1.图漾相机------Python 3.X.X版本属性设置

2.图漾官网3.X.X版本Python语言属性设置

3.6 Halcon语言SDK

建议参考以下链接:

1.图漾Halcon版本SDK使用教程【V1.1.X新版本】

3.7 VisionPro语言SDK

建议参考以下链接:

1.图漾相机搭配VisionPro使用简易教程

如果使用VisionPro调用TOF相机,请联系图漾技术,获取最新版本SDK。

4.TM421-E1相机内外参说明

4.1 如何获取TM421-E1相机内参?

4.1.1 方法一 运行DumpCalibInfo

SDK3.6.52之后版本,新增示例程序,此示例程序可以将相机的标定参数以json文件的形式导出到本地。

编译C++语言中的例子,之后运行Sample_V1文件夹中的DumpCalibInfo 例子,会生成一个json文件,里面记录TM421--E1相机的内外参信息。

生成的json文件如下图:

cpp 复制代码
{
	"sn": "207000158052",
	"timestamp": "2025-11-29 15:46:36",
	"depth_calib_info" : {
		"intri": [
		502.291199,
		0.000000,
		319.220612,
		0.000000,
		502.327789,
		227.759399,
		0.000000,
		0.000000,
		1.000000
		],
		"distortion": [
		-0.123782,
		0.363715,
		-0.001340,
		-0.001497,
		-0.218061,
		0.105583,
		0.312982,
		-0.188665,
		0.003241,
		0.000591,
		0.003273,
		0.000087
		],
		"image_width": 640,
		"image_height": 480,
		"scale_unit": 1.000000
	},
	"color_calib_info" : {
		"intri": [
		1168.027344,
		0.000000,
		990.783508,
		0.000000,
		1167.224487,
		528.811157,
		0.000000,
		0.000000,
		1.000000
		],
		"extri": [
		0.999741,
		0.005170,
		0.022140,
		-20.639297,
		-0.005257,
		0.999979,
		0.003876,
		-0.196854,
		-0.022119,
		-0.003992,
		0.999747,
		2.040262,
		0.000000,
		0.000000,
		0.000000,
		1.000000,
		0.079548
		],
		"distortion": [
		0.079548,
		0.868247,
		-0.001351,
		0.000376,
		0.324527,
		0.112956,
		1.000000,
		0.521430,
		-0.001317,
		0.000213,
		0.003056,
		-0.000236
		],
		"image_width": 1920,
		"image_height": 1080
	}

4.1.2 方法二 运行DumpAllFeature例子

图漾C++语言SDK下载链接

使用官网如下路径下的x64 压缩包,通过鼠标右键+shift键 ,进入到PowerShell界面,运行DumpAllFeatures例子,生成对应内容:

4.1.3 通过PV软件

具体方法如下:

4.2 TM421-E1相机内参说明

运行DumpAllFeatures例子,具体方法参考4.1章节方法二,打印出来的内参如下:

cpp 复制代码
 TY_COMPONENT_DEPTH_CAM:
         TY_STRUCT_CAM_INTRINSIC: comp(0x10000) feat(0x7000) name(depth intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       502.291199 0.000000 319.220612
                       0.000000 502.327789 227.759399
                       0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x10000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       -0.123782 0.363715 -0.001340 -0.001497
                       -0.218061 0.105583 0.312982 -0.188665
                       0.003241 0.000591 0.003273 0.000087
        
  TY_COMPONENT_IR_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x40000) feat(0x7000) name(intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       502.291199 0.000000 319.220612
                       0.000000 502.327789 227.759399
                       0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x40000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       -0.123782 0.363715 -0.001340 -0.001497
                       -0.218061 0.105583 0.312982 -0.188665
                       0.003241 0.000591 0.003273 0.000087

  TY_COMPONENT_RGB_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x100000) feat(0x7000) name(rgb intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1168.027344 0.000000 990.783508
                       0.000000 1167.224487 528.811157
                      0.000000 0.000000 1.000000
         TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x100000) feat(0x7001) name(rgb to leftIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.999741 0.005170 0.022140 -20.639297
                       -0.005257 0.999979 0.003876 -0.196854
                       -0.022119 -0.003992 0.999747 2.040262
                       0.000000 0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x100000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.079548 0.868247 -0.001351 0.000376
                       0.324527 0.112956 1.000000 0.521430
                       -0.001317 0.000213 0.003056 -0.000236

4.2.1 深度图内参

cpp 复制代码
TY_COMPONENT_DEPTH_CAM:
TY_STRUCT_CAM_INTRINSIC: comp(0x10000) feat(0x7000) name(depth intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       502.291199 0.000000 319.220612
                       0.000000 502.327789 227.759399
                       0.000000 0.000000 1.000000
TY_STRUCT_CAM_DISTORTION: comp(0x10000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       -0.123782 0.363715 -0.001340 -0.001497
                      -0.218061 0.105583 0.312982 -0.188665
                       0.003241 0.000591 0.003273 0.000087

1.cx和cy通常大约是图像分辨率W和H的一半,得出TM265-E1相机深度图出厂标定分辨率为640x480

2.通过此处,发现图漾相机的TOF相机,深度图也是需要进行畸变校正的

4.2.2 彩色图内参/畸变系数/外参

cpp 复制代码
  TY_COMPONENT_RGB_CAM_LEFT:
         TY_STRUCT_CAM_INTRINSIC: comp(0x100000) feat(0x7000) name(rgb intrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       1168.027344 0.000000 990.783508
                       0.000000 1167.224487 528.811157
                      0.000000 0.000000 1.000000
         TY_STRUCT_CAM_DISTORTION: comp(0x100000) feat(0x7006) name(distortion) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.079548 0.868247 -0.001351 0.000376
                       0.324527 0.112956 1.000000 0.521430
                       -0.001317 0.000213 0.003056 -0.000236

1.cx和cy通常大约是图像分辨率W和H的一半,得出GM465-E1相机深度图出厂标定分辨率为1920x1080

2.彩色图相机的畸变系数如下:

cpp 复制代码
   用TYGetEnum(hDevice, comp_id, TY_ENUM_LENS_OPTICAL_TYPE, &lens_tpye)来区分新旧相机。
   //TY_LENS_PINHOLE是小孔成像,RGB畸变系数依次是k1,k2,p1,p2,k3,k4,k5,k6,s1,s2,s3,s4
   //TY_LENS_FISHEYE是新的鱼眼标定,RGB畸变系数依次是k1,k2,k3,k4

3.彩色图相机的外参如下:

cpp 复制代码
 TY_STRUCT_EXTRINSIC_TO_DEPTH: comp(0x100000) feat(0x7001) name(rgb to leftIR extrinsic) access(1) bindComponent(0x0) bindFeature(0x0)
                       0.999741 0.005170 0.022140 -20.639297
                       -0.005257 0.999979 0.003876 -0.196854
                       -0.022119 -0.003992 0.999747 2.040262
                       0.000000 0.000000 0.000000 1.000000

4.3 TM421-E1相机光心位置

5.TM421-E1相机常见问题FAQ

5.1 拍摄黑色托盘成像较差,如何调整

1.提前知道相机 IP,可以鼠标邮件+shift键,进入powershell界面 ,之后 ssh root@相机 IP 。 若出现以下输入yes

2.相机密码 123456 进入相机

3. 先修改权限, 输入:

cpp 复制代码
 mount -o remount,rw /

4. 编辑文件:

cpp 复制代码
vi /etc/init.d/S98gevcam

5. 按 a 进入编辑模式, 在 start(){...}的最后添加脚本

cpp 复制代码
 i2ctransfer 2 w3@0x57 0x21 0xa0 0x44 -fy
i2ctransfer 2 w3@0x57 0x21 0xa1 0x44 -fy

修改 S98gevcam(-fy 只是没显示出来, 也需要写)

6. 按 ESC, 输入:wq 保存退出

7. 输入 reboot 重启

5.1.1 验证是否生效

验证是否生效

1. 重启后分别输入

cpp 复制代码
i2ctransfer 2 w2@0x57 0x21 0xa0 r1 -fy
i2ctransfer 2 w2@0x57 0x21 0xa1 r1 -fy

分别输出 0x44, 即为修改成功。

5.1.2 调整相机参数

个人推荐的参数

5.2 相机贴地安装/高亮地面等造成成像异常

实际成像点云图如下图所示:

【原因解释】:

TOF相机由于地面串扰,会在高亮地面,靠近托盘处有点云镜像,建议把TOF相机放置在距离地面30cm公分以上,如需要贴地安装,建议使用双目散斑相机。

【缓解措施】:

首先降低IR Stream数据流,降低曝光时间,之后调整Depth Stream数据流,调整filter Threshold 数值在50~100之间。

5.3 托盘上有高低反材质

托盘上有高低反二维码,实际场景如下图:

实际成像点云图,如下图所示:

原因解释】:

打开相机IR Stram数据流,会发现二维码附近周边像素都很亮,造成光污染,从而引起二维码附近的点云异常。

【缓解措施】:

首先降低IR Stream数据流,降低曝光时间,之后调整Depth Stream数据流,将 depth quality模式改为high模式。

6.TM421-E1相机测试结果

6.1 TM421-E1 帧率测试

6.1.1 TM421-E1 出图延迟时间

出图延迟时间 :相机在连续采集模式下统计从开始曝光到系统完全处理完图像的总之时间,单位微秒。

出图延时时间测试结果如下所示:

TM421-E1出图延迟时间测试结果

6.1.2 TM421-E1 帧率测试

FPS(帧率) :指相机设置在自由采集模式下,上位机每秒采集的图像帧数。

TM421-E1帧率测试结果如下所示:

TM421-E1相机帧率结果

7.其他学习资料

1.TOF系统 第一章 系统综述

2.TOF系统 第二章 dTOF系统

3.TOF系统 第三章 iTOF系统

4.TOF系统 第四章 dTOF和iTOF比较及应用

5.TOF系统 第五章 VCSEL

6.TOF系统 第六章 电路系统

7.TOF系统

8. 图漾官网相机规格书

相关推荐
zstar-_6 小时前
使用全景相机进行高斯泼溅的构建方案
数码相机
合方圆~小文1 天前
AI摄像头精准识别技术依赖于深度算法
数据结构·数据库·数码相机·模块测试
youngong3 天前
强迫症之用相机快门数批量重命名文件
数码相机·文件管理
weixin_466485116 天前
halcon标定助手的使用
数码相机
诸葛务农8 天前
ToF(飞行时间)相机在人形机器人非接触式传感领域内的应用
数码相机·机器人
塞北山巅8 天前
相机自动曝光(AE)核心算法——从参数调节到亮度标定
数码相机·算法
美摄科技9 天前
相机sdk是什么意思?
数码相机
phyit9 天前
全景相机领域,影石何以杀出重围?
数码相机
鄃鳕9 天前
装饰器【Python】
开发语言·python·数码相机