for the algorithm is to reliably detect and select the
one unoccupied parking spot, see figure 1 and 2.
Figure 1 illustrates an autonomous vehicle
maneuvering through a parking challenge consisting
of multiple slots. Each parking slot is framed by 0.15-
meter-wide blue lines with white borders (𝑝
) along
the sides and the back, defining a 2.0-meter-wide (𝑝
)
and 4.0-meter-deep ( 𝑝
) rectangular parking area.
The parking goal position is represented by the point
pt, and its desired orientation is indicated by the
vector 𝑝
(marked with an orange arrow and
displayed two times for clarity). An example
trajectory to a free parking space is shown with a
dashed yellow curve, while trajectory to an occupied
parking space is marked with brown dashed curves.
The vehicle is equipped with a body-fixed local
coordinate system, denoted as ( 𝑙
,
𝑙
), while the
global frame is labelled (𝑔
,
𝑔
). Accurate alignment
with the target pose pα is critical for successful
parking. The 𝑏
refers to the base_link frame, and the
variable distance represents the Euclidean distance
between 𝑏
and the point 𝑝
.
Figure 2: actual picture of the challenge.
2 THE ALGORITHM
The algorithm operates as follows. First, a trained
neural network identifies a bounding box in the image
data, which it predicts—based on a certain confidence
value—to represent a free parking space. The
algorithm is designed in such a way that, even if
multiple parking spaces are detected, it only publishes
the corner points of the bounding box with the highest
confidence on a ROS topic. This information is then
used for further processing.
Initially, these four corner points are only
available as 2D pixel coordinates. Through a
deprojection process, the algorithm converts them
into 3D coordinates and then transform them into the
appropriate reference frame using the corresponding
transforms.
Until reliable LiDAR data becomes available—as
described in the following sections—The car initiate
motion towards the estimated center of the parking
slot based solely on the bounding box identified in the
camera image.
After the corner points are transformed into the
appropriate reference frame, the LiDAR point cloud
is analysed within the defined region. Specifically,
the algorithm focuses on the ambient and intensity
values associated with the points. Based on the
observations, there is a significant difference in
ambient response between bare asphalt/concrete and
painted surfaces, with the latter typically producing
sharp peaks in the ambient signal (Jing Gong et
al.,2024).
Our objective is to identify which points in the
cloud correspond to the painted parking area. In
earlier versions of the software, this was attempted by
comparing each point’s ambient value to a global
average. In the current approach, however, the
algorithm relies solely on detecting significant peaks
in ambient values, as they have proven to be a more
reliable indicator of painted regions.
In the context of parking spot detection and the
actual parking maneuver, our algorithmic objective is
to generate a pose-type ROS topic. The position
component of this pose is defined such that its lateral
coordinate aligns with the center of the parking spot,
while its longitudinal coordinate is aligned with the
starting edge of the painted boundary lines. This
position can optionally be adjusted in the longitudinal
direction depending on how deep the vehicle is
intended to enter the parking space (Weikang et
al.,2024).
The more critical aspect, however, is the
orientation of this pose. It is essential that the vehicle
aligns itself straight within the parking area, avoiding
any skewed positioning. This requirement arises
because the camera-based parking space detector
only returns a 2D bounding box with width and
height, but without any reliable orientation
information. Therefore, the detection is augmented
with LiDAR-based analysis to derive a pose that
includes an accurate angular alignment relative to the
actual orientation of the painted parking lines (Hata
and Wolt, 2014)
The construction of the final pose proceeds as
follows: within the filtered bounding box, the LiDAR
point cloud is traversed ring by ring (i.e., by
increasing radial distance), and points exhibiting a
significant ambient value peak are collected. Ideally,
four such points can be detected per ring. Pairs of
points lying within 15 cm of each other — a threshold
chosen based on the official width specification of the