串口协议

当你想把SingTown AI Vision Module 通过串口连接到其他控制器,而控制器没有对应的代码时,会需要本文档来编写控制器的代码。

介绍

  1. SingTown AI Vision Module 识别结束后就会发送一次数据帧。即使没有识别到结果,也会发送数据帧。

  2. 串口发送的是二进制格式。每个数据帧,都会以帧头(0xEB,0x90)开始。

  3. 传输顺序为小端,也就是说对于uint16,先传输低字节,再传输高字节。

  4. crc为校验字节。校验不包括帧头。

目标检测格式

SingTown AI Vision Module 会按照下面的顺序发送数据帧。

  1. 发送帧头(0xEB,0x90),一共2字节。

  2. 发送识别到的数量num,1字节。

  3. 发送第一个识别对象的得分(score),标签编号(idx),矩形左上坐标(left, top),矩形右下坐标(right, bottom),每个识别对象10字节。

  4. 发送第二个,第三个…识别对象。直到一共发送num个识别对象。

  5. 发送crc检验,1字节。

frame head1

0xEB

frame head2

0x90

num

uint8

score1

uint8

idx1

uint8

left1

uint16

top1

uint16

right1

uint16

bottom1

uint16

score2

uint8

idx2

uint8

left2

uint16

top2

uint16

right2

uint16

bottom2

uint16

crc

uint8

各个值的意义:

  1. score代表对应的识别对象的准确度,范围0到255。score值越大,越像目标。识别到多个目标时,按照得分从高到低顺序发送。

  2. idx是用户自己设置的标签的编号,如果标签是猫和狗,0就代表猫,1就代表狗。标签列表是在星瞳AI云服务中设置的,每个项目都有不同的标签。

  3. left, top, right, bottom,是目标的位置坐标。原点在画面左上角。

../_images/coordinate_od.jpg

分类格式

SingTown AI Vision Module 会按照下面的顺序发送数据帧。

  1. 发送帧头(0xEB,0x90),一共2字节。

  2. 发送分类的数量num,一共1字节。如果标签是猫和狗,那么num就是2。这个数量是在星瞳AI云服务中设置的,每个项目都有不同的分类数量。

  3. 发送每一个分类的得分(score)。每个得分1字节。score代表对应的识别对象的准确度,范围0到255。score值越大,越像目标。

  4. 发送crc检验,1字节。

frame head1

0xEB

frame head2

0x90

num

uint8

score1

uint8

score2

uint8

crc

uint8