当前位置: 首页 > news >正文

图漾相机错误码解析(待补充)

文章目录

  • 1.相机错误码汇总
  • 2.常见报错码
    • 2.1 -1001报错
      • 2.1.1 没有找到相机
      • 2.1.2 SDK没有进行初始化
    • 2.2 -1005报错
      • 2.2.1 跨网段打开相机
      • 2.2.2 旧版本SDK在软触发失败后提示的报错
      • 2.2.3 相机初始化上电时报错
      • 2.2.4 USB相机被占用
    • 2.3 -1009报错
      • 2.3.1 相机本身不支持改属性
    • 2.4 -1014报错
      • 2.4.1 超时时间设置较小
      • 2.4.2 相机丢帧
    • 2.5 -1016报错
      • 2.5.1 SDK调用逻辑有问题
      • 2.5.2 相机在StartCapture后处于busy状态
    • 2.6 -1018报错
      • 2.6.1 网络因素造成的丢帧
    • 2.7 -1024报错
  • 3.综合问题

1.相机错误码汇总

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

 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,//超出memoryTY_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 permittedTY_STATUS_DEV_EIO           = -5,// I/O erTY_STATUS_DEV_ENOMEM        = -12,//not enough memoryTY_STATUS_DEV_EBUSY         = -16, //device is busy,属于相机内部busyTY_STATUS_DEV_EINVAL        = -22,//相机内部初始化异常/* endof ret_code from remote device */

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

 TY_FW_ERRORCODE_CAM0_NOT_DETECTED       = 0x00000001, //没有检测到左IRTY_FW_ERRORCODE_CAM1_NOT_DETECTED       = 0x00000002,//没有检测到右IRTY_FW_ERRORCODE_CAM2_NOT_DETECTED       = 0x00000004,//没有检测到Color相机TY_FW_ERRORCODE_POE_NOT_INIT            = 0x00000008,//POE初始化异常TY_FW_ERRORCODE_RECMAP_NOT_CORRECT      = 0x00000010,//极线校正错误RecMap errorTY_FW_ERRORCODE_LOOKUPTABLE_NOT_CORRECT = 0x00000020,//视差匹配错误 Disparity error TY_FW_ERRORCODE_DRV8899_NOT_INIT        = 0x00000040,//舵机初始化异常 Motor init erroTY_FW_ERRORCODE_FOC_START_ERR           = 0x00000080,//舵机开启失败 Motor start failedTY_FW_ERRORCODE_CONFIG_NOT_FOUND        = 0x00010000,//相机内部缺失config文件 Config file not existTY_FW_ERRORCODE_CONFIG_NOT_CORRECT      = 0x00020000,//相机内部config文件损坏 Broken Config fileTY_FW_ERRORCODE_XML_NOT_FOUND           = 0x00040000,//相机内部缺失xml文件 XML file not existTY_FW_ERRORCODE_XML_NOT_CORRECT         = 0x00080000,//解析xml文件失败 XML Parse errTY_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报错

  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.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里面规避一下此问题。

 if (m_run_model == CameraModel::TRIGGER && m_get_data){int isok=TYSendSoftTrigger(hDevice);if (TY_STATUS_OK!=isok){//trigger muti timeLogError("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以上,单位:毫秒。

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

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调用逻辑有问题

原因1
  配置相机属性时,报错-1016
解决措施1
  需要在TYStartCapture() 之前配置的参数,写在startcapture之后。
  如设置相机图像的分辨率、设置相机的工作模式等。
  具体参见相机fetch_config.xml文件。若writableAtRun≠"1",则必须写在 TYStartCapture() 之前。

2.5.2 相机在StartCapture后处于busy状态

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

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

解决措施2
  1.增加一段延迟时间,MSLEEP(7000);
  2.将代码进行修改,如下:

while(TY_STATUS_BUSY == TYSendSoftTrigger(hDevice));

2.6 -1018报错

2.6.1 网络因素造成的丢帧

原因1
  网络波动,造成的丢帧,如日志中出现DropImage或者Ignoring frame。
在这里插入图片描述
原因2
  旧版本的SDK(3.6.48版本之前),某次sendSoftTrigger超时,但是未正常处理(只检测了busy),或者是软触发指令没有下发下去,造成取不到图 。

2.7 -1024报错

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

TY_FW_ERRORCODE fw_err;
ASSERT_OK( TYOpenDevice(hIface, selectedDev.id, &hDevice,&fw_err) );
LOGD("%x", fw_err);

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

cam0表示left ir,cam1表示right ir,cam2表示color。

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

3.综合问题

待补充

相关文章:

  • 三种嵌入式开发常用的组网方式
  • Unity开发:预制体、接口与枚举
  • 基于tar包安装,创建两个tomcat实例
  • 测试自动化开发框架全解析
  • 没有保安工作经验,如何备考初级保安员证的实操考试?
  • 【第二届帕鲁杯】第二届帕鲁杯畸行的爱完整wp
  • Python 实现图片浏览和选择工具
  • AT_abc401_d [ABC401D] Logical Filling 题解
  • SDC命令详解:使用get_libs命令进行查询
  • 如何使用VCS+XA加密verilog和spice网表
  • JUC入门(三)
  • Unity 本土化插件 I2Localization
  • 需求频繁变更?AI 驱动的自动化解决方案实践
  • 【Fifty Project - D28】
  • chirpstack v4版本 全流程部署[ubuntu+docker]
  • Java Spring Boot 应用集成 Spring Security 使用 Redis 存储用户信息
  • 小白的进阶之路-人工智能从初步到精通pytorch的基本流程详解-1
  • 深入解析Spring Boot与Spring Cloud在微服务架构中的最佳实践
  • nginx日志
  • 人员管理2302版本
  • 凤阳县鼓楼四周连夜搭起围挡,安徽省文物局已介入调查
  • 十大券商看后市|A股指数有望进一步缓步推高,淡化短期波动
  • 以色列在加沙发起新一轮强攻,同步与哈马斯展开无条件谈判
  • 英国警方再逮捕一名涉嫌参与首相住宅纵火案嫌疑人
  • 全国游泳冠军赛:孙杨、潘展乐同进400自决赛,今晚将正面对决
  • 武康大楼再开发:一栋楼火还不够,要带火街区“朋友圈”