跳到主要内容

路面结构化

功能介绍

parking_perception package 是基于 hobot_dnn package 开发的路面结构化算法示例,利用 BPU 进行模型推理,从而得到算法推理结果。 本 package 支持直接订阅 sensors/msg/image 类型的话题,并且支持读取本地图片的形式进行推理,将算法信息通过话题发布的同时会将结果在 Web 页面渲染可视化,同时支持渲染图片保存在程序运行的 result 目录。

算法支持的目标检测类别如下:

类别说明
cyclist骑车人
person行人
rear车背
vehicle汽车
parking_lock地锁

算法支持的语义分割类别如下:

类别说明
road道路
background背景
lane_marking车道线
sign_line标志线
parking_lane车位线
parking_space车位区域
parking_rod停车杆
parking_lock地锁

代码仓库: (https://github.com/D-Robotics/parking_perception.git)

应用场景:室外停车区检测算法基于语义分割,识别出图片中的停车区域,可实现自动泊车的功能,主要应用于自动驾驶领域。

小车车位寻找案例:小车车位寻找

支持平台

平台运行方式示例功能
RDK X3, RDK X3 ModuleUbuntu 20.04 (Foxy), Ubuntu 22.04 (Humble)· 启动 MIPI/USB 摄像头/本地回灌,推理渲染结果在 Web 显示/保存在本地
X86Ubuntu 20.04 (Foxy)· 启动本地回灌,推理渲染结果在 Web 显示/保存在本地

算法信息

模型平台输入尺寸推理帧率(fps)
parking_perceptionX31x3x640x320103.52

准备工作

RDK 平台

  1. RDK 已烧录好 Ubuntu 系统镜像。

  2. RDK 已成功安装 TogetheROS.Bot。

X86 平台

  1. X86 环境已配置 Ubuntu 20.04 系统镜像。

  2. X86 环境已成功安装 tros.b。

使用介绍

package 对外发布包含语义分割和目标检测信息的算法 msg,用户可以订阅发布 msg 用于应用开发。

RDK 平台

mipi 摄像头发布图片

# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/parking_perception/config/ .

# 配置MIPI摄像头
export CAM_TYPE=mipi

# 启动launch文件
ros2 launch parking_perception parking_perception.launch.py

使用 usb 摄像头发布图片

# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/parking_perception/config/ .

# 配置USB摄像头
export CAM_TYPE=usb

# 启动launch文件
ros2 launch parking_perception parking_perception.launch.py

使用单张回灌图片

# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/parking_perception/config/ .

# 配置回灌图片
export CAM_TYPE=fb

# 启动launch文件
ros2 launch parking_perception parking_perception.launch.py

X86 平台

使用单张回灌图片

# 配置tros.b环境
source /opt/tros/setup.bash

# 从tros的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/parking_perception/config/ .

# 配置回灌图片
export CAM_TYPE=fb

# 启动launch文件
ros2 launch parking_perception parking_perception.launch.py

结果分析

使用 mipi 摄像头发布图片

package 初始化后,在运行终端输出如下信息:

[INFO] [launch]: All log files can be found below /root/.ros/log/2022-08-02-06-46-55-605266-ubuntu-3669
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [mipi_cam-1]: process started with pid [3671]
[INFO] [hobot_codec_republish-2]: process started with pid [3673]
[INFO] [parking_perception-3]: process started with pid [3675]
[INFO] [websocket-4]: process started with pid [3677]
[parking_perception-3] [WARN] [1659394017.194211788] [parking_perception]: Parameter:
[parking_perception-3] shared_men:1
[parking_perception-3] is_sync_mode_: 1
[parking_perception-3] model_file_name_: config/parking_perception_640x320.bin
[parking_perception-3] feed_image:
[parking_perception-3] [INFO] [1659394017.194695288] [dnn]: Node init.
[parking_perception-3] [INFO] [1659394017.194784038] [parking_perception]: Set node para.
[parking_perception-3] [INFO] [1659394017.194845413] [dnn]: Model init.
[parking_perception-3] [BPU_PLAT]BPU Platform Version(1.3.1)!
[parking_perception-3] [C][3675][08-02][06:46:57:202][configuration.cpp:49][EasyDNN]EasyDNN version: 0.4.11
[parking_perception-3] [HBRT] set log level as 0. version = 3.14.5
[parking_perception-3] [DNN] Runtime version = 1.9.7_(3.14.5 HBRT)
[parking_perception-3] [INFO] [1659394017.247423580] [dnn]: The model input 0 width is 640 and height is 320
[parking_perception-3] [INFO] [1659394017.247664997] [dnn]: Task init.
[parking_perception-3] [INFO] [1659394017.255848788] [dnn]: Set task_num [2]
[parking_perception-3] [INFO] [1659394017.255999663] [parking_perception]: The model input width is 640 and height is 320
[parking_perception-3] [INFO] [1659394017.263431163] [parking_perception]: msg_pub_topic_name: ai_msg_parking_perception
[parking_perception-3] [INFO] [1659394017.263554788] [parking_perception]: Detect images that use subscriptions
[parking_perception-3] [WARN] [1659394017.263597997] [parking_perception]: Create hbmem_subscription with topic_name: /hbmem_img
[parking_perception-3] [WARN] [1659394017.267204163] [parking_perception]: start success!!!
[parking_perception-3] [WARN] [1662036456.219133588] [parking_perception]: input fps: 29.73, out fps: 29.79
[parking_perception-3] [WARN] [1662036457.228303881] [parking_perception]: input fps: 29.73, out fps: 29.73
[parking_perception-3] [WARN] [1662036458.237841548] [parking_perception]: input fps: 29.73, out fps: 29.73

使用单张回灌图片

示例中读取本地图片推理的结果会渲染到图片上,在 PC 端的浏览器输入 http://IP:8000 即可查看图像和算法渲染效果(IP 为 RDK 的 IP 地址),打开界面右上角设置。

车位感知 Web 展示界面右上角设置入口示意

选中”全图分割“选项,可以显示渲染效果。

Web 端勾选“全图分割”选项以显示分割渲染的操作示意

可视化结果可以看到,室外场景下停车区域与行车区域有效分割开,区分了停车车道线和行车车道线,同时目标检测任务定位到远处车辆。

室外场景停车区、行车区分割及远处车辆检测的可视化结果

"dump_render_img"设置为"1"时,渲染效果保存在当前路径的 result 目录下。