260609
我们接下来要进入我们的 04 了,即视觉旗帜检测,我们目前先采用算法来进行检测,针对颜色进行检测就可以了。
对于模型的接入,我们会在算法跑通的基础上,接入模型,既 04B,YOLO 旗帜检测升级。
我们目前让 AI 完成了 04 部分的文档和代码。
我们 04,包括 04B,目前只会做到对旗帜的图像检测,而不会对旗帜进行实际的定位和导航,实际的定位 + 导航我们会在 05 再去做。
我们先实现所需的消息文件,创建 src/kibot_one_interface/msg/FlagDetection.msg:
std_msgs/Header header
bool detected
float32 center_x
float32 center_y
uint32 image_width
uint32 image_height
uint32 pixel_count
float32 confidence
这个 header 是继续沿用标准消息库中的 Header,方便我们后续接入相机 link 后知道这个图片是从哪个相机传过来的。
然后 detected 是我们给阶段 06 提供的最小状态切换条件。
center_x/center_y负责给我们的阶段 05 留出方向估计的入口。
对于 image_width/image_heigh,便于我们后续的消费者可以把像素进行中心归一化。
最后的 pixel_count/confidence则负责让我们来判断检测的质量。
然后把这个消息注册到 CMake 中,需要添加 find_package(std_msgs REQUIRED)作为所需的依赖,然后把 "msg/FlagDetection.msg" 放到 rosidl_generate_interfaces 中。
除此之外,我们还需要更新一下src/kibot_one_interface/package.xml,把我们标准消息库给加进去:
<depend>std_msgs</depend>
最后我们看看能不能构建成功:
(.venv) jese--ki@KiBall:~/Projects/dev/KiBots/KiBotTwo$ make build
colcon build
Starting >>> kibot_one_interface
Starting >>> kibot_one_sim
Finished <<< kibot_one_sim [0.32s]
Finished <<< kibot_one_interface [1.81s]
Starting >>> kibot_one_control
Finished <<< kibot_one_control [1.15s]
Summary: 3 packages finished [3.11s]
最后成功构建。