• This repository has been archived on 27/Jun/2023
  • Stars
    star
    177
  • Rank 210,221 (Top 5 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created about 2 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open source visual localization for self-driving vehicles

This repository is archived

YabLoc was merged into Autoware on June 22, 2023. For more details, please refer to this PR. Future development will be conducted on autoware.universe.

If you would like to perform a standalone verification of YabLoc, the "Quick Start Demo" provided in this README is useful. If you are interested in running YabLoc as a localization method in Autoware, the sample data provided in this PR can be handy.

YabLoc

Overview

YabLoc is vision-baed localization with vector map. https://youtu.be/Eaf6r_BNFfk

Yabloc has been developed as a new localization stack for Autoware.

thumbnail

Installation

Prerequisite

supporting Ubuntu 22.04 + ROS2 humble now.

NOTE: Currently, this software is assumed to be built in a separate workspace in order not to contaminate the autoware workspace. Someday this will be located in the workspace where Autoware blongs. The following submodules will be removed at the time.

Branches

  • main is a branch to work with minimal dependence on autoware.
    • If you want to try the YabLoc demo, please use main branch.

Submodules

How to build

mkdir yabloc_ws/src -p
cd yabloc_ws
git clone [email protected]:tier4/YabLoc.git src/YabLoc --recursive
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash
The author often use this build command
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache --continue-on-error
  • (optional) ccache (--cmake-args) -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache

  • (optional) clang-tidy (--cmake-args) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

  • (optional) test (--cmake-args) -DBUILD_TESTING=ON

Quick Start Demo

how_to_launch_with_rosbag

# terminal 1
source install/setup.bash
ros2 launch yabloc_launch sample.launch.xml

# terminal 2
source install/setup.bash
ros2 launch yabloc_launch rviz.launch.xml

# terminal 3
source install/setup.bash
ros2 bag play awsim_yabloc_rosbag_sample_0.db3 -s sqlite3

If YabLoc runs successfully, you will see a screen like the following.

How to set initial pose

1. When YabLoc runs standalone:=true(default) (without Autoware's pose_initializer)

  1. 2D Pose Estimate in Rviz

You can inidcate x, y and yaw manually in rviz.

  1. GNSS Doppler initialization

If doppler (ublox_msgs/msg/navpvt) is available and the vehicle moves enough fast, YabLoc will estiamte the initial pose automatically.

2. When Yabloc runs standalone:=false (through Autoware's pose_initializer)

UNDER CONSTRUCTION

Architecture

node_diagram

click to more detail

node_diagram

Input topics

from sesnors

topic name msg type description
/sensing/imu/tamagawa/imu_raw sensor_msgs/msg/Imu
/sensing/camera/traffic_light/image_raw/compressed sensor_msgs/msg/CompressedImage
/sensing/camera/traffic_light/camera_info sensor_msgs/msg/CameraInfo
/sensing/gnss/ublox/navpvt ublox_msgs/msg/NavPVT If you use ublox
/sensing/gnss/septentrio/poscovgeodetic septentrio_gnss_driver_msgs/msg/PosCovGeodetic If you use Septentrio
/vehicle/status/velocity_status autoware_auto_vehicle_msgs/msg/VelocityReport

from autoware

topic name msg type description
/tf_static tf2_msgs/msg/TFMessage published from sensor_kit
/map/vector_map autoware_auto_mapping_msgs/msg/HADMapBin published from /map/lanelet2_map_loader

about tf_static

click to open

Some nodes requires /tf_static from /base_link to the frame_id of /sensing/camera/traffic_light/image_raw/compressed (e.g. /traffic_light_left_camera/camera_optical_link). You can verify that the tf_static is correct with the following command.

ros2 run tf2_ros tf2_echo base_link traffic_light_left_camera/camera_optical_link

If the wrong /tf_static are broadcasted due to using a prototype vehicle, not having accurate calibration data, or some other unavoidable reason, it is useful to give the frame_id in override_camera_frame_id. If you give it a non-empty string, /imgproc/undistort_node will rewrite the frame_id in camera_info. For example, you can give a different tf_static as follows.

ros2 launch yabloc_launch sample_launch.xml override_camera_frame_id:=fake_camera_optical_link
ros2 run tf2_ros static_transform_publisher \
  --frame-id base_link \
  --child-frame-id fake_camera_optical_link \
  --roll -1.57 \
  --yaw -1.570

Output topics about pose

topic name msg type description
/localicazation/pf/pose geometry_msgs/msg/PoseStamped estimated pose
/localicazation/pose_estimator/pose_with_covariance geometry_msgs/msg/PoseStamped estimated pose with covariance

Output topics for visualization

This project contains original rviz plugins. rviz2_overlay_plugins

rviz

index topic name description
1 /localicazation/imgproc/lanelet2_overlay_image Projection of lanelet2 (yellow lines) onto image based on estimated pose. If they match well with the actual road markings, it means that the localization performs well.
2 /localicazation/imgproc/segmented_image result of graph-based segmetation. yellow area is identified as the road surface.
3 /localicazation/pf/cost_map_image cost map generated from lanelet2.
4 /localicazation/imgproc/image_with_line_segments detected line segments
5 /localicazation/map/ground_status ground height and tilt estimatation status
6 /localicazation/twist/kalman/status twist estimation status
7 /localicazation/pf/predicted_particle_marker particle distribution of particle fitler (red means a probable candidate)
8 /localicazation/pf/gnss/range_marker particle weight distribution by GNSS
9 /localicazation/pf/scored_cloud 3D projected line segments. the color means the how match they are

License

YabLoc is licensed under Apache License 2.0.

More Repositories

1

AutowareArchitectureProposal.proj

This is the source code of the feasibility study for Autoware architecture proposal.
Shell
650
star
2

AWSIM

Open source simulator for self-driving vehicles
C#
460
star
3

AutowareArchitectureProposal.iv

AutowareArchitectureProposal is meta repository of this repository.
C++
138
star
4

scenario_simulator_v2

A scenario-based simulation framework for Autoware
C++
109
star
5

safe_drive

safe_drive: Formally Specified Rust Bindings for ROS2
Rust
93
star
6

CalibrationTools

C++
90
star
7

AutomanTools

AutomanTools is an open-source software for self-driving AI.
JavaScript
62
star
8

caret

CARET (Chain-Aware ROS Evaluation Tool) is one of performance analysis tools dedicated with ROS 2 applications
Shell
59
star
9

driving_log_replayer

an evaluation package for autoware
Python
47
star
10

ros2bag_extensions

Extension commands for rosbag in ROS 2
Python
43
star
11

nebula

C++
37
star
12

ros2_v4l2_camera

Forked from https://gitlab.com/boldhearts/ros2_v4l2_camera
C++
31
star
13

ars408_driver

C++
29
star
14

autoware_perception_evaluation

Python
22
star
15

road_lane_network_graph_open

Code to reproduce results in the paper "Learning a Model for Inferring a Spatial Road Lane Network Graph using Self-Supervision" (ITSC 2021)
Python
19
star
16

heaphook

Replace all the dynamic heap allocation functions by LD_PRELOAD.
C++
18
star
17

tier4_perception_dataset

Python
18
star
18

tier4_autoware_msgs

TIER IV's extension messages for Autoware
CMake
17
star
19

ota-client

OTA client
Python
15
star
20

autoware_auto_msgs

Forked from https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs
CMake
14
star
21

multi_data_monitor

The rviz2 plugin to monitor topics
C++
14
star
22

roslibjs-foxglove

An implementation of roslibjs's interfaces by using Foxglove WebSocket Protocol.
TypeScript
13
star
23

caret_doc

Documents and materials for CARET
13
star
24

lidar_feature_extraction

Feature extraction from LiDAR point cloud
C++
13
star
25

autoware_launch-old

Moved to https://github.com/tier4/autoware_launch.
Python
12
star
26

edge-auto-jetson

Shell
11
star
27

debug_tools

common debug tools
Python
11
star
28

icp_rust

ICP implementation in Rust
Rust
11
star
29

pre-commit-hooks-ros

ROS-related hooks for pre-commit
Python
10
star
30

tier4_automotive_hdr_camera

This repository contains the device driver for the TIER IV Automotive HDR Cameras
Python
10
star
31

safe_drive_tutorial

Rust
8
star
32

ros2-project-template

Project template for ROS2
8
star
33

aichallenge_bringup

Python
7
star
34

ydlidar_driver

Rust
7
star
35

lidar_instance_segmentation_tvm

C++
7
star
36

autoware-spell-check-dict

A word dictionary for spell checking
Python
7
star
37

caret_trace

Library to add tracepoints for CARET
C++
7
star
38

planning_sim_launcher.iv.universe

Python
6
star
39

TILDE

C++
6
star
40

sensor_trigger

ROS node for triggering cameras using GPIO on Jetson (targeting ROSCubeX, but easily adaptable to other platforms)
C++
6
star
41

autoware-online-document

Shell
6
star
42

fake_sensor_tools

Simulate sensor outputs without real sensor.
C++
6
star
43

caret_report

Scripts to create analysis report using CARET trace data
Python
6
star
44

tensorrt_yolox

C++
5
star
45

ros2msg_to_rs

Rust
5
star
46

lgsvl_simulator_launcher

Python
5
star
47

ros-metrics-reporter

Code quality tracking tool for ROS repositories
Python
5
star
48

osqp_vendor

Vendor package for OSQP
CMake
5
star
49

autoware_web_runtime_manager

JavaScript
4
star
50

pacmod_interface

C++
4
star
51

ds4

Python
4
star
52

safe_drive_msg

Rust
4
star
53

UniCom

Pub/Sub Library for Unity.
C#
4
star
54

rainfall_modeling_open

Code to reproduce results in the paper 'Probabilistic Rainfall Estimation from Automotive Lidar'
Python
4
star
55

aip_launcher

Launch files for TIER IV's sensor kit
Python
4
star
56

hash_library_vendor

CMake
3
star
57

lexus_description.iv.universe

CMake
3
star
58

x-go

TIER IV specific go-libraries
Go
3
star
59

vehicle_voice_alert_system

This is used for give voice alert outside the vehicle
Python
3
star
60

lane_width_calculator

Calculate geometrical relationship between vehicle and lanelet width. Mainly used for if the vehicle is inside the lanelet.
C++
3
star
61

velodyne_simulator

Forked from https://bitbucket.org/DataspeedInc/velodyne_simulator/src/master/
C++
3
star
62

ros2caret

Python
3
star
63

tensorrt_common

C++
3
star
64

fake_obstacle_perception

fake obstacle maker / publisher / auto publisher
C++
3
star
65

topic_size_analyzer

rosbag2, python3
Python
3
star
66

hailort-yoloXP

C++
3
star
67

radius_2d_outlier_removal_filter

Point cloud filter that excludes points which don't have minimum number of neighbors in cylinder.
C++
3
star
68

trt-lightnet

C++
3
star
69

tier4_ad_api_adaptor

C++
2
star
70

initial_pose_publisher

The node that publish initial pose by rosparam when it launched.
C++
2
star
71

scenario-simulator-v2-behavior-plugin-ci-action

JavaScript
2
star
72

sensor_description.iv.universe

CMake
2
star
73

bag_topic_renamer

rosbag, convert
CMake
2
star
74

cudnn_cmake_module

CMake
2
star
75

pc_resource_stat

Python
2
star
76

papi

Forked repositofy for PAPI (Performance Application Programming Interface)
C
2
star
77

idl_parser

Rust
2
star
78

bag2csv

Python
2
star
79

scenario_simulator_v2_metrics_dashboard

2
star
80

zmqpp_vendor

vendor package for https://github.com/zeromq/zmqpp
CMake
2
star
81

caret_analyze

Scripts for analyzing trace with CARET
Python
2
star
82

planning_simulator.iv.universe

C++
2
star
83

scenario_runner.iv.universe

C++
2
star
84

trt-yoloXP

TensorRT integration of YOLOXP with detections and segmentations
C++
2
star
85

event_capture

rviz plugin for mouse event capture
C++
1
star
86

lexus_description.iv

lexus_description for autoware.iv
CMake
1
star
87

feature-ponitcloud-builder

Preprocesses a PCD file and generates a map for feature-based localization
C++
1
star
88

caret_analyze_cpp_impl

C++
1
star
89

tunable_static_tf_broadcaster

tf2, dynamic_reconfigure
C++
1
star
90

specialized_intra_process_comm

Specialized intra-process communication manner to unify data types of processing and communication
C++
1
star
91

sensor_component_description

Python
1
star
92

system_software_team_hp

Python
1
star
93

velodyne_monitor

Python
1
star
94

pcd2kml

Python
1
star
95

boot_shutdown_tools

C++
1
star
96

arm-dev-summit-2020

Hands-on exercises for the Autoware workshop at Arm DevSummit 2020
1
star
97

spinnaker

C++
1
star
98

gnss_poser

C++
1
star
99

autoware-apt-testing

1
star
100

hailort-LightNet

C++
1
star