Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from autowarefoundation:main #13

Merged
merged 106 commits into from
Mar 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
1073b59
feat(behavior_path_planner): expand the drivable area based on the ve…
maxime-clem Feb 14, 2023
15ad0c2
perf(map_based_prediction): performance improvement of interpolateRef…
veqcc Feb 14, 2023
5833067
fix(avoidance): fix bug in calculation of rss longitudinal margin (#2…
satoshi-ota Feb 14, 2023
1baa1fd
fix(avoidance): remove rtc status when the ego is in YIELD maneuver (…
satoshi-ota Feb 14, 2023
4a7ef41
feat(crosswalk_traffic_light_estimator): estimate the corresponding p…
tkimura4 Feb 14, 2023
7a04b75
fix(trajectory_visualizer): fix topic callback (#2496)
TakaHoribe Feb 15, 2023
d21b75c
fix(lane_change): fix object predicted path getter logic (#2815)
zulfaqar-azmi-t4 Feb 15, 2023
c7c81e7
fix(lane_following): remove lane change intersection check (#2826)
zulfaqar-azmi-t4 Feb 15, 2023
412eea9
feat(tier4_autoware_utils): remove drivable area plugin (#2876)
purewater0901 Feb 15, 2023
8761266
feat(tier4_planning_rviz_plugin): add drivable area plugin (#2868)
purewater0901 Feb 15, 2023
4c6107a
feat(obstacle_stop_planner): add configurable lateral_distance for di…
beyzanurkaya Feb 15, 2023
38bd6de
feat(planning_debug_tools): add perception_reproducer.py (#2886)
takayuki5168 Feb 15, 2023
e67eb23
fix(mpc_lateral_controller): over capacity (#2893)
TakaHoribe Feb 15, 2023
d6afa1b
fix(obstacle_avoidance_planner): add a margin for vehicle to stop bef…
ahmeddesokyebrahim Feb 15, 2023
722f4cd
fix(obstacle_stop_planner): add checking of point height (#2296)
lchojnack Feb 15, 2023
1fdcab3
fix(behavior_path_planner): fix tests failing in CI (#2890)
maxime-clem Feb 16, 2023
61a891f
perf(map_based_prediction): calculate yaw without calling getLaneletA…
veqcc Feb 16, 2023
a872dd1
fix(pure_pursuit): return zero curvature when neighboring idx isn't f…
kyoichi-sugahara Feb 16, 2023
477e859
fix(path_distance_calculator): do not calculate distance when too sho…
tkimura4 Feb 16, 2023
476afcb
feat(dummy diag publisher): change diag name specification method to …
asana17 Feb 16, 2023
0dc2247
feat(traffic_light_classifier): update classifier model (#2820)
wep21 Feb 16, 2023
d5854cb
feat(map_based_prediction): update lane change decision logic (#2822)
YoshiRi Feb 16, 2023
f2bad80
feat(motion_utils): add calc interpolated point for path with lane id…
takayuki5168 Feb 16, 2023
5484777
feat(behavior_path_planner): unshifted pose as closest previous path …
takayuki5168 Feb 16, 2023
5d3c9f1
fix(surround_obstacle_checker): delete default param (#2889)
yamazakiTasuku Feb 16, 2023
38015c0
fix(avoidance): use previous output when the avoidance path generatio…
satoshi-ota Feb 17, 2023
aec33b1
fix(lane_change): extend target lane range in safety check (#2776)
zulfaqar-azmi-t4 Feb 17, 2023
02d2884
fix(tensorrt_yolox): set existence_probability (#2524)
yukke42 Feb 17, 2023
1c5bed3
fix(behavior_path_planner): remove unused callback functions (#2901)
satoshi-ota Feb 17, 2023
90d09fe
fix(behavior_path_planner): fix pull over deceleration before search …
kosuke55 Feb 17, 2023
fd60ca4
feat(behavior_velocity): add mandatory detection area for run out mod…
TomohitoAndo Feb 17, 2023
5636b55
feat(tier4_autoware_utils): add generateUUID to uuid helper (#2902)
satoshi-ota Feb 18, 2023
e161141
build(system_monitor): added missing Boost dependencies (#2881)
esteve Feb 18, 2023
ab0e97a
feat(vehicle_cmd_gate): enable filter with actual steer in manual mod…
TakaHoribe Feb 20, 2023
ce82f3d
chore(utils): move utils directory (#2911)
satoshi-ota Feb 20, 2023
51ffc39
fix(behavior_path_planner): move findEgoIndex & findEgoSegmentIndex t…
satoshi-ota Feb 20, 2023
11c9892
docs(image_projection_based_fusion): add algorithm description of sen…
tzhong518 Feb 20, 2023
3f07107
feat(intersection): consider lane change in intersection based on ass…
soblin Feb 20, 2023
8006be7
fix(occupancy_grid_map_ouliter_filter): reduce radius search region (…
badai-nguyen Feb 20, 2023
f7f1d8d
fix(tier4_state_rviz_plugin): split into two panels (#2914)
h-ohta Feb 21, 2023
873666f
fix(behavior_path_planner): remove unnecessary include (#2920)
satoshi-ota Feb 21, 2023
ecbfb37
refactor(lane_change): compute obj indices return if safe path found …
zulfaqar-azmi-t4 Feb 21, 2023
c5a1ccc
fix(behavior_path_planner): move module output interface definition (…
satoshi-ota Feb 21, 2023
8abf884
feat(detected_object_validation): add dynamic min pointcloud num (#2894)
yukkysaito Feb 21, 2023
f070349
refactor(intersection): improve generate stopline functions (#2918)
soblin Feb 21, 2023
e50dc49
fix(behavior_path_planner): fix cutOverlappedLanes (#2916)
kosuke55 Feb 21, 2023
9b3729b
feat(lane_departure_checker): include neighbor lanelets as optional (…
brkay54 Feb 21, 2023
f62c6ba
fix(motion_utils): add doxygen comments for utility functions in traj…
ahmeddesokyebrahim Feb 21, 2023
afb027c
fix(tier4_perception_launch): fix typo (#2926)
kaancolak Feb 21, 2023
46e6315
fix(tier4_planning_launch): remove unnecessary config (#2910)
takayuki5168 Feb 21, 2023
902d3f9
refactor(behavior_planning): replace generateUUID() with tier4_autowa…
satoshi-ota Feb 22, 2023
103897e
feat(behavior_path_planner): check if object is avoidable for drivabl…
takayuki5168 Feb 22, 2023
66b870f
feat(behavior_path_planner): drivable area with dynamic margin for st…
takayuki5168 Feb 22, 2023
2a65ddd
chore(pull_out/over): move pull out/over utils (#2929)
satoshi-ota Feb 22, 2023
55dc662
fix(behavior_path_planner): drivable area with static obstacles (#2880)
takayuki5168 Feb 22, 2023
30c391c
chore(behavior_path_planner): move scene module utils (#2927)
satoshi-ota Feb 22, 2023
0872ef8
feat(map_height_fitter): change map height fitter to library (#2724)
isamu-takagi Feb 22, 2023
ee98754
fix(obstacle_avoidance_planner): fix lateral calculations (#2878)
beyzanurkaya Feb 22, 2023
57f640a
chore(avoidance): move avoidance utils directory (#2928)
satoshi-ota Feb 23, 2023
99a2860
fix(obstacle_stop_planner): delete default values (#2931)
yamazakiTasuku Feb 24, 2023
d32dc46
refactor(planning_error_monitor): remove pkg (#2604)
TakaHoribe Feb 24, 2023
de10f26
chore(tier4_map_launch): add lanelet2 config files to tier4_map_launc…
meliketanrikulu Feb 24, 2023
6158a6f
fix(tier4_perception_launch): remove unnecessary node (#2941)
badai-nguyen Feb 24, 2023
c1819ab
perf(crop_box_filter): performance tuning with filter() API change (#…
sykwer Feb 24, 2023
d65b3cc
build(signal_processing): add Boost to build_export_depend (#2917)
esteve Feb 24, 2023
36477c0
build(obstacle_stop_planner): added libopencv-dev dependency (#2937)
esteve Feb 24, 2023
bd00581
feat(obstacle_stop_planner): extend trajectory along vehicle length (…
ismetatabay Feb 24, 2023
2f4192b
fix(external_velocity_limit_selector): delete default values (#2934)
yamazakiTasuku Feb 26, 2023
4668ddb
chore(control, planning): add maintainers (#2951)
satoshi-ota Feb 26, 2023
bf3157a
chore: update CODEOWNERS (#2837)
awf-autoware-bot[bot] Feb 26, 2023
87d341f
fix(shift_decider): delete default values (#2946)
yamazakiTasuku Feb 27, 2023
a7ff179
refactor(obstacle_collision_checker): delete default values (#2945)
yamazakiTasuku Feb 27, 2023
e9e8553
refactor(control_performance_analysis): delete default values (#2944)
yamazakiTasuku Feb 27, 2023
3d09432
fix(avoidance): output stop point inserted reference path (#2949)
satoshi-ota Feb 27, 2023
5f23514
refactor(joy_controller): delete default values (#2943)
yamazakiTasuku Feb 27, 2023
b28d792
refactor(motion_velocity_smoother): delete default values (#2935)
yamazakiTasuku Feb 27, 2023
640cb61
feat(obstacle_stop_planner): add margin behind goal (#2953)
kosuke55 Feb 27, 2023
7d15fdf
perf(lane_change): only compute interpolate ego once (#2839)
zulfaqar-azmi-t4 Feb 28, 2023
ea58e59
docs(behavior_path_planner): align document title (#2956)
satoshi-ota Feb 28, 2023
102d974
feat(motion_velocity_smoother): improve velocity planning around stop…
purewater0901 Feb 28, 2023
f057084
feat(behavior_path_planner): add new manager independent from behavio…
satoshi-ota Feb 28, 2023
91653ad
refactor(obstacle_avoidance_planner): clean up the code (#2796)
takayuki5168 Mar 1, 2023
e7089d7
docs(behavior_path_planner): fix dead link (#2965)
satoshi-ota Mar 1, 2023
5f75c7d
fix(motion_velocity_smoother): fix external velocity limit if ego veh…
rej55 Mar 1, 2023
a2c62dc
fix(fault injection): add find package to cmake (#2973)
tkimura4 Mar 1, 2023
f76977a
feat(tier4_planning_rviz_plugin): move footprint plugin to path (#2971)
purewater0901 Mar 1, 2023
78388cb
feat(behavior_path_planner): be able to switch framework by macro (#2…
satoshi-ota Mar 1, 2023
f9075cb
feat(avoidance): enable to avoid vehicles that stopped for a long tim…
satoshi-ota Mar 2, 2023
1a8099a
fix(behavior_path_planner): rename macro (#2978)
satoshi-ota Mar 2, 2023
ede21f3
feat(pose_initilizer): support gnss/imu pose estimator (#2904)
rsasaki0109 Mar 2, 2023
261db5c
fix(tier4_state_rviz_plugin): fix typo (#2988)
satoshi-ota Mar 2, 2023
91d8013
fix(motion_velocity_smoother): fix terminal velocity optimization (#2…
purewater0901 Mar 2, 2023
8ce056f
chore(typo): eliminate typos (#2216)
HansRobo Mar 3, 2023
a9faeda
fix(crop_box_filter): fix bug (#2992)
sykwer Mar 3, 2023
9929414
fix(avoidance): avoidable right side parked-vehicle (#2932)
satoshi-ota Mar 3, 2023
844d210
feat(tier4_planning_rviz_plugin): add maintainer (#2996)
purewater0901 Mar 3, 2023
36fcf3f
fix(tier4_rviz_planning_plugin): clear objects before return (#2995)
purewater0901 Mar 3, 2023
7f51957
refactor(behavior_path_planner): remove unnecessary macros (#2998)
satoshi-ota Mar 3, 2023
9dd2100
refactor(motion_utils): delete calcSignedArcLength with threshold (#2…
kyoichi-sugahara Mar 3, 2023
5f8f448
feat(behavior_path_planner): pull over freespace parking (#2879)
kosuke55 Mar 3, 2023
806db52
docs(behavior_path_planner): add pull over out separated docs and upd…
kosuke55 Mar 3, 2023
8b8a37e
chore(typo): fix typos in comment (#2999)
HansRobo Mar 4, 2023
d01c5cf
refactor(lane_departure_checker): delete default values (#2972)
yamazakiTasuku Mar 6, 2023
b72ca85
perf(distortion_corrector_node): performance tuning (#2913)
sykwer Mar 6, 2023
52300a4
feat(probablistic_occupancy_grid_map): add alternative to gridmap ori…
YoshiRi Mar 6, 2023
54d45e5
fix(behavior_path_planner): fix drivable area document (#3008)
purewater0901 Mar 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 8 additions & 8 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ common/tier4_vehicle_rviz_plugin/** yukihiro.saito@tier4.jp @autowarefoundation/
common/time_utils/** christopherj.ho@gmail.com @autowarefoundation/autoware-global-codeowners
common/trtexec_vendor/** daisuke.nishimatsu@tier4.jp @autowarefoundation/autoware-global-codeowners
common/tvm_utility/** ambroise.vincent@arm.com xinyu.wang@tier4.jp @autowarefoundation/autoware-global-codeowners
control/control_performance_analysis/** ali.boyali@tier4.jp berkay@leodrive.ai @autowarefoundation/autoware-global-codeowners
control/external_cmd_selector/** kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
control/joy_controller/** kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
control/control_performance_analysis/** berkay@leodrive.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
control/external_cmd_selector/** fumiya.watanabe@tier4.jp kenji.miyake@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
control/joy_controller/** fumiya.watanabe@tier4.jp kenji.miyake@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
control/lane_departure_checker/** kyoichi.sugahara@tier4.jp @autowarefoundation/autoware-global-codeowners
control/mpc_lateral_controller/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp @autowarefoundation/autoware-global-codeowners
control/obstacle_collision_checker/** kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
control/obstacle_collision_checker/** fumiya.watanabe@tier4.jp kenji.miyake@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
control/operation_mode_transition_manager/** takamasa.horibe@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
control/pid_longitudinal_controller/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp @autowarefoundation/autoware-global-codeowners
control/pure_pursuit/** takamasa.horibe@tier4.jp @autowarefoundation/autoware-global-codeowners
Expand Down Expand Up @@ -79,6 +79,7 @@ localization/pose2twist/** yamato.ando@tier4.jp @autowarefoundation/autoware-glo
localization/pose_initializer/** isamu.takagi@tier4.jp yamato.ando@tier4.jp @autowarefoundation/autoware-global-codeowners
localization/stop_filter/** koji.minoda@tier4.jp yamato.ando@tier4.jp @autowarefoundation/autoware-global-codeowners
localization/twist2accel/** koji.minoda@tier4.jp yamato.ando@tier4.jp @autowarefoundation/autoware-global-codeowners
map/map_height_fitter/** isamu.takagi@tier4.jp yamato.ando@tier4.jp @autowarefoundation/autoware-global-codeowners
map/map_loader/** koji.minoda@tier4.jp ryohsuke.mitsudome@tier4.jp ryu.yamamoto@tier4.jp @autowarefoundation/autoware-global-codeowners
map/map_tf_generator/** azumi.suzuki@tier4.jp @autowarefoundation/autoware-global-codeowners
map/util/lanelet2_map_preprocessor/** ryohsuke.mitsudome@tier4.jp @autowarefoundation/autoware-global-codeowners
Expand Down Expand Up @@ -120,20 +121,19 @@ planning/external_velocity_limit_selector/** satoshi.ota@tier4.jp shinnosuke.hir
planning/freespace_planner/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp yutaka.shimizu@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/freespace_planning_algorithms/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp yutaka.shimizu@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/mission_planner/** isamu.takagi@tier4.jp ryohsuke.mitsudome@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/motion_velocity_smoother/** fumiya.watanabe@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/motion_velocity_smoother/** fumiya.watanabe@tier4.jp makoto.kurihara@tier4.jp takamasa.horibe@tier4.jp yutaka.shimizu@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/obstacle_avoidance_planner/** kosuke.takeuchi@tier4.jp takayuki.murooka@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/obstacle_cruise_planner/** takayuki.murooka@tier4.jp yutaka.shimizu@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/obstacle_stop_planner/** satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/obstacle_velocity_limiter/** maxime.clement@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/planning_debug_tools/** taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/planning_error_monitor/** yutaka.shimizu@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/planning_evaluator/** maxime.clement@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/planning_validator/** takamasa.horibe@tier4.jp yutaka.shimizu@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/route_handler/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp yutaka.shimizu@tier4.jp zulfaqar.azmi@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/rtc_auto_mode_manager/** fumiya.watanabe@tier4.jp taiki.tanaka@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/rtc_interface/** fumiya.watanabe@tier4.jp taiki.tanaka@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/rtc_replayer/** fumiya.watanabe@tier4.jp taiki.tanaka@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/scenario_selector/** kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/scenario_selector/** fumiya.watanabe@tier4.jp kenji.miyake@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/static_centerline_optimizer/** kosuke.takeuchi@tier4.jp takayuki.murooka@tier4.jp @autowarefoundation/autoware-global-codeowners
planning/surround_obstacle_checker/** satoshi.ota@tier4.jp @autowarefoundation/autoware-global-codeowners
sensing/geo_pos_conv/** yamato.ando@tier4.jp @autowarefoundation/autoware-global-codeowners
Expand All @@ -157,7 +157,7 @@ system/default_ad_api/** isamu.takagi@tier4.jp kahhooi.tan@tier4.jp kenji.miyake
system/default_ad_api_helpers/ad_api_adaptors/** isamu.takagi@tier4.jp kahhooi.tan@tier4.jp kenji.miyake@tier4.jp makoto.yabuta@tier4.jp @autowarefoundation/autoware-global-codeowners
system/default_ad_api_helpers/ad_api_visualizers/** isamu.takagi@tier4.jp kahhooi.tan@tier4.jp makoto.yabuta@tier4.jp @autowarefoundation/autoware-global-codeowners
system/default_ad_api_helpers/automatic_pose_initializer/** isamu.takagi@tier4.jp kahhooi.tan@tier4.jp kenji.miyake@tier4.jp makoto.yabuta@tier4.jp @autowarefoundation/autoware-global-codeowners
system/dummy_diag_publisher/** kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
system/dummy_diag_publisher/** akihiro.sakurai@tier4.jp fumihito.ito@tier4.jp kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
system/dummy_infrastructure/** kenji.miyake@tier4.jp @autowarefoundation/autoware-global-codeowners
system/emergency_handler/** kenji.miyake@tier4.jp makoto.kurihara@tier4.jp @autowarefoundation/autoware-global-codeowners
system/mrm_comfortable_stop_operator/** makoto.kurihara@tier4.jp @autowarefoundation/autoware-global-codeowners
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ namespace message_field_adapters
/// Using alias for Time message
using TimeStamp = builtin_interfaces::msg::Time;

/// \brief Helper class to check existance of header file in compile time:
/// \brief Helper class to check existence of header file in compile time:
/// https://stackoverflow.com/a/16000226/2325407
template <typename T, typename = nullptr_t>
struct HasHeader : std::false_type
Expand Down
1 change: 1 addition & 0 deletions common/autoware_auto_common/test/test_template_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ template <typename FooT, typename In1, typename In2>
using false_bar_expression2 =
decltype(std::declval<FooT>().bar(std::declval<In1>(), std::declval<const In2 &>()));

// cspell: ignore asdasd
// Signature mismatch:
template <typename FooT, typename In1, typename In2, typename In3>
using false_bar_expression3 = decltype(std::declval<FooT>().asdasd(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ template <typename PointT>
using Point4 = std::array<PointT, 4U>;

/// \brief Helper struct for compile time introspection of array size from
/// stackoverflow.com/questions/16866033/getting-the-number-of-elements-in-stdarray-at-compile-time
/// Ref: https://stackoverflow.com/questions/16866033
template <typename>
struct array_size;
template <typename T, std::size_t N>
Expand All @@ -132,7 +132,7 @@ finalize_box(const decltype(BoundingBox::corners) & corners, BoundingBox & box);

/// \brief given support points and two orthogonal directions, compute corners of bounding box
/// \tparam PointT Type of a point, must have float members x and y`
/// \tparam IT An iterator dereferencable into PointT
/// \tparam IT An iterator dereferenceable into PointT
/// \param[out] corners Gets filled with corner points of bounding box
/// \param[in] supports Iterators referring to support points of current bounding box
/// e.g. bounding box is touching these points
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
/// \brief This file implements 2D pca on a linked list of points to estimate an oriented
/// bounding box

// cspell: ignore eigenbox, EIGENBOX
#ifndef GEOMETRY__BOUNDING_BOX__EIGENBOX_2D_HPP_
#define GEOMETRY__BOUNDING_BOX__EIGENBOX_2D_HPP_

Expand Down Expand Up @@ -50,11 +51,12 @@ struct Covariance2d
std::size_t num_points;
}; // struct Covariance2d

// cspell: ignore Welford
/// \brief Compute 2d covariance matrix of a list of points using Welford's online algorithm
/// \param[in] begin An iterator pointing to the first point in a point list
/// \param[in] end An iterator pointing to one past the last point in the point list
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \return A 2d covariance matrix for all points inthe list
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
/// \return A 2d covariance matrix for all points in the list
template <typename IT>
Covariance2d covariance_2d(const IT begin, const IT end)
{
Expand Down Expand Up @@ -93,13 +95,14 @@ Covariance2d covariance_2d(const IT begin, const IT end)

/// \brief Compute eigenvectors and eigenvalues
/// \param[in] cov 2d Covariance matrix
/// \param[out] eigvec1 First eigenvector
/// \param[out] eigvec2 Second eigenvector
/// \param[out] eig_vec1 First eigenvector
/// \param[out] eig_vec2 Second eigenvector
/// \tparam PointT Point type that has at least float members x and y
/// \return A pairt of eigenvalues: The first is the larger eigenvalue
/// \throw std::runtime error if you would get degenerate covariance
template <typename PointT>
std::pair<float32_t, float32_t> eig_2d(const Covariance2d & cov, PointT & eigvec1, PointT & eigvec2)
std::pair<float32_t, float32_t> eig_2d(
const Covariance2d & cov, PointT & eig_vec1, PointT & eig_vec2)
{
const float32_t tr_2 = (cov.xx + cov.yy) * 0.5F;
const float32_t det = (cov.xx * cov.yy) - (cov.xy * cov.xy);
Expand All @@ -120,28 +123,28 @@ std::pair<float32_t, float32_t> eig_2d(const Covariance2d & cov, PointT & eigvec
// are persistent against further calculations.
// (e.g. taking cross product of two eigen vectors)
if (fabsf(cov.xy * cov.xy) > std::numeric_limits<float32_t>::epsilon()) {
xr_(eigvec1) = cov.xy;
yr_(eigvec1) = ret.first - cov.xx;
xr_(eigvec2) = cov.xy;
yr_(eigvec2) = ret.second - cov.xx;
xr_(eig_vec1) = cov.xy;
yr_(eig_vec1) = ret.first - cov.xx;
xr_(eig_vec2) = cov.xy;
yr_(eig_vec2) = ret.second - cov.xx;
} else {
if (cov.xx > cov.yy) {
xr_(eigvec1) = 1.0F;
yr_(eigvec1) = 0.0F;
xr_(eigvec2) = 0.0F;
yr_(eigvec2) = 1.0F;
xr_(eig_vec1) = 1.0F;
yr_(eig_vec1) = 0.0F;
xr_(eig_vec2) = 0.0F;
yr_(eig_vec2) = 1.0F;
} else {
xr_(eigvec1) = 0.0F;
yr_(eigvec1) = 1.0F;
xr_(eigvec2) = 1.0F;
yr_(eigvec2) = 0.0F;
xr_(eig_vec1) = 0.0F;
yr_(eig_vec1) = 1.0F;
xr_(eig_vec2) = 1.0F;
yr_(eig_vec2) = 0.0F;
}
}
return ret;
}

/// \brief Given eigenvectors, compute support (furthest) point in each direction
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
/// \tparam PointT type of a point with float members x and y
/// \param[in] begin An iterator pointing to the first point in a point list
/// \param[in] end An iterator pointing to one past the last point in the point list
Expand Down Expand Up @@ -183,7 +186,7 @@ bool8_t compute_supports(
}

/// \brief Compute bounding box given a pair of basis directions
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
/// \tparam PointT Point type of the lists, must have float members x and y
/// \param[in] ax1 First basis direction, assumed to be normal to ax2
/// \param[in] ax2 Second basis direction, assumed to be normal to ax1, assumed to be ccw wrt ax1
Expand All @@ -210,7 +213,7 @@ BoundingBox compute_bounding_box(
/// modify the list. The resulting bounding box is not necessarily minimum in any way
/// \param[in] begin An iterator pointing to the first point in a point list
/// \param[in] end An iterator pointing to one past the last point in the point list
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
/// \return An oriented bounding box in x-y. This bounding box has no height information
template <typename IT>
BoundingBox eigenbox_2d(const IT begin, const IT end)
Expand All @@ -222,7 +225,7 @@ BoundingBox eigenbox_2d(const IT begin, const IT end)
using PointT = details::base_type<decltype(*begin)>;
PointT eig1;
PointT eig2;
const auto eigv = details::eig_2d(cov, eig1, eig2);
const auto eig_v = details::eig_2d(cov, eig1, eig2);

// find extreme points
details::Point4<IT> supports;
Expand All @@ -232,7 +235,7 @@ BoundingBox eigenbox_2d(const IT begin, const IT end)
std::swap(eig1, eig2);
}
BoundingBox bbox = details::compute_bounding_box(eig1, eig2, supports);
bbox.value = eigv.first;
bbox.value = eig_v.first;

return bbox;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
/// \brief This file implements 2D pca on a linked list of points to estimate an oriented
/// bounding box

// cspell: ignore LFIT, lfit
// LFIT means "L-Shape Fitting"
#ifndef GEOMETRY__BOUNDING_BOX__LFIT_HPP_
#define GEOMETRY__BOUNDING_BOX__LFIT_HPP_

Expand Down Expand Up @@ -117,8 +119,8 @@ float32_t solve_lfit(const LFitWs & ws, PointT & dir)
ws.m22d - (((ws.m12b * ws.m12b) * pi) + ((ws.m12d * ws.m12d) * qi)),
ws.m22b - (((ws.m12a * ws.m12b) * pi) + ((ws.m12c * ws.m12d) * qi)), 0UL};
PointT eig1;
const auto eigv = eig_2d(M, eig1, dir);
return eigv.second;
const auto eig_v = eig_2d(M, eig1, dir);
return eig_v.second;
}

/// \brief Increments L fit M matrix with information in the point
Expand Down Expand Up @@ -176,7 +178,7 @@ class LFitCompare
/// \param[in] end An iterator pointing to one past the last point in the point list
/// \param[in] size The number of points in the point list
/// \return A bounding box that minimizes the LFit residual
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
template <typename IT>
BoundingBox lfit_bounding_box_2d_impl(const IT begin, const IT end, const std::size_t size)
{
Expand Down Expand Up @@ -207,11 +209,11 @@ BoundingBox lfit_bounding_box_2d_impl(const IT begin, const IT end, const std::s
}
}
// can recover best corner point, but don't care, need to cover all points
const auto inorm = 1.0F / norm_2d(best_normal);
if (!std::isnormal(inorm)) {
const auto inv_norm = 1.0F / norm_2d(best_normal);
if (!std::isnormal(inv_norm)) {
throw std::runtime_error{"LFit: Abnormal norm"};
}
best_normal = times_2d(best_normal, inorm);
best_normal = times_2d(best_normal, inv_norm);
auto best_tangent = get_normal(best_normal);
// find extreme points
Point4<IT> supports;
Expand All @@ -235,7 +237,7 @@ BoundingBox lfit_bounding_box_2d_impl(const IT begin, const IT end, const std::s
/// \param[in] hint An iterator pointing to the point whose normal will be used to sort the list
/// \return A pair where the first element is an iterator pointing to the nearest point, and the
/// second element is the size of the list
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
/// \throw std::domain_error If the number of points is too few
template <typename IT, typename PointT>
BoundingBox lfit_bounding_box_2d(
Expand All @@ -258,7 +260,7 @@ BoundingBox lfit_bounding_box_2d(
/// \return An oriented bounding box in x-y. This bounding box has no height information
/// \param[in] begin An iterator pointing to the first point in a point list
/// \param[in] end An iterator pointing to one past the last point in the point list
/// \tparam IT An iterator type dereferencable into a point with float members x and y
/// \tparam IT An iterator type dereferenceable into a point with float members x and y
template <typename IT>
BoundingBox lfit_bounding_box_2d(const IT begin, const IT end)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ void init_bbox(const IT begin, const IT end, Point4<IT> & support)
/// \param[in] end An iterator to one past the last point on a convex hull
/// \param[in] metric_fn A functor determining what measure the bounding box is minimum with respect
/// to
/// \tparam IT An iterator type dereferencable into a point type with float members x and y
/// \tparam IT An iterator type dereferenceable into a point type with float members x and y
/// \tparam MetricF A functor that computes a float measure from the x and y size (width and length)
/// of a bounding box, assumed to be packed in a Point32 message.
/// \throw std::domain_error if the list of points is too small to reasonable generate a bounding
Expand Down Expand Up @@ -223,7 +223,7 @@ BoundingBox rotating_calipers_impl(const IT begin, const IT end, const MetricF m
/// \param[in] begin An iterator to the first point on a convex hull
/// \param[in] end An iterator to one past the last point on a convex hull
/// \return A minimum area bounding box, value field is the area
/// \tparam IT An iterator type dereferencable into a point type with float members x and y
/// \tparam IT An iterator type dereferenceable into a point type with float members x and y
template <typename IT>
BoundingBox minimum_area_bounding_box(const IT begin, const IT end)
{
Expand All @@ -238,7 +238,7 @@ BoundingBox minimum_area_bounding_box(const IT begin, const IT end)
/// \param[in] begin An iterator to the first point on a convex hull
/// \param[in] end An iterator to one past the last point on a convex hull
/// \return A minimum perimeter bounding box, value field is half the perimeter
/// \tparam IT An iterator type dereferencable into a point type with float members x and y
/// \tparam IT An iterator type dereferenceable into a point type with float members x and y
template <typename IT>
BoundingBox minimum_perimeter_bounding_box(const IT begin, const IT end)
{
Expand Down
Loading