下文中,色标指纯色的正方型图案。定位图案指由三个色标按照一定序列排列组成的,用于定位的色标组合。定位图案可以在resource
文件夹中找到。
##程序说明
编译会生成两个程序,GetColor
和LocalizationServer
。
-
GetColor
用于色标阈值标定,该程序会生成阈值文件threshold.yaml
,供LocalizationServer
进行色标分割。 -
LocalizationServer
是定位主程序,该程序使用位于场地顶部的摄像头进行机器人定位。
##色标阈值标定方法 在执行定位程序之前,需要对色标进行颜色标定,注意不同的光照环境会影响画面中色标的颜色值,所以阈值标定要在实际使用的环境中进行。
- 运行
getColor
程序,程序需要附加video参数,指定要使用的摄像头,如不加默认使用0
号摄像头。
./getColor --video=1
-
程序运行后会出现两个界面,一个是用于观察标定效果的
BigImage
,一个是用于调整阈值的Config
。 -
BigImage
中,左上角的图片是摄像头原图,红色文字是正在进行标定的色标种类,左下角的图片是标定结果,标定结果用黄色十字进行显示,绿色框表示对于颜色的识别情况(一般绿色框会很小,比较难看清)。右上角的图片表示使用阈值过滤后的二值图像,右下角的图片是二值图像进行形态学滤波后的效果(也是最终用于确定色标位置的图片)。 -
Config
中的六根拖动条分别代表YUV
编码的图像中,三个通道的上下限值。 -
键盘的
1-4
可以切换要标定的色标,色标总共分四中,两种队伍色标(用于区分队伍),两种队员色标(用于队员标号,其中位于定位图案中间的色标为队员色标1,另一个为队员色标2)。 -
进行标定时,先确定要标定的色标种类,然后使用鼠标左键在
BigImage
左上角的图片中选取要标定的色块(将鼠标放置在色标的中心并点击),此时Config
中的阈值条会自动调整到一个大致的范围,用户根据实际情况,修改上下限值,确保图中所有的色标都能被识别出来(有黄色十字出现)。 -
按照上述的步骤,完成4种色标的标定,标定的时候,要确保所有的色标能够在场地的任意位置被识别到,且同种色标不连通(通常发生在定位图案中两个队员色标相同的情况。阈值选取不好的时候,会发生队员色标连通的现象)
-
色标标定完成后,按
q
或者Enter
退出程序(注意,非正常退出无法保存阈值文件)。程序会在当前目录下生成名为threshold.yaml
的阈值文件。
##定位程序使用方法
定位程序需要阈值文件threshold.yaml
,使用时请确保前一步生成的阈值文件和LocalizationServer
在运行目录中。
- 运行
LocalizationServer
程序,程序需要附加video参数,指定要使用的摄像头,如不加默认使用0
号摄像头。
./getColor --video=1
- 程序正常运行后,会根据阈值文件进行色标分割和定位图案解析,并输出定位图案的坐标以及方向。
##注意事项
- 目前程序稳定性较差,测试时尽量使用纯色(不和色标颜色相同)背景。