/urban_road_filter

Real-time LIDAR-based Urban Road and Sidewalk detection for Autonomous Vehicles 🚗

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

urban_road_filter: a real-time LIDAR-based urban road and sidewalk detection algorithm for autonomous vehicles

Dependency

  • ROS (tested with Kinetic and Melodic)
  • PCL

Install

Use the following commands to download and compile the package.

cd ~/catkin_ws/src
git clone https://github.com/jkk-research/urban_road_filter
catkin build urban_road_filter

Getting started

Issue the following commands to start roscore, download and play sample data, and start the algorithm with visualization. You can also watch this as a youtube tutorial.

In a new terminal start roscore:

roscore

In a new terminal go to your bag folder (e.g. ~/Downloads):

cd ~/Downloads

Download a sample rosbag (~3,3 GB):

wget https://laesze-my.sharepoint.com/:u:/g/personal/herno_o365_sze_hu/EYl_ahy5pgBBhNHt5ZkiBikBoy_j_x95E96rDtTsxueB_A?download=1 -O leaf-2021-04-23-campus.bag

Play rosbag:

rosbag play -l ~/Downloads/leaf-2021-04-23-campus.bag

In a new terminal start the urban_road_filter node, rviz and rqt_reconfigure with roslaunch:

roslaunch urban_road_filter demo1.launch

Cite & paper

If you use any of this code please consider citing the paper:

@Article{roadfilt2022horv,
    title = {Real-Time LIDAR-Based Urban Road and Sidewalk Detection for Autonomous Vehicles},
    author = {Horváth, Ernő and Pozna, Claudiu and Unger, Miklós},
    journal = {Sensors},
    volume = {22},
    year = {2022},
    number = {1},
    url = {https://www.mdpi.com/1424-8220/22/1/194},
    issn = {1424-8220},
    doi = {10.3390/s22010194}
}

Related solutions

Videos and images

ROS publications / subscriptions

flowchart LR

P[points] -->|sensor_msgs/PointCloud2| U(urban_road_filt)
U --> |sensor_msgs/PointCloud2| A[curb]
U --> |sensor_msgs/PointCloud2| B[road] 
U --> |sensor_msgs/PointCloud2| C[road_probably]
U --> |sensor_msgs/PointCloud2| D[roi]
U --> |visualization_msgs/MarkerArray| E[road_marker]

Loading