Skip to content

Commit 98ef534

Browse files
KYabuuchikminodacomocpre-commit-ci[bot]isamu-takagi
authored
feat(yabloc): add camera and vector map localization (#3946)
* adopt scane_case to undistort, segment_filter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to ground_server, ll2_decomposer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to twist_converter, twist_estimator Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to validation packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case tomodularized_particle_filter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to gnss_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to camera_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to antishadow_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * adopt scane_case to particle_initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * organize launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add twist_visualizer to validate odometry performance Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use SE3::exp() to predict particles & modify linear noise model Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * stop to use LL2 to rectify initialpose2d Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix redundant computation in segment_accumulator Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * improve gnss_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix segment_accumulator's bug Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add doppler_converter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add xx2.launch.xml Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add hsv_extractor Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * pickup other regions which have same color histogram Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use additional region to filt line-segments Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * improve graph-segmentation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove `truncate_pixel_threshold` Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor graph_segmentator & segment_filter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add mahalanobis_distance_threshold in GNSS particle corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add extract_line_segments.hpp Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use pcl::transformCloudWithNormals instead of transform_cloud Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * filt accumulating segments by LL2 Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move herarchical_cost_map to common Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * apply positive feedback for accumulation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move transform_linesegments() to common pkg Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use all projected lines for camera corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * evaluate iffy linesegments Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * complete to unify ll2-assisted lsd clasification Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add abs_cos2() which is more strict direction constraint Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix orientation initialization bug Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * publish doppler direction Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * TMP: add disable/enable switch for camera corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * implement doppler orientation correction but it's disabled by default Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * speed up camera corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update ros params Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * implement kalman filter for ground tilt estimation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * continuous height estimation works well? Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * estimate height cotiniously Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use only linesegments which are at same height Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add static_gyro_bias parameter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix bug about overlay varidation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * increse ll2 height marging in cost map generation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add static_gyro_bias in twist.launch.xml Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * load pcdless_init_area from ll2 Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add specified initialization area Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add corrector_manager node to disable/enable camera_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * call service to disable camer_corrector from manager Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * load corrector disable area Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * overlay even if pose is not estiamted Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * publish camera corrector's status as string Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add set_booL_panel for camera_corrector enable/disable Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * load bounding box from lanelet2 Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * draw bounding box on cost map Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove at2,at1 from cost map Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use cost_map::at() instread pf at2() Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move cost map library from common to camera corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use logit for particle weighting but it does not work well Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * prob_to_logit() requires non-intuitive parameters Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * goodbye stupid parameters (max_raw_score & score_offset) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * publish two scored pointclouds as debug Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * can handle unmapped areas Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove obsolete packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * Update README.md * add image of how_to_launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add node diagram in readme Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add rviz_description.png in README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * subscribe pose_with_cov & disconnect base_link <-> particle_pose Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove segment_accumulator & launch ekf_localizer from this project Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add gnss_ekf_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add camera_ekf_corrector package Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * subscribe ekf prediction & synch pose data Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * WIP: ready to implement UKF? Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * estimate weighted averaging as pose_estimator Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * basic algorithm is implemented but it does not work proparly Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * apply after_cov_gain_ Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * ekf corrector works a little bit appropriately Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * increase twist covariance for ekf Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * test probability theory Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * updat prob.py Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * implement de-bayesing but it loooks ugly Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove obsolete parameters Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * skip measurement publishing if travel distance is so short Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use constant covariance because i dont understand what is correct Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add submodule sample_vehicle_launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * TMP but it works Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add ekf_trigger in particle_initializer.hpp Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * publish gnss markers & camera_est pubishes constant cov Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * back to pcd-less only launcher Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add bayes_util package Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * apply de-bayesing for camera_ekf Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * some launch file update Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * organize launch files. we can choice mode from ekf/pekf/pf Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * organize particle_initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add swap_mode_adaptor WIP Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use latest ekf in autoware & sample_vehicle Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix bug of swap_adalptor Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix FIX & FLOAT converter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix septentrio doppler converter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move ekf packages to ekf directory Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * ignore corrector_manager Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add standalone arg in launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update semseg_node Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add camera_pose_initializer pkg Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * subscribe camera_info&tf and prepare semantic projection Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * project semantic image Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * create vector map image from ll2 Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * create lane image from vector map Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * search the most match angle by non-zero pixels Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * camera based pose_initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move ekf packages into unstable Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move ekf theory debugger Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add tier4_autoware_msgs as submodule Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move pose_initializer into initializer dir Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add semse_msgs pkg Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * separate marker pub function Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * separate projection functions Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add semseg_srv client Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move sem-seg directory Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * camera pose initilizer works successfully Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rectify covariance along the orientation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * improve initialization parameters Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * take into account covariance of request Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use lanelet direciton to compute init pose scores Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * semseg download model automatically Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove sample_vehicle_launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add autoware_msgs Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove obsolete launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add standalone mode for direct initialization Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix fix_to_pose Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update rviz config Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove lidar_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove Sophus from sunbmodule Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rename submodule directory Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update README and some sample images Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix override_camera_frame_id bahaviors Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix some bugs (#4) Signed-off-by: kminoda <koji.minoda@tier4.jp> * fix: use initialpose from Rviz (#6) * use initialpose from Rviz to init Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add description about how-to-set-initialpose Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * misc: add license (#7) * WIP: add license description Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add license description Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add description about license in README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add quick start demo (#8) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor(launch) remove & update obsolete launch files (#9) * delete obsolete launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update documents Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * docs(readme): update architecture image (#10) * replace architecture image in README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update some images Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor(pcdless_launc/scripts): remove unnecessary scripts (#11) * remove not useful scripts Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rename scripts & add descriptions Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * little change Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove odaiba.rviz Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * grammer fix Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix(pcdless_launch): fix a build bug Signed-off-by: kminoda <koji.minoda@tier4.jp> * fix(twist_estimator): use velocity_report by default Signed-off-by: kminoda <koji.minoda@tier4.jp> * fix bug Signed-off-by: kminoda <koji.minoda@tier4.jp> * debugged, now works Signed-off-by: kminoda <koji.minoda@tier4.jp> * update sample rosbag link (#14) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature(graph_segment, gnss_particle_corrector): make some features switchable (#17) * make additional-graph-segment-pickup disablable Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * enlarge gnss_mahalanobis_distance_threshold in expressway.launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix: minor fix for multi camera support (#18) * fix: minor fix for multi camera support Signed-off-by: kminoda <koji.minoda@tier4.jp> * update Signed-off-by: kminoda <koji.minoda@tier4.jp> * update Signed-off-by: kminoda <koji.minoda@tier4.jp> * fix typo Signed-off-by: kminoda <koji.minoda@tier4.jp> --------- Signed-off-by: kminoda <koji.minoda@tier4.jp> * refactor(retroactive_resampler): more readable (#19) * make Hisotry class Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use boost:adaptors::indexed() Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add many comment in resampling() Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * does not use ConstSharedPtr Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rename interface of resampler Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * circular_buffer is unnecessary Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor(mpf::predictor) resampling interval control in out of resampler (#20) * resampling interval management should be done out of resample() Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * resampler class throw exeption rather than optional Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * split files for resampling_history Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * split files for experimental/suspention_adaptor Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor(mpf::predictor): just refactoring (#21) * remove obsolete functions Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove test of predictor Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove remapping in pf.launch.xml for suspension_adapator Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add some comments Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix(twist_estimator): remove stop filter for velocity (#23) Signed-off-by: kminoda <koji.minoda@tier4.jp> * feat(pcdless_launch): add multi camera launcher (#22) * feat(pcdless_launch): add multi camera launcher Signed-off-by: kminoda <koji.minoda@tier4.jp> * minor fix Signed-off-by: kminoda <koji.minoda@tier4.jp> --------- Signed-off-by: kminoda <koji.minoda@tier4.jp> * refactor(CMakeListx.txt): just refactoring (#24) * refactor imgproc/*/CMakeListx.txt Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor initializer/*/CMakeListx.txt & add gnss_pose_initializer pkg Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rename some files in twist/ & refactor pf/*/cmakelist Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * refactor validation/*/CMakeListx.txt Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix some obsolete executor name Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix: rename lsd variables and files (#26) Signed-off-by: kminoda <koji.minoda@tier4.jp> * misc: reame pcdless to yabloc (#25) * rename pcdless to yabloc Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix conflict miss Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * visualize path (#28) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * docs: update readme about particle filter (#30) * update mpf/README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update gnss_corrector/README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update camera_corrector/README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feat(segment_filter): publish images with lines and refactor (#29) * feat(segment_filter): publish images with lines Signed-off-by: kminoda <koji.minoda@tier4.jp> * update validation Signed-off-by: kminoda <koji.minoda@tier4.jp> * update imgproc (reverted) Signed-off-by: kminoda <koji.minoda@tier4.jp> * large change inclding refactoring Signed-off-by: kminoda <koji.minoda@tier4.jp> * major update Signed-off-by: kminoda <koji.minoda@tier4.jp> * revert rviz config Signed-off-by: kminoda <koji.minoda@tier4.jp> * minor fix in name Signed-off-by: kminoda <koji.minoda@tier4.jp> * add validation option Signed-off-by: kminoda <koji.minoda@tier4.jp> * update architecture svg Signed-off-by: kminoda <koji.minoda@tier4.jp> * rename validation.launch to overlay.launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * no throw runtime_error (unintentionaly applying format) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: kminoda <koji.minoda@tier4.jp> Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Co-authored-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * catch runtime_error when particle id is invalid (#31) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * return if info is nullopt (#32) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * pose_buffer is sometimes empty (#33) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use_yaw_of_initialpose (#34) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feat(interface): remove incompatible interface (#35) * not use ublox_msg when run as autoware Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove twist/kalman/twist & use twist_estimator/twist_with_covariance Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update particle_array stamp even if the time stamp seems wrong Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix: suppress info/warn_stream (#37) * does not stream undistortion time Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * improve warn stream when skip particle weighting Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * surpress frequency of warnings during synchronized particle searching Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix camera_pose_initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * /switch must not be nice name (#39) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * misc(readme): update readme (#41) * add youtube link and change thumbnail Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * improve input/output topics Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * quick start demo screen image Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add abstruct architecture and detail architecture Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * docs(rosdep): fix package.xml to ensure build success (#44) * fix package.xml to success build Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add 'rosdep install' in how-to-build Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add geographiclib in package.xml (#46) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix path search error in build stage (#45) * fix path search error in build stage * fix tier4/YabLoc#45 (comment) * Feature/remove submodule (#47) * remove submodules Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove doppler converter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature: change node namespace to /localization/yabloc/** from /localization/** (#48) * change node namespace Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update namespace for autoware-mode Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update namespace in multi_camera.launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * removed unstable packages (#49) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature: add *.param.yaml to manage parameters (#50) * make *.param.yaml in imgproc packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * make *.param.yaml in initializer packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * make *.param.yaml in map packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * make *.param.yaml in pf packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * make *.param.yaml in twist packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix expressway parameter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix override_frame_id Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove default parameters Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix some remaining invalida parameters Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * does not estimate twist (#51) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feat(particle_initializer): merge particle_initializer into mpf (#52) * feat(particle_initializer): merge particle_initializer to modulalized_particle_filter Signed-off-by: kminoda <koji.minoda@tier4.jp> * remove particle_initializer * remove debug message Signed-off-by: kminoda <koji.minoda@tier4.jp> * remove related parts Signed-off-by: kminoda <koji.minoda@tier4.jp> * update readme Signed-off-by: kminoda <koji.minoda@tier4.jp> * rename publishing topic Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: kminoda <koji.minoda@tier4.jp> Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Co-authored-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix: remove ll2_transition_area (#54) Signed-off-by: kminoda <koji.minoda@tier4.jp> * feature(initializer): combine some initializer packages (#56) * combine some package about initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * yabloc_pose_initializer works well Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove old initializer packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * semseg node can launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix bug Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * revert initializer mode Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature(imgproc): reudce imgproc packages (#57) * combine some imgproc packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * combine overlay monitors into imgproc Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature(validation): remove validation packages (#58) * remove validation packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove path visualization Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature(pf): combine some packages related to particle filter (#59) * create yabloc_particle_filter Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * combine gnss_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * combine ll2_cost_map Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * combine camera_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * split README & remove obsolete scripts Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix config path of multi_camera mode Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * feature: combine map and twist packages (#60) * removed some twist nodes & rename remains to yabloc_twist Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fix launch files for yabloc_twist Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move map packages to yabloc_common Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * WIP: I think its impossible Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * Revert "WIP: I think its impossible" This reverts commit 49da507bbf9abe8fcebed4d4df44ea5f4075f6d1. * remove map packages & fix some launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * removed obsolete packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove obsolete dot files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use tier4_loc_launch instead of yabloc_loc_launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * move launch files to each packages Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove yabloc_localization_launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * remove yabloc_launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * modify yabloc/README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update yabloc_common/README.md Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update yabloc_imgproc README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update yabloc_particle_filter/README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update yabloc_pose_initializer/README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * update README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use native from_bin_msg Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use ifndef instead of pragma once in yabloc_common Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use ifndef instead of pragma once in yabloc_imgproc & yabloc_pf Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * use ifndef instead of pragma once in yabloc_pose_initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * use autoware_cmake & suppress build warning Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * repalce yabloc::Timer with tier4_autoware_utils::StopWatch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * replace 1.414 with std::sqrt(2) Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * removed redundant ament_cmake_auto Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * removed yabloc_common/timer.hpp Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * replaced low_pass_filter with autoware's lowpass_filter_1d Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * Squashed commit of the following: Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> commit cb08e290cca5c00315a58a973ec068e559c9e0a9 Author: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Date: Tue Jun 13 14:30:09 2023 +0900 removed ublox_msgs in gnss_particle_corrector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> commit c158133f184a43914ec5f929645a7869ef8d03be Author: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Date: Tue Jun 13 14:24:19 2023 +0900 removed obsolete yabloc_multi_camera.launch Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> commit 10f578945dc257ece936ede097544bf008e5f48d Author: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Date: Tue Jun 13 14:22:14 2023 +0900 removed ublox_msgs in yabloc_pose_initializer Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * removed fix2mgrs & ublox_stamp Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * added ~/ at the top of topic name Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * removed use_sim_time in yabloc launch files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * add architecture diagram in README Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rename lsd_node to line_segment_detector Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * Update localization/yabloc/README.md fix typo Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com> * removed obsolete debug code in similar_area_searcher Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * removed suspension_adaptor which manages lifecycle of particle predictor Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * renamed semseg to SemanticSegmentation Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * fixed README.md to solve markdownlint Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * WIP: reflected cpplint's suggestion Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * reflected cpplint's suggestion Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * rename AbstParaticleFilter in config files Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fixed typo Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * used autoware_lint_common Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * fixed miss git add Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * style(pre-commit): autofix * replaced lanelet_util by lanelet2_extension Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * replaced fast_math by tie4_autoware_utils Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * sort package.xml Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * renamed yabloc_imgproc with yabloc_image_processing Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * reflected some review comments Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * resolved some TODO Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * prioritize NDT if both NDT and YabLoc initializer enabled Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> * changed localization_mode option names Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> --------- Signed-off-by: Kento Yabuuchi <kento.yabuuchi.2@tier4.jp> Signed-off-by: kminoda <koji.minoda@tier4.jp> Co-authored-by: kminoda <44218668+kminoda@users.noreply.github.com> Co-authored-by: kminoda <koji.minoda@tier4.jp> Co-authored-by: Akihiro Komori <akihiro.komori@unity3d.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com>
1 parent 6dc708c commit 98ef534

File tree

139 files changed

+10406
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

139 files changed

+10406
-1
lines changed

launch/tier4_localization_launch/launch/localization.launch.xml

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0"?>
22
<launch>
33
<!-- Parameter files -->
4+
<arg name="mode"/>
45
<arg name="crop_box_filter_measurement_range_param_path"/>
56
<arg name="voxel_grid_downsample_filter_param_path"/>
67
<arg name="random_downsample_filter_param_path"/>
@@ -27,10 +28,14 @@
2728
</include>
2829
</group>
2930
<!-- pose_estimator module -->
30-
<group>
31+
<group if="$(eval '&quot;$(var mode)&quot;==&quot;lidar&quot;')">
3132
<push-ros-namespace namespace="pose_estimator"/>
3233
<include file="$(find-pkg-share tier4_localization_launch)/launch/pose_estimator/pose_estimator.launch.xml"/>
3334
</group>
35+
<group if="$(eval '&quot;$(var mode)&quot;==&quot;camera&quot;')">
36+
<push-ros-namespace namespace="yabloc"/>
37+
<include file="$(find-pkg-share tier4_localization_launch)/launch/pose_estimator/yabloc.launch.xml"/>
38+
</group>
3439
<!-- twist_estimator module -->
3540
<group>
3641
<push-ros-namespace namespace="twist_estimator"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0"?>
2+
<launch>
3+
<!-- source camera image topics -->
4+
<arg name="src_image" default="/sensing/camera/traffic_light/image_raw/compressed"/>
5+
<arg name="src_info" default="/sensing/camera/traffic_light/camera_info"/>
6+
7+
<!-- default parameter path -->
8+
<!-- initializer -->
9+
<arg name="camera_pose_initializer_param_path" default="$(find-pkg-share yabloc_pose_initializer)/config/camera_pose_initializer.param.yaml"/>
10+
<!-- particle filter-->
11+
<arg name="camera_particle_corrector_param_path" default="$(find-pkg-share yabloc_particle_filter)/config/camera_particle_corrector.param.yaml"/>
12+
<arg name="gnss_particle_corrector_param_path" default="$(find-pkg-share yabloc_particle_filter)/config/gnss_particle_corrector.param.yaml"/>
13+
<arg name="predictor_param_path" default="$(find-pkg-share yabloc_particle_filter)/config/predictor.param.yaml"/>
14+
<!-- image processing -->
15+
<arg name="graph_segment_param_path" default="$(find-pkg-share yabloc_image_processing)/config/graph_segment.param.yaml"/>
16+
<arg name="segment_filter_param_path" default="$(find-pkg-share yabloc_image_processing)/config/segment_filter.param.yaml"/>
17+
<arg name="undistort_param_path" default="$(find-pkg-share yabloc_image_processing)/config/undistort.param.yaml"/>
18+
<!-- map -->
19+
<arg name="ground_server_param_path" default="$(find-pkg-share yabloc_common)/config/ground_server.param.yaml"/>
20+
<arg name="ll2_decomposer_param_path" default="$(find-pkg-share yabloc_common)/config/ll2_decomposer.param.yaml"/>
21+
22+
<let name="input_pose" value="/localization/pose_twist_fusion_filter/pose"/>
23+
24+
<!-- initializer -->
25+
<group>
26+
<push-ros-namespace namespace="initializer"/>
27+
<include file="$(find-pkg-share yabloc_pose_initializer)/launch/yabloc_pose_initializer.launch.xml"/>
28+
</group>
29+
30+
<!-- particle filter -->
31+
<group>
32+
<push-ros-namespace namespace="pf"/>
33+
<include file="$(find-pkg-share yabloc_particle_filter)/launch/yabloc_particle_filter.launch.xml"/>
34+
</group>
35+
36+
<!-- image processing -->
37+
<group>
38+
<push-ros-namespace namespace="image_processing"/>
39+
<include file="$(find-pkg-share yabloc_image_processing)/launch/yabloc_image_processing.launch.xml">
40+
<arg name="src_image" value="$(var src_image)"/>
41+
<arg name="src_info" value="$(var src_info)"/>
42+
<arg name="input_pose" value="$(var input_pose)"/>
43+
</include>
44+
</group>
45+
46+
<!-- map -->
47+
<group>
48+
<push-ros-namespace namespace="map"/>
49+
<include file="$(find-pkg-share yabloc_common)/launch/yabloc_common.launch.xml">
50+
<arg name="input_particle_pose" value="$(var input_pose)"/>
51+
</include>
52+
</group>
53+
</launch>

launch/tier4_localization_launch/package.xml

+4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
<exec_depend>pointcloud_preprocessor</exec_depend>
2222
<exec_depend>pose_initializer</exec_depend>
2323
<exec_depend>topic_tools</exec_depend>
24+
<exec_depend>yabloc_common</exec_depend>
25+
<exec_depend>yabloc_image_processing</exec_depend>
26+
<exec_depend>yabloc_particle_filter</exec_depend>
27+
<exec_depend>yabloc_pose_initializer</exec_depend>
2428

2529
<test_depend>ament_lint_auto</test_depend>
2630
<test_depend>autoware_lint_common</test_depend>

localization/pose_initializer/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ ament_auto_add_executable(pose_initializer_node
99
src/pose_initializer/pose_initializer_core.cpp
1010
src/pose_initializer/gnss_module.cpp
1111
src/pose_initializer/ndt_module.cpp
12+
src/pose_initializer/yabloc_module.cpp
1213
src/pose_initializer/stop_check_module.cpp
1314
src/pose_initializer/ekf_localization_trigger_module.cpp
1415
src/pose_initializer/ndt_localization_trigger_module.cpp

localization/pose_initializer/config/pose_initializer.param.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
gnss_enabled: true
44
ndt_enabled: true
55
ekf_enabled: true
6+
yabloc_enabled: false
67
stop_check_enabled: true

localization/pose_initializer/launch/pose_initializer.launch.xml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<node pkg="pose_initializer" exec="pose_initializer_node" name="pose_initializer_node">
77
<param from="$(var common_config_file)"/>
88
<param from="$(var config_file)"/>
9+
<remap from="yabloc_align" to="/localization/yabloc/initializer/yabloc_align_srv"/>
910
<remap from="ndt_align" to="/localization/pose_estimator/ndt_align_srv"/>
1011
<remap from="stop_check_twist" to="/sensing/vehicle_velocity_converter/twist_with_covariance"/>
1112
<remap from="gnss_pose_cov" to="$(var sub_gnss_pose_cov)"/>

localization/pose_initializer/src/pose_initializer/pose_initializer_core.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "ndt_localization_trigger_module.hpp"
2121
#include "ndt_module.hpp"
2222
#include "stop_check_module.hpp"
23+
#include "yabloc_module.hpp"
2324

2425
#include <memory>
2526
#include <vector>
@@ -41,6 +42,9 @@ PoseInitializer::PoseInitializer() : Node("pose_initializer")
4142
if (declare_parameter<bool>("gnss_enabled")) {
4243
gnss_ = std::make_unique<GnssModule>(this);
4344
}
45+
if (declare_parameter<bool>("yabloc_enabled")) {
46+
yabloc_ = std::make_unique<YabLocModule>(this);
47+
}
4448
if (declare_parameter<bool>("ndt_enabled")) {
4549
ndt_ = std::make_unique<NdtModule>(this);
4650
ndt_localization_trigger_ = std::make_unique<NdtLocalizationTriggerModule>(this);
@@ -86,6 +90,10 @@ void PoseInitializer::on_initialize(
8690
auto pose = req->pose.empty() ? get_gnss_pose() : req->pose.front();
8791
if (ndt_) {
8892
pose = ndt_->align_pose(pose);
93+
} else if (yabloc_) {
94+
// If both the NDT and YabLoc initializer are enabled, prioritize NDT as it offers more
95+
// accuracy pose.
96+
pose = yabloc_->align_pose(pose);
8997
}
9098
pose.pose.covariance = output_pose_covariance_;
9199
pub_reset_->publish(pose);

localization/pose_initializer/src/pose_initializer/pose_initializer_core.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
class StopCheckModule;
2727
class NdtModule;
2828
class GnssModule;
29+
class YabLocModule;
2930
class EkfLocalizationTriggerModule;
3031
class NdtLocalizationTriggerModule;
3132

@@ -50,6 +51,7 @@ class PoseInitializer : public rclcpp::Node
5051
std::array<double, 36> gnss_particle_covariance_;
5152
std::unique_ptr<GnssModule> gnss_;
5253
std::unique_ptr<NdtModule> ndt_;
54+
std::unique_ptr<YabLocModule> yabloc_;
5355
std::unique_ptr<StopCheckModule> stop_check_;
5456
std::unique_ptr<EkfLocalizationTriggerModule> ekf_localization_trigger_;
5557
std::unique_ptr<NdtLocalizationTriggerModule> ndt_localization_trigger_;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright 2022 The Autoware Contributors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
#include "yabloc_module.hpp"
16+
17+
#include <component_interface_specs/localization.hpp>
18+
#include <component_interface_utils/rclcpp/exceptions.hpp>
19+
20+
#include <memory>
21+
22+
using ServiceException = component_interface_utils::ServiceException;
23+
using Initialize = localization_interface::Initialize;
24+
using PoseWithCovarianceStamped = geometry_msgs::msg::PoseWithCovarianceStamped;
25+
26+
YabLocModule::YabLocModule(rclcpp::Node * node) : logger_(node->get_logger())
27+
{
28+
cli_align_ = node->create_client<RequestPoseAlignment>("yabloc_align");
29+
}
30+
31+
PoseWithCovarianceStamped YabLocModule::align_pose(const PoseWithCovarianceStamped & pose)
32+
{
33+
const auto req = std::make_shared<RequestPoseAlignment::Request>();
34+
req->pose_with_covariance = pose;
35+
36+
if (!cli_align_->service_is_ready()) {
37+
throw component_interface_utils::ServiceUnready("YabLoc align server is not ready.");
38+
}
39+
40+
RCLCPP_INFO(logger_, "Call YabLoc align server.");
41+
const auto res = cli_align_->async_send_request(req).get();
42+
if (!res->success) {
43+
RCLCPP_INFO(logger_, "YabLoc align server failed.");
44+
throw ServiceException(
45+
Initialize::Service::Response::ERROR_ESTIMATION, "YabLoc align server failed.");
46+
}
47+
RCLCPP_INFO(logger_, "YabLoc align server succeeded.");
48+
49+
// Overwrite the covariance.
50+
return res->pose_with_covariance;
51+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2022 The Autoware Contributors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
#ifndef POSE_INITIALIZER__YABLOC_MODULE_HPP_
16+
#define POSE_INITIALIZER__YABLOC_MODULE_HPP_
17+
18+
#include <rclcpp/rclcpp.hpp>
19+
20+
#include <geometry_msgs/msg/pose_with_covariance_stamped.hpp>
21+
#include <tier4_localization_msgs/srv/pose_with_covariance_stamped.hpp>
22+
23+
class YabLocModule
24+
{
25+
private:
26+
using PoseWithCovarianceStamped = geometry_msgs::msg::PoseWithCovarianceStamped;
27+
using RequestPoseAlignment = tier4_localization_msgs::srv::PoseWithCovarianceStamped;
28+
29+
public:
30+
explicit YabLocModule(rclcpp::Node * node);
31+
PoseWithCovarianceStamped align_pose(const PoseWithCovarianceStamped & pose);
32+
33+
private:
34+
rclcpp::Logger logger_;
35+
rclcpp::Client<RequestPoseAlignment>::SharedPtr cli_align_;
36+
};
37+
38+
#endif // POSE_INITIALIZER__YABLOC_MODULE_HPP_

localization/yabloc/README.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# YabLoc
2+
3+
**YabLoc** is vision-based localization with vector map. [https://youtu.be/Eaf6r_BNFfk](https://youtu.be/Eaf6r_BNFfk)
4+
5+
[![thumbnail](docs/yabloc_thumbnail.jpg)](https://youtu.be/Eaf6r_BNFfk)
6+
7+
## Packages
8+
9+
- [yabloc_common](yabloc_common/README.md)
10+
- [yabloc_image_processing](yabloc_image_processing/README.md)
11+
- [yabloc_particle_filter](yabloc_particle_filter/README.md)
12+
- [yabloc_pose_initializer](yabloc_pose_initializer/README.md)
13+
14+
## How to launch YabLoc instead of NDT
15+
16+
When launching autoware, if you set `localization_mode:=yabloc` as an argument, YabLoc will be launched instead of NDT.
17+
By default, `localization_mode` is `ndt`.
18+
19+
A sample command to run YabLoc is as follows
20+
21+
```shell
22+
ros2 launch autoware_launch logging_simulator.launch.xml \
23+
map_path:=$HOME/autoware_map/sample-map-rosbag\
24+
vehicle_model:=sample_vehicle \
25+
sensor_model:=sample_sensor_kit \
26+
localization_mode:=yabloc
27+
```
28+
29+
## Architecture
30+
31+
![node_diagram](docs/yabloc_architecture.drawio.svg)

0 commit comments

Comments
 (0)