/LocalizationServer

Primary LanguageC++MIT LicenseMIT

LocalizationServer

下文中,色标指纯色的正方型图案。定位图案指由三个色标按照一定序列排列组成的,用于定位的色标组合。定位图案可以在resource文件夹中找到。

##程序说明 编译会生成两个程序,GetColorLocalizationServer

  1. GetColor用于色标阈值标定,该程序会生成阈值文件threshold.yaml,供LocalizationServer进行色标分割。

  2. LocalizationServer是定位主程序,该程序使用位于场地顶部的摄像头进行机器人定位。

##色标阈值标定方法 在执行定位程序之前,需要对色标进行颜色标定,注意不同的光照环境会影响画面中色标的颜色值,所以阈值标定要在实际使用的环境中进行。

  1. 运行getColor程序,程序需要附加video参数,指定要使用的摄像头,如不加默认使用0号摄像头。
./getColor --video=1
  1. 程序运行后会出现两个界面,一个是用于观察标定效果的BigImage,一个是用于调整阈值的Config

  2. BigImage中,左上角的图片是摄像头原图,红色文字是正在进行标定的色标种类,左下角的图片是标定结果,标定结果用黄色十字进行显示,绿色框表示对于颜色的识别情况(一般绿色框会很小,比较难看清)。右上角的图片表示使用阈值过滤后的二值图像,右下角的图片是二值图像进行形态学滤波后的效果(也是最终用于确定色标位置的图片)。

  3. Config中的六根拖动条分别代表YUV编码的图像中,三个通道的上下限值。

  4. 键盘的1-4可以切换要标定的色标,色标总共分四中,两种队伍色标(用于区分队伍),两种队员色标(用于队员标号,其中位于定位图案中间的色标为队员色标1,另一个为队员色标2)。

  5. 进行标定时,先确定要标定的色标种类,然后使用鼠标左键在BigImage左上角的图片中选取要标定的色块(将鼠标放置在色标的中心并点击),此时Config中的阈值条会自动调整到一个大致的范围,用户根据实际情况,修改上下限值,确保图中所有的色标都能被识别出来(有黄色十字出现)。

  6. 按照上述的步骤,完成4种色标的标定,标定的时候,要确保所有的色标能够在场地的任意位置被识别到,且同种色标不连通(通常发生在定位图案中两个队员色标相同的情况。阈值选取不好的时候,会发生队员色标连通的现象)

  7. 色标标定完成后,按q或者Enter退出程序(注意,非正常退出无法保存阈值文件)。程序会在当前目录下生成名为threshold.yaml的阈值文件。

##定位程序使用方法 定位程序需要阈值文件threshold.yaml,使用时请确保前一步生成的阈值文件和LocalizationServer在运行目录中。

  1. 运行LocalizationServer程序,程序需要附加video参数,指定要使用的摄像头,如不加默认使用0号摄像头。
./getColor --video=1
  1. 程序正常运行后,会根据阈值文件进行色标分割和定位图案解析,并输出定位图案的坐标以及方向。

##注意事项

  1. 目前程序稳定性较差,测试时尽量使用纯色(不和色标颜色相同)背景。