图漾相机错误码解析

文章目录

  • 1.相机错误码汇总
  • 2.常见报错码
    • [2.1 -1001报错](#2.1 -1001报错)
      • [2.1.1 没有找到相机](#2.1.1 没有找到相机)
      • [2.1.2 SDK没有进行初始化](#2.1.2 SDK没有进行初始化)
      • [2.1.3 相机不支持Histo属性](#2.1.3 相机不支持Histo属性)
    • [2.2 -1005报错](#2.2 -1005报错)
      • [2.2.1 跨网段打开相机](#2.2.1 跨网段打开相机)
      • [2.2.2 旧版本SDK在软触发失败后提示的报错](#2.2.2 旧版本SDK在软触发失败后提示的报错)
      • [2.2.3 相机初始化上电时报错](#2.2.3 相机初始化上电时报错)
      • [2.2.4 USB相机被占用](#2.2.4 USB相机被占用)
    • [2.3 -1009报错](#2.3 -1009报错)
      • [2.3.1 相机本身不支持改属性](#2.3.1 相机本身不支持改属性)
    • [2.4 -1014报错](#2.4 -1014报错)
      • [2.4.1 超时时间设置较小](#2.4.1 超时时间设置较小)
      • [2.4.2 相机丢帧](#2.4.2 相机丢帧)
    • [2.5 -1016报错](#2.5 -1016报错)
      • [2.5.1 SDK调用顺序逻辑有问题](#2.5.1 SDK调用顺序逻辑有问题)
      • [2.5.2 相机在StartCapture后处于busy状态](#2.5.2 相机在StartCapture后处于busy状态)
      • [2.5.3 相机异常关闭时,再次刷新打开相机,提示报错](#2.5.3 相机异常关闭时,再次刷新打开相机,提示报错)
    • [2.6 -1018报错](#2.6 -1018报错)
      • [2.6.1 网络因素造成的丢帧](#2.6.1 网络因素造成的丢帧)
    • [2.7 -1024报错](#2.7 -1024报错)
  • 3.不常见错误
    • [3.1 -1003报错](#3.1 -1003报错)
    • [3.2 -1004报错](#3.2 -1004报错)
    • [3.3 -1008报错](#3.3 -1008报错)
  • 4.综合问题
    • [4.1 相机供电原因,造成的相机异常](#4.1 相机供电原因,造成的相机异常)
      • [4.1.1 供电设备工作在限流模式](#4.1.1 供电设备工作在限流模式)

1.相机错误码汇总

1.相机自身常见的错误码如下,具体含义稍后阐述:

cpp 复制代码
 TY_STATUS_OK                = 0,   //相机正常工作
 TY_STATUS_ERROR             = -1001,//相机状态异常
 TY_STATUS_NOT_INITED        = -1002, //相机未初始化
 TY_STATUS_NOT_IMPLEMENTED   = -1003, //相机未实现
 TY_STATUS_NOT_PERMITTED     = -1004, //状态不允许
 TY_STATUS_DEVICE_ERROR      = -1005, //相机设备错误
 TY_STATUS_INVALID_PARAMETER = -1006, //非法的参数
 TY_STATUS_INVALID_HANDLE    = -1007,//非法的设备句柄
 TY_STATUS_INVALID_COMPONENT = -1008,//非法的设备组件
 TY_STATUS_INVALID_FEATURE   = -1009,//非法的属性
 TY_STATUS_WRONG_TYPE        = -1010,//错误类型
 TY_STATUS_WRONG_SIZE        = -1011,//错误的尺寸
 TY_STATUS_OUT_OF_MEMORY     = -1012,//超出memory
 TY_STATUS_OUT_OF_RANGE      = -1013,//超出范围
 TY_STATUS_TIMEOUT           = -1014,//设备取图超时
 TY_STATUS_WRONG_MODE        = -1015,//错误的模式
 TY_STATUS_BUSY              = -1016,//系统处于忙碌中
 TY_STATUS_IDLE              = -1017,//相机未回到idle状态
 TY_STATUS_NO_DATA           = -1018,//未取到完整图像数据
 TY_STATUS_NO_BUFFER         = -1019,//buffer中无数据
 TY_STATUS_NULL_POINTER      = -1020,//空指针
 TY_STATUS_READONLY_FEATURE  = -1021,//只读的属性
 TY_STATUS_INVALID_DESCRIPTOR= -1022,//非法描述
 TY_STATUS_INVALID_INTERFACE = -1023, //非法的接口
 TY_STATUS_FIRMWARE_ERROR    = -1024, //固件相关错误

 /* ret_code from remote device */
 TY_STATUS_DEV_EPERM         = -1,//operation not permitted
 TY_STATUS_DEV_EIO           = -5,// I/O er
 TY_STATUS_DEV_ENOMEM        = -12,//not enough memory
 TY_STATUS_DEV_EBUSY         = -16, //device is busy,属于相机内部busy
 TY_STATUS_DEV_EINVAL        = -22,//相机内部初始化异常
 /* endof ret_code from remote device */

而在打开相机的过程中,遇到-1024报错,一定要打起十二分的精神,具体错误码含义如下:

cpp 复制代码
 TY_FW_ERRORCODE_CAM0_NOT_DETECTED       = 0x00000001, //没有检测到左IR
 TY_FW_ERRORCODE_CAM1_NOT_DETECTED       = 0x00000002,//没有检测到右IR
 TY_FW_ERRORCODE_CAM2_NOT_DETECTED       = 0x00000004,//没有检测到Color相机
 TY_FW_ERRORCODE_POE_NOT_INIT            = 0x00000008,//POE初始化异常
 TY_FW_ERRORCODE_RECMAP_NOT_CORRECT      = 0x00000010,//极线校正错误RecMap error
 TY_FW_ERRORCODE_LOOKUPTABLE_NOT_CORRECT = 0x00000020,//视差匹配错误 Disparity error 
 TY_FW_ERRORCODE_DRV8899_NOT_INIT        = 0x00000040,//舵机初始化异常 Motor init erro
 TY_FW_ERRORCODE_FOC_START_ERR           = 0x00000080,//舵机开启失败 Motor start failed
 TY_FW_ERRORCODE_CONFIG_NOT_FOUND        = 0x00010000,//相机内部缺失config文件 Config file not exist
 TY_FW_ERRORCODE_CONFIG_NOT_CORRECT      = 0x00020000,//相机内部config文件损坏 Broken Config file
 TY_FW_ERRORCODE_XML_NOT_FOUND           = 0x00040000,//相机内部缺失xml文件 XML file not exist
 TY_FW_ERRORCODE_XML_NOT_CORRECT         = 0x00080000,//解析xml文件失败 XML Parse err
 TY_FW_ERRORCODE_XML_OVERRIDE_FAILED     = 0x00100000,//非法的xml文件,只可用于debug测试 Illegal XML file overrided Only Used in Debug Mode!"      
 TY_FW_ERRORCODE_CAM_INIT_FAILED         = 0x00200000,//初始化相机默认属性失败 Init default cam feature failed!
 TY_FW_ERRORCODE_LASER_INIT_FAILED       = 0x00400000,//初始化相机Laser属性失败 Init default laser feature failed!

2.常见报错码

2.1 -1001报错

相机出现-1001报错,可能的原因如下:

2.1.1 没有找到相机

解决措施 :

首先需要检查下相机是否正常供电,状态指示灯是否正常,相机状态指示灯如下图所示,同时通过PercipioViewer软件能否正常枚举到相机。

2.1.2 SDK没有进行初始化

以C++版本SDK为例,需要完整调用以下两个接口,否则容易在初始化枚举设备时出现-1001报错

cpp 复制代码
  LOGD("=== Init lib");
  ASSERT_OK( TYInitLib() );
  TY_VERSION_INFO ver;
  ASSERT_OK( TYLibVersion(&ver) );
  LOGD("     - lib version: %d.%d.%d", ver.major, ver.minor, ver.patch);

2.1.3 相机不支持Histo属性

原因:不支持Histo属性的相机,在startCapture时上报some error -1001

2.2 -1005报错

2.2.1 跨网段打开相机

原因1

相机的 IP 地址与上位机 IP 地址不在同一网段,若相机的 IP 地址与上位机 IP 地址不在同一网段,上位机可跨网段发现该相机,但不能打开。此时,可修改相机 IP 地址或上位机IP 地址。

解决措施1

相机出厂默认IP为169.254.X.X网段,如果是第一次连接图漾相机,建议先将电脑上网络适配器改为自动IP,通过PeripioViewer连接一下相机,之后将电脑上网络适配器改为静态IP后,再将相机设置为静态IP。

原因2

之前在A电脑上将旧相机IP设置为192.168.1.X网段,在B电脑(与A电脑不在同一个网段)上打开相机,提示-1005报错。

解决措施2

使用官网最新的PercipioViewer软件打开相机,进行更改IP操作,具体步骤如下:

图漾相机更改IP操作

2.2.2 旧版本SDK在软触发失败后提示的报错

原因

3.6.53版本之前的SDK,触发超时错误码是-1005

解决措施

升级一下相机SDK或者旧SDK里面规避一下此问题。

cpp 复制代码
 if (m_run_model == CameraModel::TRIGGER && m_get_data)
       {
                int isok=TYSendSoftTrigger(hDevice);
                if (TY_STATUS_OK!=isok)
                {//trigger muti time
                    LogError("soft trigger fail!");
                    LogInfo("camera return :"<<isok)
                    if (isok==-1005)
                   {
                        ASSERT_OK(TYStopCapture(hDevice));
                        std::this_thread::sleep_for(std::chrono::milliseconds(600));
                        ASSERT_OK(TYStartCapture(hDevice));
                        continue;
                    }
                    else
                     {
                        std::this_thread::sleep_for(std::chrono::milliseconds(200));
                        continue;
                    }
            };
      }

2.2.3 相机初始化上电时报错

原因

上电到初始化完成整个过程约40s,初始化完成后,Power灯以 1HZ 频率闪烁,Ethernet 灯常亮(表示相机为千兆网),Act 灯会在有数据传输时闪烁。如果在刚上电的时候,就打开相机,会提示-1005报错,这个跟相机底层枚举机制有关系,初始上电时,建议加一些延时。

2.2.4 USB相机被占用

请排查是否有其他进程占用了该 USB 相机(如 Percipio Viewer 工具)。若是其他进程占用了该相机,关闭进程即可。

2.3 -1009报错

2.3.1 相机本身不支持改属性

原因

如TM461-E2相机本身不支持触发,如果SDK设置触发模式,此时会报错

解决措施

屏蔽对应报错代码。

2.4 -1014报错

2.4.1 超时时间设置较小

原因

程序中 TYFetchFrame 中的超时时间设置过短。

解决措施

请根据相机的出图延迟时间合理设置超时时间,推荐5000以上,单位:毫秒。

cpp 复制代码
TYFetchFrame(hDevice, &frame, 5000);

2.4.2 相机丢帧

原因1

相机进入百兆网时,Ethernet 灯处于熄灭状态,如下图所示:

解决措施1

1.首先检测硬件配置,排查顺序依次是网口->网线->交换机/网卡配置

2.尤其是PS800/802/FM855/815/TL430等使用X-Code线缆的相机,一定要注意检查Pin针是否歪了,如下图所示

3.其次确认所用网线是否为CAT5E及以上的网线(千兆网线)。

4.确认是否是独享带宽交换机,同时开启了交换机Web功能,开启Web功能,不同交换机型号不太一样,以 TP-LINK TL-SG2210PE 为例介绍如何开启流控,具体操作请参考下面链接

开启交换机流控功能

5.如果相机另外一端连接的是网卡,请参考下面链接第四章节,进行网卡设置。

Windows环境网卡设置

原因2

数据量太大

解决措施2

数据量太大,上位机处理能力不足。建议更换性能好的上位机或者减少数据量。

原因3

SDK中未开启网络重传
解决措施3

cpp 复制代码
LOGD("=== resend: %d", resend);
	if (resend) 
	{
		bool hasResend;
		ASSERT_OK(TYHasFeature(hDevice, TY_COMPONENT_DEVICE, TY_BOOL_GVSP_RESEND, &hasResend));
		if (hasResend) 
		{
			LOGD("=== Open resend");
			ASSERT_OK(TYSetBool(hDevice, TY_COMPONENT_DEVICE, TY_BOOL_GVSP_RESEND, true));
		}
		else 
		{
			LOGD("=== Not support feature TY_BOOL_GVSP_RESEND");
		}
	}

原因4

一台上位机同时运行多台相机
解决措施4

打开多相机瞬间CPU升高,相机一定时间内没有收到心跳包。

2.5 -1016报错

2.5.1 SDK调用顺序逻辑有问题

原因

配置相机属性时,报错-1016
解决措施

需要在TYStartCapture() 之前配置的参数,写在startcapture之后。

如设置相机图像的分辨率、设置相机的工作模式等。

具体参见相机fetch_config.xml文件。若writableAtRun≠"1",则必须写在 TYStartCapture() 之前。

2.5.2 相机在StartCapture后处于busy状态

原因

发送软触发命令时存在-1016的报错。

个别相机如:TL460-S1-E1、FM851-S1-E2内部带算力的相机,在相机TYStartCapture()之后,会有一段busy时间,这个时间内发送软触发命令,会造成-1016报错。

解决措施

1.增加一段延迟时间,MSLEEP(7000);

2.将代码进行修改,如下:

cpp 复制代码
while(TY_STATUS_BUSY == TYSendSoftTrigger(hDevice));

2.5.3 相机异常关闭时,再次刷新打开相机,提示报错

现象

相机运行时,拔掉相机后点击刷新列表,列表中相机状态变为-1016,相机重连后,再点击刷新列表,错误码不消失。

测试方法

c 复制代码
1.连接一台相机(tof或者双目相机)
2.使用PV软件打开相机并使相机采集图像
3.拔掉相机的电源,点击刷新列表

原因

相机掉线之后,SDK 接口TYCloseDevice无法和相机正常通讯提前返回了,导致相机的is_running flag不会被重置,后面重新打开此相机,就会出现busy错误。

解决措施

将相机SDK版本升级至3.6.66及其以上版本

2.6 -1018报错

2.6.1 网络因素造成的丢帧

原因1

网络波动,造成的丢帧,如日志中出现DropImage或者Ignoring frame。

原因2

旧版本的SDK(3.6.48版本之前),某次sendSoftTrigger超时,但是未正常处理(只检测了busy),或者是软触发指令没有下发下去,造成取不到图 。

2.7 -1024报错

1.打印error code,进行对比,确定问题发生的原因,将TYOpenDevice()接口调用修改如下:

cpp 复制代码
TY_FW_ERRORCODE fw_err;
ASSERT_OK( TYOpenDevice(hIface, selectedDev.id, &hDevice,&fw_err) );
LOGD("%x", fw_err);

2.运行程序,读出fw_error 后进行对照下表找出对应的错误。

cpp 复制代码
cam0表示left ir,cam1表示right ir,cam2表示color。

3.如出现TY_FW_ERRORCODE_POE_NOT_INIT 错误,请确认PoE的型号是否符合协议标准。

3.不常见错误

3.1 -1003报错

现象

使用open-close 测试 TY_BOOL_GVSP_RESEND ,概率上报Assert failed: error -1003(not implemented)
原因

增加Feature的成员变量,TYHasFeature

未进行初始化,代码自动生成的feature未调用SetHasPvalue,此成员变量为随机值,若为true, 则会调用trySetCamPValue,返回TY_STATUS_NOT_IMPLEMENTED。
解决措施:

升级相机SDK版本。

3.2 -1004报错

现象

早期的PM805/806系列相机,在代码里设置scale_unit属性,提示报错
原因

早期的PM805/806系列相机,scale_unit属性是可读不可写,在SDK进行属性设置时,会报错。

cpp 复制代码
TYSetFloat(hDevice,TY COMPONENT DEPTH CAM,TY FLOAT SCALE UNIT,1))

解决措施:

联系图漾技术,升级相机固件版本。

3.3 -1008报错

现象

运行没有RGB的相机时,提示"-1008"报错

原因

一些相机里面有RGB组件,在走到设置RGB组件和属性时,产生报错。

解决措施:

代码里加个判断,如果有color,再去读color的标定数据

4.综合问题

4.1 相机供电原因,造成的相机异常

4.1.1 供电设备工作在限流模式

一些客户在给3D相机供电时,会使用到如下供电设施给相机供电,如下图:

现象

在相机工作一阵子后,出现工作不稳定的现象
原因

这种供电设施,正常模式工作在限流模式,如果想提高电压,需要先提升电流。
解决措施:

建议使用明纬等常规工业开关电源。

相关推荐
ocr_sinosecu19 小时前
[特殊字符]车牌识别相机,到底用在哪?
数码相机
余弦的倒数1 天前
海康立体相机3DMVS软件使用不同工作模式介绍
数码相机·3d
周胡杰2 天前
组件导航 (Navigation)+flutter项目搭建-混合开发+分栏
数码相机·flutter·华为·电脑·harmonyos·鸿蒙
90后小陈老师3 天前
WebXR教学 07 项目5 贪吃蛇小游戏
前端·数码相机
无情的8863 天前
常见相机焦段的分类及其应用
数码相机
中达瑞和-高光谱·多光谱3 天前
高光谱相机:基于高光谱成像技术的烟叶杂质剔除方案
数码相机
_Jyuan_4 天前
尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)
经验分享·笔记·数码相机·相机
吃个糖糖6 天前
MFC 调用海康相机进行软触发
c++·数码相机·mfc
szxinmai主板定制专家6 天前
RK3588 串行解串板,支持8路GMSL相机
数码相机