文章目录
- 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操作,具体步骤如下:
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.如果相机另外一端连接的是网卡,请参考下面链接第四章节,进行网卡设置。
原因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相机供电时,会使用到如下供电设施给相机供电,如下图:
现象
:
在相机工作一阵子后,出现工作不稳定的现象
原因
:
这种供电设施,正常模式工作在限流模式,如果想提高电压,需要先提升电流。
解决措施:
建议使用明纬等常规工业开关电源。