From 0fdbc9d4f549549df98a28c3da8fb70cfffbbfda Mon Sep 17 00:00:00 2001 From: Tomoya Kimura Date: Fri, 3 Dec 2021 16:24:52 +0900 Subject: [PATCH] feat: add rviz plugin packages (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * release v0.4.0 * remove ROS1 packages temporarily Signed-off-by: mitsudome-r * add sample ros2 packages Signed-off-by: mitsudome-r * remove ROS1 packages Signed-off-by: mitsudome-r * Revert "remove ROS1 packages temporarily" This reverts commit 7eacbcea261a65d6c305c7b0d069591ca3a2ee3a. Signed-off-by: mitsudome-r * add COLCON_IGNORE to ros1 packages Signed-off-by: mitsudome-r * Port autoware-perception-rviz-plugin (#100) * Port to ROS2 Signed-off-by: Servando German Serrano * Update namespaces Signed-off-by: Servando German Serrano * Port autoware-planning-rviz-plugin (#103) * Port to ROS2 Signed-off-by: Servando German Serrano * Update deprecated Signed-off-by: Servando German Serrano * Update namespaces Signed-off-by: Servando German Serrano * Adjust copyright notice on 532 out of 699 source files (#143) * Use quotes for includes where appropriate (#144) * Use quotes for includes where appropriate * Fix lint tests * Make tests pass hopefully * Run uncrustify on the entire Pilot.Auto codebase (#151) * Run uncrustify on the entire Pilot.Auto codebase * Exclude open PRs * Fix rviz plugins (#175) * [autoware_perception_rviz_plugin] make library to shared and fix library name in plugin_description.xml Signed-off-by: mitsudome-r * [autoware_planning_rviz_plugin] make library to shared and fix library name in plugin_description.xml Signed-off-by: mitsudome-r * Port autoware vehicle rviz plugin (#111) * Port to ROS2 Signed-off-by: Servando German Serrano * Amend buildtool Signed-off-by: Servando German Serrano * Fix license Signed-off-by: Servando German Serrano * Fix Signed-off-by: Servando German Serrano * Fixes Signed-off-by: Servando German Serrano * adding linters to autoware_planning_rviz_plugin (#224) * adding linters to autoware_perception_rviz_plugin (#225) * [autoware_perception_rviz_plugin] make plugin library SHARED (#236) Signed-off-by: mitsudome-r * Fix bugs in autoware vehicle rviz plugin (#246) Signed-off-by: wep21 * Ros2 v0.8.0 autoware vehicle rviz plugin (#333) * add test depend * fix console meter size (#909) * update to change font scale (#910) * Fix typos in common modules (#914) * fix typos in common modules * minor fix (lowercasing) * revert changes in PathPoint.msg * Fix memory leaks in turn signal plugin (#932) * fix memory leak (QPointF) * convert raw pointers to smart pointers * update handle image (#948) * reduce calc cost rviz plugin (#947) * reduce calc cost * cosmetic change * cosmetic change * Use CMAKE_CXX_STANDARD to enable C++14 for Qt Signed-off-by: Kenji Miyake Co-authored-by: Kenji Miyake * change font size independency desplay (#946) * bug fix (wrong unit conversion) (#956) * Refactor autoware_vehicle_rviz_plugin (#967) * Refactor autoware_vehicle_rviz_plugin - change smart pointers to raw pointers according to Qt convention - remove unused headers - remove unused variables - cosmetic changes according to Google C++ Style Guide - use the range-based for statement - replace push_back with emplace_back See also: #932, #964 * Apply clang-format * Change a variable name to clarify: history -> histories * add build testing * appply ament_uncrustify * apply lint * fix bug Co-authored-by: Yukihiro Saito Co-authored-by: Kazuki Miyahara Co-authored-by: Kenji Miyake * Ros2 v0.8.0 autoware perception rviz plugin (#334) * Fix typos in common modules (#914) * fix typos in common modules * minor fix (lowercasing) * revert changes in PathPoint.msg * ament_cmake_cppcheck -> ament_lint_common * apply lint Co-authored-by: Kazuki Miyahara * Ros2 v0.8.0 autoware planning rviz plugin (#336) * add speed limit visualizer (#908) * add speed limit visualizer * :put_litter_in_its_place: * add max velocity output * fix bug * update visualizer Co-authored-by: tomoya.kimura * change font size independency desplay (#946) * ament_cmake_cppcheck -> ament_lint_common * apply lint * change topic type Co-authored-by: Yukihiro Saito * Ros2 v0.8.0 remove std msgs awapi (#348) * [autoware_vehicle_msgs] add BatteryStatus msg Signed-off-by: mitsudome-r * [autoware_planning_msgs] add ExpandStopRange and StopSpeedExceeded messages Signed-off-by: mitsudome-r * [autoware_api_msgs] add DoorControlCommand, StopCommand, and VelocityLimit messages Signed-off-by: mitsudome-r * remove std_msgs related to autoware_awaiv_adapter node Signed-off-by: mitsudome-r * apply ament_uncrustify Signed-off-by: mitsudome-r * fix build failure Signed-off-by: mitsudome-r * fix test failures Signed-off-by: mitsudome-r * address review commends Signed-off-by: mitsudome-r * Ros2 v0.9.0 pose history (#387) * Port pose history to ROS2 Signed-off-by: wep21 * pose_history (#1169) * change pkg name * add alpha Co-authored-by: Yukihiro Saito * fix max velocity visualization (#397) * fix max velocity vis * apply lint-format * Ros2 rtd plugin (#444) * Use RTD instead of MFD Signed-off-by: wep21 * Sync public repo (#1228) * [simple_planning_simulator] add readme (#424) * add readme of simple_planning_simulator Signed-off-by: Takamasa Horibe * Update simulator/simple_planning_simulator/README.md * set transit_margin_time to intersect. planner (#460) * Fix pose2twist (#462) Signed-off-by: Takagi, Isamu * Ros2 vehicle info param server (#447) * add vehicle_info_param_server * update vehicle info * apply format * fix bug * skip unnecessary search * delete vehicle param file * fix bug * Ros2 fix topic name part2 (#425) * Fix topic name of traffic_light_classifier Signed-off-by: Takagi, Isamu * Fix topic name of traffic_light_visualization Signed-off-by: Takagi, Isamu * Fix topic name of traffic_light_ssd_fine_detector Signed-off-by: Takagi, Isamu * Fix topic name of traffic_light_map_based_detector Signed-off-by: Takagi, Isamu * Fix lint traffic_light_recognition Signed-off-by: Takagi, Isamu * Fix lint traffic_light_ssd_fine_detector Signed-off-by: Takagi, Isamu * Fix lint traffic_light_classifier Signed-off-by: Takagi, Isamu * Fix lint traffic_light_classifier Signed-off-by: Takagi, Isamu * Fix lint traffic_light_ssd_fine_detector Signed-off-by: Takagi, Isamu * Fix issues in hdd_reader (#466) * Fix some issues detected by Coverity Scan and Clang-Tidy * Update launch command * Add more `close(new_sock)` * Simplify the definitions of struct * fix: re-construct laneletMapLayer for reindex RTree (#463) * Rviz overlay render fix (#461) * Moved painiting in SteeringAngle plugin to update() Signed-off-by: Adam Dabrowski * super class now back to MFD Signed-off-by: Adam Dabrowski * uncrustified Signed-off-by: Adam Dabrowski * acquire data in mutex Signed-off-by: Adam Dabrowski * back to RTD as superclass Signed-off-by: Adam Dabrowski * Rviz overlay render in update (#465) * Moved painiting in SteeringAngle plugin to update() Signed-off-by: Adam Dabrowski * super class now back to MFD Signed-off-by: Adam Dabrowski * uncrustified Signed-off-by: Adam Dabrowski * acquire data in mutex Signed-off-by: Adam Dabrowski * removed unnecessary includes and some dead code Signed-off-by: Adam Dabrowski * Adepted remaining vehicle plugin classes to render-in-update concept. Returned to MFD superclass Signed-off-by: Adam Dabrowski * restored RTD superclass Signed-off-by: Adam Dabrowski Co-authored-by: Takamasa Horibe Co-authored-by: tkimura4 Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com> Co-authored-by: Kazuki Miyahara Co-authored-by: Makoto Tokunaga Co-authored-by: Adam Dąbrowski * Unify Apache-2.0 license name (#1242) * Porting trajectory rviz plugin (#1295) * update trajectory rviz plugin to show velocity (#1257) * update trajectory rviz plugin to show velocity * use size_t instead of int to remove warning during compiling * not show velocity on rviz unless check button is enabled * modify visibility of velocity (#1258) * fix plugin * add dependency Co-authored-by: Takayuki Murooka Co-authored-by: tomoya.kimura * Fix msgs (#1379) * Fix msgs Signed-off-by: Kenji Miyake * [autoware_planning_rviz_plugin]: Fix lint Signed-off-by: wep21 Co-authored-by: wep21 * Fix topic name of autoware_perception_rviz_plugin (#1277) (#1479) Signed-off-by: Kenji Miyake Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Porting polar grid to ros2 (#1507) Signed-off-by: wep21 * Add dummy unknown publisher (#1470) * Add dummy unknown publisher Signed-off-by: Kenji Miyake Signed-off-by: wep21 * Fix lint Signed-off-by: wep21 Co-authored-by: Kenji Miyake * Add pre-commit (#1560) * add pre-commit * add pre-commit-config * add additional settings for private repository * use default pre-commit-config * update pre-commit setting * Ignore whitespace for line breaks in markdown * Update .github/workflows/pre-commit.yml Co-authored-by: Kazuki Miyahara * exclude svg * remove pretty-format-json * add double-quote-string-fixer * consider COLCON_IGNORE file when seaching modified package * format file * pre-commit fixes * Update pre-commit.yml * Update .pre-commit-config.yaml Co-authored-by: Kazuki Miyahara Co-authored-by: pre-commit Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Fix -Wunused-parameter (#1836) * Fix -Wunused-parameter Signed-off-by: Kenji Miyake * Fix mistake Signed-off-by: Kenji Miyake * fix spell * Fix lint issues Signed-off-by: Kenji Miyake * Ignore flake8 warnings Signed-off-by: Kenji Miyake Co-authored-by: Hiroki OTA * suppress warnings for common packages (#1891) * add maybe unused * add Werror * fix for uncrustify * add sort-package-xml hook in pre-commit (#1881) * add sort xml hook in pre-commit * change retval to exit_status * rename * add prettier plugin-xml * use early return * add license note * add tier4 license * restore prettier * change license order * move local hooks to public repo * move prettier-xml to pre-commit-hooks-ros * update version for bug-fix * apply pre-commit * add autoware_state_rviz_plugin (#2160) * initial commit * fix * use raw pointer * fix style * fix style * fix style * fix style * fix header arrangement * add gear check and prefix label (#2173) * add gear and prefix label * add subscription * fix for cpplint * add engage button and status (#2257) * fix style * add engage button and engage status * use api * fix for pre commit * fix for cpplint * fix * fix for cpplint * fix for cpplint * fix coding style * Add datetime panel (#2275) * Add datetime panel * Fix/ros time (#2276) * Fix ros time Signed-off-by: wep21 * Add icon Signed-off-by: wep21 Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> * add footprint in trajectory msg of rviz plugin (#1553) (#1684) * add footprint in trajectory msg of rviz plugin (#1553) * add footprint in trajectory msg of rviz plugin * update * trajectory -> footprint * update * add icons * rename trajectory footprint from footprint * add PathFootprint * update * Add min value Signed-off-by: wep21 Co-authored-by: Takayuki Murooka * Feature/trajectory point rviz plugin (#2123) * add trajectory point * set trajectory point view false by default * add pull over/out module (#2147) * Change formatter to clang-format and black (#2332) * Revert "Temporarily comment out pre-commit hooks" This reverts commit 748e9cdb145ce12f8b520bcbd97f5ff899fc28a3. * Replace ament_lint_common with autoware_lint_common Signed-off-by: Kenji Miyake * Remove ament_cmake_uncrustify and ament_clang_format Signed-off-by: Kenji Miyake * Apply Black Signed-off-by: Kenji Miyake * Apply clang-format Signed-off-by: Kenji Miyake * Fix build errors Signed-off-by: Kenji Miyake * Fix for cpplint * Fix include double quotes to angle brackets Signed-off-by: Kenji Miyake * Apply clang-format Signed-off-by: Kenji Miyake * Fix build errors Signed-off-by: Kenji Miyake * remove unused depends (#496) * Add COLCON_IGNORE (#500) Signed-off-by: Kenji Miyake * port planning rviz plugins (#492) * port planning rviz plugins * remove COLCON_IGNORE Co-authored-by: Takayuki Murooka * port autoware vehicle rviz plugin (#542) * [ polar grid ] add readme polar grid remove colcon ignore (#559) * remove ignore * add readme * fix invalid link * port autoware_state_rviz_plugin (#563) * remove COLCON_IGNORE form rviz plugins (#544) * port autoware_perception_rviz_plugin (#581) * add readme in rviz plugin (#591) * [autoware_vehicle_rviz_plugin/route_handler/simple_planning_simulator]fix some packages (#606) * fix console meter * fix velocity_history * fix route handler * change topic name * adding autoware_auto_perception_rviz_plugin (#574) * [152] Implement BoundingBoxArray rviz display plugin. * [285] Clear bounding box markers before adding new markers on new message * [274] Trajectory visualization plugin * raw types to sized type * ControllerTestingNode: added publish_state(), publish_trajectory(), no timer hack to start test, all init is init() * Squashed 'src/external/mpc/' changes from 8fc7cfdd..eaa5908b eaa5908b Merge branch 'input-weight-modify' into 'master' b9ee8e4f Update default mpc_controller_node parameters 8d15f49d Add weights to acceleration and steer controls; loosen simulation test case: git-subtree-dir: src/external/mpc git-subtree-split: eaa5908bdd987051a9dcd9c505f99bfd7f028547 * [#404] apply ament_auto macro to autoware_rviz_plugins * Adding missing dependency on rviz2. * Squashed 'src/external/autoware_auto_msgs/' changes from 56550efd..f40970ea f40970ea Adding velocity_mps to VehicleControlCommand. git-subtree-dir: src/external/autoware_auto_msgs git-subtree-split: f40970ead34d36a695b432dc37accff9d67c17e2 * Update copyright headers to transfer ownership to Autoware Foundation Signed-off-by: Juan Pablo Samper * Add CHANGELOG and update package versions for release Add CHANGELOG and update package versions for release * [#286] Parameterize boundingbox colors from rviz - Add visualization colours via Qt * [#813] use autoware_set_compile_options() for nearly all compiled tests - fix a few causes of warnings and disable warning flags as needed for other tests - set CXX_STANDARD strictly and only in a single place - add CMake flag `AUTOWARE_OPTIMIZATION_OF_SLOW_TARGETS`. Default: OFF - update building instructions and MR template - fix nasty initialization error of static constexpr member in `GenericState` of Kalman filter * [#910] remove private compilation warning ignore flags * [#900] Implement rviz plugin to visualize TrackedObjects * [#1110] Implement rviz plugin for DetectedObjects msg * Resolve "Clarify meaning of pose in *ObjectKinematics messages" * [#1221] Add co-developed entry to copyright * [#1282] Fix double free in ObjectPolygonDisplayBase rviz plugin * [#1355] Make DetectedObject shape corners be in object-local coordinates * porting AAP perception visualization from https://github.com/tier4/AutowareArchitectureProposal.iv/blob/main/perception/util/visualizer/dynamic_object_visualization/include/dynamic_object_visualization/dynamic_object_visualizer.hpp * rename to autoware_auto_perception_rviz_plugin * fix copyright * format code * fix typo * convert camel to snake case * Apply suggestions from code review Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> * change color * replace boost::optional to std::optional * add icons * set marker id to value corresponding to the upper 32 bits of uuid * format code * change motorsycle color * add uuid map to set marker id * format code * remove brief comment * fix lint error * fix include sort * format code * fix include * add autoware_auto_perception_rviz_plugin to pre commit excluded list Co-authored-by: Yunus Emre Caliskan Co-authored-by: Christopher Ho Co-authored-by: MIURA Yasuyuki Co-authored-by: Jit Ray Chowdhury Co-authored-by: Joshua Whitley Co-authored-by: Juan Pablo Samper Co-authored-by: Jilada Eccleston Co-authored-by: Frederik Beaujean Co-authored-by: Vincent Richard Co-authored-by: Gowtham Co-authored-by: Nikolai Morin Co-authored-by: Igor Bogoslavskyi Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> * add autoware_auto_perception_rviz_plugin README (#631) * fix readme sentence grammar (#634) * Auto/fix perception viz (#639) * add ns of uuid * remove dynamic_object_visualization * update to support velocity report header (#655) * update to support velocity report header Signed-off-by: Takamasa Horibe * Update simulator/simple_planning_simulator/src/simple_planning_simulator/simple_planning_simulator_core.cpp Co-authored-by: tkimura4 * use maybe_unused Signed-off-by: Takamasa Horibe * fix precommit Signed-off-by: Takamasa Horibe Co-authored-by: tkimura4 * adapt to actuation cmd/status as control msg (#646) * adapt to actuation cmd/status as control msg * fix readme * fix topics * fix remaing topics * as to pacmod interface * fix vehicle status * add header to twist * revert gyro_odometer_change * revert twist topic change * revert unchanged package * FIx vehicle status topic name/type (#658) * shift -> gear_status * twist -> velocity_status * Sync .auto branch with the latest branch in internal repository (#691) * add trajectory point offset in rviz plugin (#2270) * sync rc rc/v0.23.0 (#2258) * fix interpolation for insert point (#2228) * fix interpolation for insert point * to prev interpolation pkg * Revert "to prev interpolation pkg" This reverts commit 9eb145b5d36e297186015fb17c267ccd5b3c21ef. Co-authored-by: taikitanaka3 <65527974+taikitanaka3@users.noreply.github.com> Co-authored-by: taikitanaka * fix topic name (#2266) Signed-off-by: Takamasa Horibe * Add namespace to diag for dual_return_filter (#2269) * Add a function to make 'geometry_msgs::msg::TransformStamped' (#2250) * Add a function to make 'geometry_msgs::msg::TransformStamped' * Add 'child_frame_id' as an argument of 'pose2transform' * Simplify marker scale initialization (#2286) * Fix/crosswalk polygon (#2279) * extend crosswalk polygon * improve readability * fix polygon shape * Add warning when decel distance calculation fails (#2289) Signed-off-by: Makoto Kurihara * [motion_velocity_smoother] ignore debug print (#2292) * cosmetic change Signed-off-by: Takamasa Horibe * cahnge severity from WARN to DEBUG for debug info Signed-off-by: Takamasa Horibe * use util for stop_watch Signed-off-by: Takamasa Horibe * fix map based prediction (#2200) * fix map based prediction * fix format * change map based prediction * fix spells * fix spells in comments * fix for cpplint * fix some problems * fix format and code for clang-tidy * fix space for cpplint * Update Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md * fix vector access method * fix readme format * add parameter * Update perception/object_recognition/prediction/map_based_prediction/Readme.md Co-authored-by: Kazuki Miyahara * Update perception/object_recognition/prediction/map_based_prediction/Readme.md Co-authored-by: Kazuki Miyahara * Update perception/object_recognition/prediction/map_based_prediction/Readme.md Co-authored-by: Kazuki Miyahara * Update Readme.md * Update perception/object_recognition/prediction/map_based_prediction/Readme.md Co-authored-by: Kazuki Miyahara Co-authored-by: tkimura4 Co-authored-by: Kazuki Miyahara * remove failure condition for 0 velocity trajectory (#2295) Signed-off-by: Takamasa Horibe * [mpc_follower] remove stop distance condition from stopState decision (#1916) * [mpc_follower] remove stop distance condition from stopState decision Signed-off-by: Takamasa Horibe * add invalid index handling Signed-off-by: Takamasa Horibe * Move the debug marker initialization part to another file (#2288) * Move the debug marker initialization part to 'debug.cpp' * Make 'isLocalOptimalSolutionOscillation' independent from 'NDTScanMatcher' (#2300) * Remove an unused function 'getTransform' (#2301) * Simplify iteration of initial poses (#2310) * Make a transform object const (#2311) * Represent poses in 'std::vector' instead of 'geometry_msgs::msg::PoseArray' (#2312) * Feature/no stopping area (#2163) * add no stopping area module to behavior velocity planner * apply utils * add polygon interpolation module order stopline around area is considered * devide jpass udge with stop line polygon * update docs * rename file name * update to latest * minor change for marker * update license Co-authored-by: Yukihiro Saito * update license Co-authored-by: Yukihiro Saito * update license Co-authored-by: Yukihiro Saito * update license Co-authored-by: Yukihiro Saito * minor fix * add parameter tuning at experiment * update readme * format doc * apply comments * add exception gurd * cosmetic change * fix ament * fix typo and remove for statement * & to " " * better ns * return pass judge param * add missing stoppable condition * add clear pass judge and stoppable flag * add comment * precommit fix * cpplint Co-authored-by: Yukihiro Saito * sync rc rc/v0.23.0 (#2281) * Fix side shift planner (#2171) (#2172) * add print debug Signed-off-by: TakaHoribe * remove forward shift points when adding new point Signed-off-by: TakaHoribe * remove debug print Signed-off-by: TakaHoribe * format Signed-off-by: TakaHoribe * Fix remove threshold Co-authored-by: Fumiya Watanabe Co-authored-by: Takamasa Horibe * Fix/pull out and pull over (#2175) * delete unnecessary check * fix condition of starting pull out * Add emergency status API (#2174) (#2182) * Fix/mpc reset prev result (#2185) (#2195) * reset prev result * clean code * reset only raw_steer_cmd * Update control/mpc_follower/src/mpc_follower_core.cpp Co-authored-by: Takamasa Horibe Co-authored-by: Takamasa Horibe Co-authored-by: Takamasa Horibe * [hotfix] 1 path point exception after resampling (#2204) * fix 1 path point exception after resampling Signed-off-by: TakaHoribe * Apply suggestions from code review * Apply suggestions from code review Co-authored-by: Takamasa Horibe Co-authored-by: tkimura4 * [hotfix] Fix lane ids (#2211) * Fix lane ids * Prevent acceleration on avoidance (#2214) * prevent acceleration on avoidance Signed-off-by: TakaHoribe * fix param name Signed-off-by: TakaHoribe * parametrize avoidance acc Signed-off-by: Takamasa Horibe * change param name Signed-off-by: Takamasa Horibe * fix typo Signed-off-by: Takamasa Horibe * Fix qos in roi cluster fusion (#2218) * fix confidence (#2220) * too high confidence (#2229) * Fix/obstacle stop 0.23.0 (#2232) * fix unexpected slow down in sharp curves (#2181) * Fix/insert implementation (#2186) Co-authored-by: Satoshi OTA <44889564+satoshi-ota@users.noreply.github.com> * [hotfix] Remove exception in avoidance module (#2233) * Remove exception * Fix clock * Remove blank line * Update traffic light state if ref stop point is ahead of previous one (#2197) Signed-off-by: wep21 * fix interpolation for insert point (#2228) * fix interpolation for insert point * to prev interpolation pkg * fix index (#2265) * turn signal calculation (#2280) * add turn signal funtion in path shifter * add ros parameters Co-authored-by: Fumiya Watanabe Co-authored-by: Takamasa Horibe Co-authored-by: tkimura4 Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com> Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> Co-authored-by: Yukihiro Saito Co-authored-by: Satoshi OTA <44889564+satoshi-ota@users.noreply.github.com> Co-authored-by: taikitanaka3 <65527974+taikitanaka3@users.noreply.github.com> Co-authored-by: Sugatyon <32741405+Sugatyon@users.noreply.github.com> * [behavior_path_planner] fix sudden path change around ego (#2305) (#2318) * fix return-from-ego shift point generation logic Signed-off-by: Takamasa Horibe * change param for trimSimilarGradShiftPoint Signed-off-by: Takamasa Horibe * add comment for issue Signed-off-by: Takamasa Horibe * update comment Signed-off-by: Takamasa Horibe * replace code with function (logic has not changed) Signed-off-by: Takamasa Horibe * move func to cpp Signed-off-by: Takamasa Horibe * add comment for issue Signed-off-by: Takamasa Horibe * fix typo Signed-off-by: Takamasa Horibe * Update planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/src/scene_module/avoidance/avoidance_module.cpp Co-authored-by: Kazuki Miyahara * Update planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/src/scene_module/avoidance/avoidance_module.cpp Co-authored-by: Kazuki Miyahara Co-authored-by: Kazuki Miyahara Co-authored-by: Takamasa Horibe Co-authored-by: Kazuki Miyahara * Add functions to make stamped scalar messages (#2317) * Fix/object yaw in intersection module (#2294) * fix object orientation * fix function name * add guard (#2321) * reduce cost (double to float) (#2298) * Add detail collision check (#2274) * Add detail collision check Signed-off-by: wep21 * Remove unused function Signed-off-by: wep21 * Fix arc length Signed-off-by: wep21 * Seperate time margin Signed-off-by: wep21 * Fix parameter name Signed-off-by: wep21 * Update Readme Signed-off-by: wep21 * Address review: Add comment for TimeDistanceArray Signed-off-by: wep21 * Run pre-commit Signed-off-by: wep21 * Fix cpplint Signed-off-by: wep21 * Add return for empty polygon Signed-off-by: wep21 * update CenterPoint (#2222) * update to model trained by mmdet3d * add vizualizer (debug) * for multi-frame inputs * chagne config * use autoware_utils::pi * project specific model and param * rename vfe -> encoder * rename general to common * update download link * update * fix * rename model_name * change training toolbox link * chage lint package * fix test error * commit suggestion * Feature/lane change detection (#2331) * add old information deleter * fix access bug * change to deque * update obstacle buffer * fix some bugs * add lane change detector * make a update lanelet function * fix code style * parameterize essential values * Update perception/object_recognition/prediction/map_based_prediction/src/map_based_prediction_ros.cpp Co-authored-by: Kazuki Miyahara * fix slash position * remove unnecessary lines * fix format * fix format * change to new enum * fix format * fix typo and add guard * change funciton name * add lane change description Co-authored-by: Kazuki Miyahara * Add Planning Evaluator (#2293) * Add prototype planning evaluator Produced data for dist between points, curvature, and relative angle * Cleanup the code to make adding metrics easier * Add remaining basic metrics (length, duration, vel, accel, jerk) * Add motion_evaluator to evaluate the actual ego motion + code cleanup * Add deviation metrics * Add naive stability metric * Handle invalid stat (TODO: fix the output file formatting) * Add parameter file and cleanup * Add basic obstacle metric (TTC not yet implemented) and fix output file format * Add basic time to collision * Add lateral-distance based stability metric * Add check (at init time) that metrics' maps are complete * Publish metrics as ParamaterDeclaration msg (for openscenario) * Use lookahead and start from ego_pose when calculating stability metrics * Code cleanup * Fix lint * Add tests * Fix bug with Frechet dist and the last traj point * Finish implementing tests * Fix lint * Code cleanup * Update README.md * Remove unused metric * Change msg type of published metrics to DiagnosticArray * fix format to fix pre-commit check Signed-off-by: Takamasa Horibe * fix yaml format to fix pre-commit check Signed-off-by: Takamasa Horibe * fix yaml format Signed-off-by: Takamasa Horibe * apply clang-format Signed-off-by: Takamasa Horibe * apply clang-format Signed-off-by: Takamasa Horibe * Update planning/planning_diagnostics/planning_evaluator/include/planning_evaluator/planning_evaluator_node.hpp * Update planning/planning_diagnostics/planning_evaluator/test/test_planning_evaluator_node.cpp * Update planning/planning_diagnostics/planning_evaluator/test/test_planning_evaluator_node.cpp * change lint format to autoware_lint_common Signed-off-by: Takamasa Horibe Co-authored-by: Takamasa Horibe * Add keep braking function at driving state (#2346) * Add keep braking function at driving state Signed-off-by: Makoto Kurihara * Remove debug messages Signed-off-by: Makoto Kurihara * Fix format Signed-off-by: Makoto Kurihara * Change diag_updater's pediod from default to 0.1sec (#2348) * add cross judgement and common signal function (#2319) * merge branch turn_signal_common * add turn signal function in signal decider * add cross judge in path_utilities and delete from turn_signal_decider * remove original signal calculation in lane change * omit substitution * replace turn signal decider in pull over function * modify cross judge logic * replace turn signal decider in avoidance * add readme of turn signal * update * delete print debug * update * delete lane change decider in path shifter * delete blank line * fix indent * fix typo * fix typo * decrease nest * run pre commit * Add 0 limit at forward jerk velocity filter (#2340) Signed-off-by: Makoto Kurihara * add time offset param to point cloud concatenation (#2303) * add offset param * clang-format Co-authored-by: Akihito OHSATO * Feature/add doc for keep braking function at driving state (#2366) * Add the description of brake keeping Signed-off-by: Makoto Kurihara * Add the english document Signed-off-by: Makoto Kurihara * Improve description Signed-off-by: Makoto Kurihara * Add english description Signed-off-by: Makoto Kurihara * Fix include files (#2339) Signed-off-by: Kenji Miyake * fix behavior intersection module * fix behavior no stopping area module * fix planning_evaluator * fix motion_velocity_smoother * rename variable * Revert "[mpc_follower] remove stop distance condition from stopState decision (#1916)" This reverts commit ff4f0b5a844d1f835f1b93bd3b36a76747b0cd02. * Revert "Add keep braking function at driving state (#2346)" This reverts commit f0478187db4c28bf6092c198723dcc5ec11a9c70. * Revert "Feature/add doc for keep braking function at driving state (#2366)" This reverts commit 66de2f3924a479049fce2d5c5c6b579cacbd3e49. * Fix orientation availability in centerpoint Signed-off-by: wep21 * fix test_trajectory.cpp * add target link libraries * Use .auto msg in test code for planniing evaluator Signed-off-by: wep21 * fix include Signed-off-by: wep21 Co-authored-by: Takayuki Murooka Co-authored-by: autoware-iv-sync-ci[bot] <87871706+autoware-iv-sync-ci[bot]@users.noreply.github.com> Co-authored-by: taikitanaka3 <65527974+taikitanaka3@users.noreply.github.com> Co-authored-by: taikitanaka Co-authored-by: Takamasa Horibe Co-authored-by: Takeshi Miura <57553950+1222-takeshi@users.noreply.github.com> Co-authored-by: Takeshi Ishita Co-authored-by: Satoshi OTA <44889564+satoshi-ota@users.noreply.github.com> Co-authored-by: Makoto Kurihara Co-authored-by: purewater0901 <43805014+purewater0901@users.noreply.github.com> Co-authored-by: tkimura4 Co-authored-by: Kazuki Miyahara Co-authored-by: Yukihiro Saito Co-authored-by: Fumiya Watanabe Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com> Co-authored-by: Sugatyon <32741405+Sugatyon@users.noreply.github.com> Co-authored-by: s-murakami-esol <81723883+s-murakami-esol@users.noreply.github.com> Co-authored-by: Yusuke Muramatsu Co-authored-by: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com> Co-authored-by: Shunsuke Miura <37187849+miursh@users.noreply.github.com> Co-authored-by: Shinnosuke Hirakawa <8327162+0x126@users.noreply.github.com> Co-authored-by: Akihito OHSATO Co-authored-by: Kenji Miyake * [autoware_auto_perception_rviz_plugin]fix bug (#721) * fix perception_marker * fix missing commit * apply format * patch for PR721 (#722) * fix id_map erase operation * fix code to use c++11 function * update tracked_objects_display * fix bug Co-authored-by: Taichi Higashide * fix rviz plugin (#743) * move plugin packages * add ignore file to apply pre-commit Co-authored-by: mitsudome-r Co-authored-by: Servando <43142004+sgermanserrano@users.noreply.github.com> Co-authored-by: Nikolai Morin Co-authored-by: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Co-authored-by: nik-tier4 <71747268+nik-tier4@users.noreply.github.com> Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> Co-authored-by: Yukihiro Saito Co-authored-by: Kazuki Miyahara Co-authored-by: Kenji Miyake Co-authored-by: Takamasa Horibe Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com> Co-authored-by: Makoto Tokunaga Co-authored-by: Adam Dąbrowski Co-authored-by: Keisuke Shima Co-authored-by: Takayuki Murooka Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Co-authored-by: wep21 Co-authored-by: Keisuke Shima <19993104+KeisukeShima@users.noreply.github.com> Co-authored-by: pre-commit Co-authored-by: Hiroki OTA Co-authored-by: kyoichi sugahara <81.s.kyo.19@gmail.com> Co-authored-by: taikitanaka3 <65527974+taikitanaka3@users.noreply.github.com> Co-authored-by: Takayuki Murooka Co-authored-by: Takeshi Miura <57553950+1222-takeshi@users.noreply.github.com> Co-authored-by: Taichi Higashide Co-authored-by: Yunus Emre Caliskan Co-authored-by: Christopher Ho Co-authored-by: MIURA Yasuyuki Co-authored-by: Jit Ray Chowdhury Co-authored-by: Joshua Whitley Co-authored-by: Juan Pablo Samper Co-authored-by: Jilada Eccleston Co-authored-by: Frederik Beaujean Co-authored-by: Vincent Richard Co-authored-by: Gowtham Co-authored-by: Nikolai Morin Co-authored-by: Igor Bogoslavskyi Co-authored-by: autoware-iv-sync-ci[bot] <87871706+autoware-iv-sync-ci[bot]@users.noreply.github.com> Co-authored-by: taikitanaka Co-authored-by: Takeshi Ishita Co-authored-by: Satoshi OTA <44889564+satoshi-ota@users.noreply.github.com> Co-authored-by: Makoto Kurihara Co-authored-by: purewater0901 <43805014+purewater0901@users.noreply.github.com> Co-authored-by: Fumiya Watanabe Co-authored-by: Sugatyon <32741405+Sugatyon@users.noreply.github.com> Co-authored-by: s-murakami-esol <81723883+s-murakami-esol@users.noreply.github.com> Co-authored-by: Yusuke Muramatsu Co-authored-by: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com> Co-authored-by: Shunsuke Miura <37187849+miursh@users.noreply.github.com> Co-authored-by: Shinnosuke Hirakawa <8327162+0x126@users.noreply.github.com> Co-authored-by: Akihito OHSATO --- .pre-commit-config.yaml | 2 +- .../CMakeLists.txt | 84 +++ .../README.md | 62 +++ .../icons/classes/DetectedObjects.png | Bin 0 -> 18815 bytes .../icons/classes/PredictedObjects.png | Bin 0 -> 18815 bytes .../icons/classes/TrackedObjects.png | Bin 0 -> 18815 bytes ...ected-object-visualization-description.jpg | Bin 0 -> 16020 bytes ...icted-object-visualization-description.jpg | Bin 0 -> 30237 bytes ...acked-object-visualization-description.jpg | Bin 0 -> 29033 bytes .../include/common/color_alpha_property.hpp | 56 ++ .../detected_objects_display.hpp | 45 ++ .../object_polygon_detail.hpp | 208 +++++++ .../object_polygon_display_base.hpp | 368 +++++++++++++ .../predicted_objects_display.hpp | 104 ++++ .../tracked_objects_display.hpp | 103 ++++ .../include/visibility_control.hpp | 43 ++ .../package.xml | 26 + .../plugins_description.xml | 26 + .../src/common/color_alpha_property.cpp | 50 ++ .../detected_objects_display.cpp | 65 +++ .../object_polygon_detail.cpp | 508 ++++++++++++++++++ .../predicted_objects_display.cpp | 149 +++++ .../tracked_objects_display.cpp | 115 ++++ .../CMakeLists.txt | 40 ++ .../autoware_datetime_rviz_plugin/README.md | 16 + .../icons/classes/AutowareDateTimePanel.png | Bin 0 -> 561 bytes .../images/select_datetime_plugin.png | Bin 0 -> 66867 bytes .../images/select_panels.png | Bin 0 -> 67237 bytes .../autoware_datetime_rviz_plugin/package.xml | 26 + .../plugins/plugin_description.xml | 9 + .../src/autoware_datetime_panel.cpp | 66 +++ .../src/autoware_datetime_panel.hpp | 41 ++ .../CMakeLists.txt | 43 ++ .../README.md | 38 ++ .../icons/classes/PoseHistory.png | Bin 0 -> 18815 bytes .../images/select_add.png | Bin 0 -> 18359 bytes .../images/select_localization_plugin.png | Bin 0 -> 32651 bytes .../images/select_topic_name.png | Bin 0 -> 14723 bytes .../package.xml | 29 + .../plugins/plugin_description.xml | 9 + .../src/pose_history/pose_history_display.cpp | 141 +++++ .../src/pose_history/pose_history_display.hpp | 81 +++ .../CMakeLists.txt | 46 ++ .../autoware_perception_rviz_plugin/README.md | 79 +++ .../icons/classes/CarInitialPoseTool.png | Bin 0 -> 18815 bytes .../icons/classes/DeleteAllObjectsTool.png | Bin 0 -> 18815 bytes .../classes/PedestrianInitialPoseTool.png | Bin 0 -> 18815 bytes .../icons/classes/UnknownInitialPoseTool.png | Bin 0 -> 18815 bytes .../images/select_add.png | Bin 0 -> 53086 bytes .../images/select_dummy_car.png | Bin 0 -> 53764 bytes .../images/select_plugin.png | Bin 0 -> 37024 bytes .../package.xml | 29 + .../plugins/plugin_description.xml | 18 + .../src/tools/car_pose.cpp | 166 ++++++ .../src/tools/car_pose.hpp | 94 ++++ .../src/tools/delete_all_objects.cpp | 100 ++++ .../src/tools/delete_all_objects.hpp | 88 +++ .../src/tools/pedestrian_pose.cpp | 171 ++++++ .../src/tools/pedestrian_pose.hpp | 93 ++++ .../src/tools/unknown_pose.cpp | 166 ++++++ .../src/tools/unknown_pose.hpp | 88 +++ .../CMakeLists.txt | 54 ++ .../autoware_planning_rviz_plugin/README.md | 118 ++++ .../icons/classes/MaxVelocity.png | Bin 0 -> 18815 bytes .../icons/classes/MissionCheckpointTool.png | Bin 0 -> 18815 bytes .../icons/classes/Path.png | Bin 0 -> 18815 bytes .../icons/classes/PathFootprint.png | Bin 0 -> 18815 bytes .../icons/classes/Trajectory.png | Bin 0 -> 18815 bytes .../icons/classes/TrajectoryFootprint.png | Bin 0 -> 18815 bytes .../images/select_add.png | Bin 0 -> 18359 bytes .../images/select_planning_plugin.png | Bin 0 -> 90723 bytes .../images/select_topic_name.png | Bin 0 -> 10245 bytes .../mission_checkpoint/mission_checkpoint.hpp | 93 ++++ .../include/path/display.hpp | 84 +++ .../include/path_footprint/display.hpp | 84 +++ .../include/trajectory/display.hpp | 90 ++++ .../include/trajectory_footprint/display.hpp | 91 ++++ .../autoware_planning_rviz_plugin/package.xml | 32 ++ .../plugins/plugin_description.xml | 31 ++ .../mission_checkpoint/mission_checkpoint.cpp | 117 ++++ .../src/path/display.cpp | 254 +++++++++ .../src/path_footprint/display.cpp | 185 +++++++ .../src/tools/jsk_overlay_utils.cpp | 193 +++++++ .../src/tools/jsk_overlay_utils.hpp | 127 +++++ .../src/tools/max_velocity.cpp | 189 +++++++ .../src/tools/max_velocity.hpp | 82 +++ .../src/trajectory/display.cpp | 317 +++++++++++ .../src/trajectory_footprint/display.cpp | 250 +++++++++ .../autoware_state_rviz_plugin/CMakeLists.txt | 42 ++ common/autoware_state_rviz_plugin/README.md | 32 ++ .../icons/classes/AutowareStatePanel.png | Bin 0 -> 18815 bytes .../images/select_engage.png | Bin 0 -> 46355 bytes .../images/select_panels.png | Bin 0 -> 67237 bytes .../images/select_state_plugin.png | Bin 0 -> 86154 bytes common/autoware_state_rviz_plugin/package.xml | 30 ++ .../plugins/plugin_description.xml | 9 + .../src/autoware_state_panel.cpp | 199 +++++++ .../src/autoware_state_panel.hpp | 68 +++ .../CMakeLists.txt | 55 ++ common/autoware_vehicle_rviz_plugin/README.md | 78 +++ .../icons/classes/ConsoleMeter.png | Bin 0 -> 18815 bytes .../icons/classes/SteeringAngle.png | Bin 0 -> 18815 bytes .../icons/classes/TurnSignal.png | Bin 0 -> 18815 bytes .../icons/classes/VelocityHistory.png | Bin 0 -> 18815 bytes .../images/handle.png | Bin 0 -> 11237 bytes .../images/select_add.png | Bin 0 -> 18359 bytes .../images/select_topic_name.png | Bin 0 -> 8342 bytes .../images/select_vehicle_plugin.png | Bin 0 -> 77095 bytes .../autoware_vehicle_rviz_plugin/package.xml | 26 + .../plugins/plugin_description.xml | 18 + .../src/tools/console_meter.cpp | 216 ++++++++ .../src/tools/console_meter.hpp | 93 ++++ .../src/tools/jsk_overlay_utils.cpp | 190 +++++++ .../src/tools/jsk_overlay_utils.hpp | 124 +++++ .../src/tools/steering_angle.cpp | 181 +++++++ .../src/tools/steering_angle.hpp | 73 +++ .../src/tools/turn_signal.cpp | 185 +++++++ .../src/tools/turn_signal.hpp | 70 +++ .../src/tools/velocity_history.cpp | 211 ++++++++ .../src/tools/velocity_history.hpp | 80 +++ common/polar_grid/CMakeLists.txt | 49 ++ common/polar_grid/Readme.md | 17 + .../icons/classes/PolarGridDisplay.png | Bin 0 -> 18815 bytes common/polar_grid/package.xml | 28 + .../polar_grid/plugins/plugin_description.xml | 6 + common/polar_grid/src/polar_grid_display.cpp | 240 +++++++++ common/polar_grid/src/polar_grid_display.hpp | 103 ++++ 127 files changed, 8504 insertions(+), 1 deletion(-) create mode 100644 common/autoware_auto_perception_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_auto_perception_rviz_plugin/README.md create mode 100644 common/autoware_auto_perception_rviz_plugin/icons/classes/DetectedObjects.png create mode 100644 common/autoware_auto_perception_rviz_plugin/icons/classes/PredictedObjects.png create mode 100644 common/autoware_auto_perception_rviz_plugin/icons/classes/TrackedObjects.png create mode 100644 common/autoware_auto_perception_rviz_plugin/images/detected-object-visualization-description.jpg create mode 100644 common/autoware_auto_perception_rviz_plugin/images/predicted-object-visualization-description.jpg create mode 100644 common/autoware_auto_perception_rviz_plugin/images/tracked-object-visualization-description.jpg create mode 100644 common/autoware_auto_perception_rviz_plugin/include/common/color_alpha_property.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/include/object_detection/detected_objects_display.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_detail.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_display_base.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/include/object_detection/predicted_objects_display.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/include/object_detection/tracked_objects_display.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/include/visibility_control.hpp create mode 100644 common/autoware_auto_perception_rviz_plugin/package.xml create mode 100644 common/autoware_auto_perception_rviz_plugin/plugins_description.xml create mode 100644 common/autoware_auto_perception_rviz_plugin/src/common/color_alpha_property.cpp create mode 100644 common/autoware_auto_perception_rviz_plugin/src/object_detection/detected_objects_display.cpp create mode 100644 common/autoware_auto_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp create mode 100644 common/autoware_auto_perception_rviz_plugin/src/object_detection/predicted_objects_display.cpp create mode 100644 common/autoware_auto_perception_rviz_plugin/src/object_detection/tracked_objects_display.cpp create mode 100644 common/autoware_datetime_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_datetime_rviz_plugin/README.md create mode 100644 common/autoware_datetime_rviz_plugin/icons/classes/AutowareDateTimePanel.png create mode 100644 common/autoware_datetime_rviz_plugin/images/select_datetime_plugin.png create mode 100644 common/autoware_datetime_rviz_plugin/images/select_panels.png create mode 100644 common/autoware_datetime_rviz_plugin/package.xml create mode 100644 common/autoware_datetime_rviz_plugin/plugins/plugin_description.xml create mode 100644 common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.cpp create mode 100644 common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.hpp create mode 100644 common/autoware_localization_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_localization_rviz_plugin/README.md create mode 100644 common/autoware_localization_rviz_plugin/icons/classes/PoseHistory.png create mode 100644 common/autoware_localization_rviz_plugin/images/select_add.png create mode 100644 common/autoware_localization_rviz_plugin/images/select_localization_plugin.png create mode 100644 common/autoware_localization_rviz_plugin/images/select_topic_name.png create mode 100644 common/autoware_localization_rviz_plugin/package.xml create mode 100644 common/autoware_localization_rviz_plugin/plugins/plugin_description.xml create mode 100644 common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.cpp create mode 100644 common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.hpp create mode 100644 common/autoware_perception_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_perception_rviz_plugin/README.md create mode 100644 common/autoware_perception_rviz_plugin/icons/classes/CarInitialPoseTool.png create mode 100644 common/autoware_perception_rviz_plugin/icons/classes/DeleteAllObjectsTool.png create mode 100644 common/autoware_perception_rviz_plugin/icons/classes/PedestrianInitialPoseTool.png create mode 100644 common/autoware_perception_rviz_plugin/icons/classes/UnknownInitialPoseTool.png create mode 100644 common/autoware_perception_rviz_plugin/images/select_add.png create mode 100644 common/autoware_perception_rviz_plugin/images/select_dummy_car.png create mode 100644 common/autoware_perception_rviz_plugin/images/select_plugin.png create mode 100644 common/autoware_perception_rviz_plugin/package.xml create mode 100644 common/autoware_perception_rviz_plugin/plugins/plugin_description.xml create mode 100644 common/autoware_perception_rviz_plugin/src/tools/car_pose.cpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/car_pose.hpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.cpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.hpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.cpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.hpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/unknown_pose.cpp create mode 100644 common/autoware_perception_rviz_plugin/src/tools/unknown_pose.hpp create mode 100644 common/autoware_planning_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_planning_rviz_plugin/README.md create mode 100644 common/autoware_planning_rviz_plugin/icons/classes/MaxVelocity.png create mode 100644 common/autoware_planning_rviz_plugin/icons/classes/MissionCheckpointTool.png create mode 100644 common/autoware_planning_rviz_plugin/icons/classes/Path.png create mode 100644 common/autoware_planning_rviz_plugin/icons/classes/PathFootprint.png create mode 100644 common/autoware_planning_rviz_plugin/icons/classes/Trajectory.png create mode 100644 common/autoware_planning_rviz_plugin/icons/classes/TrajectoryFootprint.png create mode 100644 common/autoware_planning_rviz_plugin/images/select_add.png create mode 100644 common/autoware_planning_rviz_plugin/images/select_planning_plugin.png create mode 100644 common/autoware_planning_rviz_plugin/images/select_topic_name.png create mode 100644 common/autoware_planning_rviz_plugin/include/mission_checkpoint/mission_checkpoint.hpp create mode 100644 common/autoware_planning_rviz_plugin/include/path/display.hpp create mode 100644 common/autoware_planning_rviz_plugin/include/path_footprint/display.hpp create mode 100644 common/autoware_planning_rviz_plugin/include/trajectory/display.hpp create mode 100644 common/autoware_planning_rviz_plugin/include/trajectory_footprint/display.hpp create mode 100644 common/autoware_planning_rviz_plugin/package.xml create mode 100644 common/autoware_planning_rviz_plugin/plugins/plugin_description.xml create mode 100644 common/autoware_planning_rviz_plugin/src/mission_checkpoint/mission_checkpoint.cpp create mode 100644 common/autoware_planning_rviz_plugin/src/path/display.cpp create mode 100644 common/autoware_planning_rviz_plugin/src/path_footprint/display.cpp create mode 100644 common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.cpp create mode 100644 common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.hpp create mode 100644 common/autoware_planning_rviz_plugin/src/tools/max_velocity.cpp create mode 100644 common/autoware_planning_rviz_plugin/src/tools/max_velocity.hpp create mode 100644 common/autoware_planning_rviz_plugin/src/trajectory/display.cpp create mode 100644 common/autoware_planning_rviz_plugin/src/trajectory_footprint/display.cpp create mode 100644 common/autoware_state_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_state_rviz_plugin/README.md create mode 100644 common/autoware_state_rviz_plugin/icons/classes/AutowareStatePanel.png create mode 100644 common/autoware_state_rviz_plugin/images/select_engage.png create mode 100644 common/autoware_state_rviz_plugin/images/select_panels.png create mode 100644 common/autoware_state_rviz_plugin/images/select_state_plugin.png create mode 100644 common/autoware_state_rviz_plugin/package.xml create mode 100644 common/autoware_state_rviz_plugin/plugins/plugin_description.xml create mode 100644 common/autoware_state_rviz_plugin/src/autoware_state_panel.cpp create mode 100644 common/autoware_state_rviz_plugin/src/autoware_state_panel.hpp create mode 100644 common/autoware_vehicle_rviz_plugin/CMakeLists.txt create mode 100644 common/autoware_vehicle_rviz_plugin/README.md create mode 100644 common/autoware_vehicle_rviz_plugin/icons/classes/ConsoleMeter.png create mode 100644 common/autoware_vehicle_rviz_plugin/icons/classes/SteeringAngle.png create mode 100644 common/autoware_vehicle_rviz_plugin/icons/classes/TurnSignal.png create mode 100644 common/autoware_vehicle_rviz_plugin/icons/classes/VelocityHistory.png create mode 100644 common/autoware_vehicle_rviz_plugin/images/handle.png create mode 100644 common/autoware_vehicle_rviz_plugin/images/select_add.png create mode 100644 common/autoware_vehicle_rviz_plugin/images/select_topic_name.png create mode 100644 common/autoware_vehicle_rviz_plugin/images/select_vehicle_plugin.png create mode 100644 common/autoware_vehicle_rviz_plugin/package.xml create mode 100644 common/autoware_vehicle_rviz_plugin/plugins/plugin_description.xml create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/console_meter.cpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/console_meter.hpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.cpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.hpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.cpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.hpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.cpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.hpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.cpp create mode 100644 common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.hpp create mode 100644 common/polar_grid/CMakeLists.txt create mode 100644 common/polar_grid/Readme.md create mode 100644 common/polar_grid/icons/classes/PolarGridDisplay.png create mode 100644 common/polar_grid/package.xml create mode 100644 common/polar_grid/plugins/plugin_description.xml create mode 100644 common/polar_grid/src/polar_grid_display.cpp create mode 100644 common/polar_grid/src/polar_grid_display.hpp diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cac45cabb096a..cc976d668d7d7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -83,4 +83,4 @@ repos: args: ["--quiet"] exclude: ".cu" -exclude: ".svg" +exclude: ".svg|common/autoware_auto_perception_rviz_plugin" diff --git a/common/autoware_auto_perception_rviz_plugin/CMakeLists.txt b/common/autoware_auto_perception_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..d85b408f4cdb6 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/CMakeLists.txt @@ -0,0 +1,84 @@ +# Copyright 2019 The Autoware Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +#    http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Co-developed by Tier IV, Inc. and Apex.AI, Inc. + +cmake_minimum_required(VERSION 3.5) +project(autoware_auto_perception_rviz_plugin) + +#dependencies +find_package(ament_cmake_auto REQUIRED) +find_package(Qt5 REQUIRED COMPONENTS Widgets) +ament_auto_find_build_dependencies() + +set(OD_PLUGIN_LIB_SRC + src/object_detection/detected_objects_display.cpp + src/object_detection/tracked_objects_display.cpp + src/object_detection/predicted_objects_display.cpp +) + +set(OD_PLUGIN_LIB_HEADERS + include/visibility_control.hpp +) +set(OD_PLUGIN_LIB_HEADERS_TO_WRAP + include/object_detection/detected_objects_display.hpp + include/object_detection/tracked_objects_display.hpp + include/object_detection/predicted_objects_display.hpp +) + +set(COMMON_HEADERS + include/common/color_alpha_property.hpp + include/object_detection/object_polygon_detail.hpp + include/object_detection/object_polygon_display_base.hpp +) + +set(COMMON_SRC + src/common/color_alpha_property.cpp + src/object_detection/object_polygon_detail.cpp +) + +foreach(header "${OD_PLUGIN_LIB_HEADERS_TO_WRAP}") + qt5_wrap_cpp(OD_PLUGIN_LIB_HEADERS_MOC "${header}") +endforeach() + +ament_auto_add_library(${PROJECT_NAME} SHARED + ${COMMON_HEADERS} + ${COMMON_SRC} + ${OD_PLUGIN_LIB_HEADERS} + ${OD_PLUGIN_LIB_HEADERS_MOC} + ${OD_PLUGIN_LIB_SRC} +) +target_link_libraries(${PROJECT_NAME} + rviz_common::rviz_common + Qt5::Widgets +) +target_include_directories(${PROJECT_NAME} PRIVATE include) + +# Settings to improve the build as suggested on https://github.com/ros2/rviz/blob/ros2/docs/plugin_development.md +target_compile_definitions(${PROJECT_NAME} PUBLIC "PLUGINLIB__DISABLE_BOOST_FUNCTIONS") +target_compile_definitions(${PROJECT_NAME} PRIVATE "OBJECT_DETECTION_PLUGINS_BUILDING_LIBRARY") + +# Export the plugin to be imported by rviz2 +pluginlib_export_plugin_description_file(rviz_common plugins_description.xml) + +if(BUILD_TESTING) + # run linters + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons +) diff --git a/common/autoware_auto_perception_rviz_plugin/README.md b/common/autoware_auto_perception_rviz_plugin/README.md new file mode 100644 index 0000000000000..68f96d654e258 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/README.md @@ -0,0 +1,62 @@ +# autoware_auto_perception_plugin + +## Purpose + +It is an rviz plugin for visualizing the result from perception module. This package is based on the implementation of the rviz plugin developed by Autoware.Auto. + +See Autoware.Auto design documentation for the original design philosophy. [[1]](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/-/blob/master/src/tools/visualization/autoware_rviz_plugins) + + + +## Input Types / Visualization Results + +### DetectedObjects + +#### Input Types + +| Name | Type | Description | +| ---- | ----------------------------------------------------- | ---------------------- | +| | `autoware_auto_perception_msgs::msg::DetectedObjects` | detection result array | + +#### Visualization Result + +![](./images/detected-object-visualization-description.jpg) + +### TrackedObjects + +#### Input Types + +| Name | Type | Description | +| ---- | ---------------------------------------------------- | --------------------- | +| | `autoware_auto_perception_msgs::msg::TrackedObjects` | tracking result array | + +#### Visualization Result + +Overwrite tracking results with detection results. + +![](./images/tracked-object-visualization-description.jpg) + +### PredictedObjects + +#### Input Types + +| Name | Type | Description | +| ---- | ------------------------------------------------------ | ----------------------- | +| | `autoware_auto_perception_msgs::msg::PredictedObjects` | prediction result array | + +#### Visualization Result + +Overwrite prediction results with tracking results. + +![](./images/predicted-object-visualization-description.jpg) + +## References/External links + +[1] https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/-/tree/master/src/tools/visualization/autoware_rviz_plugins + +## Future extensions / Unimplemented parts diff --git a/common/autoware_auto_perception_rviz_plugin/icons/classes/DetectedObjects.png b/common/autoware_auto_perception_rviz_plugin/icons/classes/DetectedObjects.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_auto_perception_rviz_plugin/icons/classes/PredictedObjects.png b/common/autoware_auto_perception_rviz_plugin/icons/classes/PredictedObjects.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_auto_perception_rviz_plugin/icons/classes/TrackedObjects.png b/common/autoware_auto_perception_rviz_plugin/icons/classes/TrackedObjects.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_auto_perception_rviz_plugin/images/detected-object-visualization-description.jpg b/common/autoware_auto_perception_rviz_plugin/images/detected-object-visualization-description.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7e3257fd51384de8ca986c9549f951587eb7672 GIT binary patch literal 16020 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 HUk3gQe4xq{ literal 0 HcmV?d00001 diff --git a/common/autoware_auto_perception_rviz_plugin/images/tracked-object-visualization-description.jpg b/common/autoware_auto_perception_rviz_plugin/images/tracked-object-visualization-description.jpg new file mode 100644 index 0000000000000000000000000000000000000000..158365876aa9fe42c9a83e73363668dfd64559fe GIT binary patch literal 29033 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 +#include +#include +#include +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace common +{ +/// \brief Class to define Color and Alpha values as plugin properties +class AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC ColorAlphaProperty +{ +public: + /// \brief Constructor + /// \param color_default Default value for color property + /// \param alpha_default Default value for alpha property + /// \param parent_property Parent property for the color and alpha properties. Memory managed + /// by the caller + ColorAlphaProperty( + const QColor & color_default, const float alpha_default, + rviz_common::properties::Property * parent_property); + + /// \brief Convert color and alpha to ColorRGBA type + /// \return color and alpha values as ColorRGBA type + operator std_msgs::msg::ColorRGBA() const; + +private: + rviz_common::properties::ColorProperty m_color_property; + rviz_common::properties::FloatProperty m_alpha_property; +}; + +} // namespace common +} // namespace rviz_plugins +} // namespace autoware + +#endif // COMMON__COLOR_ALPHA_PROPERTY_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/include/object_detection/detected_objects_display.hpp b/common/autoware_auto_perception_rviz_plugin/include/object_detection/detected_objects_display.hpp new file mode 100644 index 0000000000000..9ff8adac9d2e4 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/include/object_detection/detected_objects_display.hpp @@ -0,0 +1,45 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#ifndef OBJECT_DETECTION__DETECTED_OBJECTS_DISPLAY_HPP_ +#define OBJECT_DETECTION__DETECTED_OBJECTS_DISPLAY_HPP_ + +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +/// \brief Class defining rviz plugin to visualize DetectedObjects +class AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC DetectedObjectsDisplay + : public ObjectPolygonDisplayBase +{ + Q_OBJECT + +public: + using DetectedObjects = autoware_auto_perception_msgs::msg::DetectedObjects; + + DetectedObjectsDisplay(); + +private: + void processMessage(DetectedObjects::ConstSharedPtr msg) override; +}; + +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +#endif // OBJECT_DETECTION__DETECTED_OBJECTS_DISPLAY_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_detail.hpp b/common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_detail.hpp new file mode 100644 index 0000000000000..54414ab442b1b --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_detail.hpp @@ -0,0 +1,208 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/// \brief This file defines some helper functions used by ObjectPolygonDisplayBase class +#ifndef OBJECT_DETECTION__OBJECT_POLYGON_DETAIL_HPP_ +#define OBJECT_DETECTION__OBJECT_POLYGON_DETAIL_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +namespace detail +{ +// Struct to define all the configurable visual properties of an object of a particular +// classification type +struct ObjectPropertyValues +{ + // Classified type of the object + std::string label; + // Color for the type of the object + std::array color; + // Alpha values for the type of the object + float alpha{0.999F}; +}; + +// Map defining colors according to value of label field in ObjectClassification msg +const std::map< + autoware_auto_perception_msgs::msg::ObjectClassification::_label_type, ObjectPropertyValues> +// Color map is based on cityscapes color +kDefaultObjectPropertyValues = { + {autoware_auto_perception_msgs::msg::ObjectClassification::UNKNOWN, + {"UNKNOWN", {255, 255, 255}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::CAR, {"CAR", {30, 144, 255}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::BUS, {"BUS", {30, 144, 255}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::PEDESTRIAN, + {"PEDESTRIAN", {255, 192, 203}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::BICYCLE, {"CYCLIST", {119, 11, 32}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::MOTORCYCLE, + {"MOTORCYCLE", {119, 11, 32}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::TRAILER, + {"TRAILER", {30, 144, 255}}}, + {autoware_auto_perception_msgs::msg::ObjectClassification::TRUCK, {"TRUCK", {30, 144, 255}}}}; + +/// \brief Convert the given polygon into a marker representing the shape in 3d +/// \param shape_msg Shape msg to be converted. Corners should be in object-local frame +/// \param centroid Centroid position of the shape in Object.header.frame_id frame +/// \param orientation Orientation of the shape in Object.header.frame_id frame +/// \param color_rgba Color and alpha values to use for the marker +/// \return Marker ptr. Id and header will have to be set by the caller +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_shape_marker_ptr( + const autoware_auto_perception_msgs::msg::Shape & shape_msg, + const geometry_msgs::msg::Point & centroid, const geometry_msgs::msg::Quaternion & orientation, + const std_msgs::msg::ColorRGBA & color_rgba); + +/// \brief Convert the given polygon into a marker representing the shape in 3d +/// \param centroid Centroid position of the shape in Object.header.frame_id frame +/// \return Marker ptr. Id and header will have to be set by the caller +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_label_marker_ptr( + const geometry_msgs::msg::Point & centroid, const geometry_msgs::msg::Quaternion & orientation, + const std::string label, const std_msgs::msg::ColorRGBA & color_rgba); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_uuid_marker_ptr( + const std::string & uuid, const geometry_msgs::msg::Point & centroid, + const std_msgs::msg::ColorRGBA & color_rgba); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_pose_with_covariance_marker_ptr( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_velocity_text_marker_ptr( + const geometry_msgs::msg::Twist & twist, const geometry_msgs::msg::Point & vis_pos, + const std_msgs::msg::ColorRGBA & color_rgba); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_twist_marker_ptr( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance, + const geometry_msgs::msg::TwistWithCovariance & twist_with_covariance); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_predicted_path_marker_ptr( + const autoware_auto_perception_msgs::msg::Shape & shape, + const autoware_auto_perception_msgs::msg::PredictedPath & predicted_path, + const std_msgs::msg::ColorRGBA & predicted_path_color); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC visualization_msgs::msg::Marker::SharedPtr +get_path_confidence_marker_ptr( + const autoware_auto_perception_msgs::msg::PredictedPath & predicted_path, + const std_msgs::msg::ColorRGBA & path_confidence_color); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC void calc_bounding_box_line_list( + const autoware_auto_perception_msgs::msg::Shape & shape, + std::vector & points); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC void calc_cylinder_line_list( + const autoware_auto_perception_msgs::msg::Shape & shape, + std::vector & points); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC void calc_circle_line_list( + const geometry_msgs::msg::Point center, const double radius, + std::vector & points, const int n); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC void calc_polygon_line_list( + const autoware_auto_perception_msgs::msg::Shape & shape, + std::vector & points); + +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC void calc_path_line_list( + const autoware_auto_perception_msgs::msg::PredictedPath & paths, + std::vector & points); + +/// \brief Convert Point32 to Point +/// \param val Point32 to be converted +/// \return Point type +inline AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC geometry_msgs::msg::Point to_point( + const geometry_msgs::msg::Point32 & val) +{ + geometry_msgs::msg::Point ret; + ret.x = static_cast(val.x); + ret.y = static_cast(val.y); + ret.z = static_cast(val.z); + return ret; +} + +/// \brief Convert to Pose from Point and Quaternion +/// \param point +/// \param orientation +/// \return Pose type +inline AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC geometry_msgs::msg::Pose to_pose( + const geometry_msgs::msg::Point & point, const geometry_msgs::msg::Quaternion & orientation) +{ + geometry_msgs::msg::Pose ret; + ret.position = point; + ret.orientation = orientation; + return ret; +} + +inline AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC geometry_msgs::msg::Pose initPose() +{ + geometry_msgs::msg::Pose pose; + pose.position.x = 0.0; + pose.position.y = 0.0; + pose.position.z = 0.0; + pose.orientation.x = 0.0; + pose.orientation.y = 0.0; + pose.orientation.z = 0.0; + pose.orientation.w = 1.0; + return pose; +} + +/// \brief Get the best classification from the list of classifications based on max probability +/// \tparam ClassificationContainerT List type with ObjectClassificationMsg +/// \param labels List of ObjectClassificationMsg objects +/// \param logger_name Name to use for logger in case of a warning (if labels is empty) +/// \return Id of the best classification, Unknown if there is no best label +template +AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC +autoware_auto_perception_msgs::msg::ObjectClassification::_label_type +get_best_label(ClassificationContainerT labels, const std::string & logger_name) +{ + const auto best_class_label = std::max_element( + labels.begin(), labels.end(), + [](const auto & a, const auto & b) -> bool {return a.probability < b.probability;}); + if (best_class_label == labels.end()) { + RCLCPP_WARN( + rclcpp::get_logger(logger_name), + "Empty classification field. " + "Treating as unknown"); + return autoware_auto_perception_msgs::msg::ObjectClassification::UNKNOWN; + } + return best_class_label->label; +} + +} // namespace detail +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +#endif // OBJECT_DETECTION__OBJECT_POLYGON_DETAIL_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_display_base.hpp b/common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_display_base.hpp new file mode 100644 index 0000000000000..1222d4c82d12e --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/include/object_detection/object_polygon_display_base.hpp @@ -0,0 +1,368 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#ifndef OBJECT_DETECTION__OBJECT_POLYGON_DISPLAY_BASE_HPP_ +#define OBJECT_DETECTION__OBJECT_POLYGON_DISPLAY_BASE_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +/// \brief Base rviz plugin class for all object msg types. The class defines common properties +/// for the plugin and also defines common helper functions that can be used by its derived +/// classes. +/// \tparam MsgT PredictedObjects or TrackedObjects or DetectedObjects type +template +class AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC ObjectPolygonDisplayBase + : public rviz_common::RosTopicDisplay +{ +public: + using Color = std::array; + using Marker = visualization_msgs::msg::Marker; + using MarkerCommon = rviz_default_plugins::displays::MarkerCommon; + using ObjectClassificationMsg = autoware_auto_perception_msgs::msg::ObjectClassification; + using RosTopicDisplay = rviz_common::RosTopicDisplay; + + using PolygonPropertyMap = + std::unordered_map; + + explicit ObjectPolygonDisplayBase(const std::string & default_topic) + : m_marker_common(this), + m_display_3d_property{ + "Display 3d polygon", true, "Enable/disable height visualization of the polygon", this}, + m_display_label_property{"Display Label", true, "Enable/disable label visualization", this}, + m_display_uuid_property{"Display UUID", true, "Enable/disable uuid visualization", this}, + m_display_pose_with_covariance_property{ + "Display PoseWithCovariance", true, "Enable/disable pose with covariance visualization", + this}, + m_display_velocity_text_property{ + "Display Velocity", true, "Enable/disable velocity text visualization", this}, + m_display_twist_property{"Display Twist", true, "Enable/disable twist visualization", this}, + m_display_predicted_paths_property{ + "Display Predicted Paths", true, "Enable/disable predicted paths visualization", this}, + m_display_path_confidence_property{ + "Display Predicted Path Confidence", true, "Enable/disable predicted paths visualization", + this}, + m_default_topic{default_topic} + { + // iterate over default values to create and initialize the properties. + for (const auto & map_property_it : detail::kDefaultObjectPropertyValues) { + const auto & class_property_values = map_property_it.second; + const auto & color = class_property_values.color; + // This is just a parent property to contain the necessary properties for the given class: + m_class_group_properties.emplace_back( + class_property_values.label.c_str(), QVariant(), + "Groups polygon properties for the given class", this); + auto & parent_property = m_class_group_properties.back(); + // Associate a color and opacity property for the given class and attach them to the + // parent property of the class so they can have a drop down view from the label property: + m_polygon_properties.emplace( + std::piecewise_construct, std::forward_as_tuple(map_property_it.first), + std::forward_as_tuple( + QColor{color[0], color[1], color[2]}, class_property_values.alpha, &parent_property)); + } + init_color_list(predicted_path_colors); + } + + void onInitialize() override + { + RosTopicDisplay::RTDClass::onInitialize(); + m_marker_common.initialize(this->context_, this->scene_node_); + QString message_type = QString::fromStdString(rosidl_generator_traits::name()); + this->topic_property_->setMessageType(message_type); + this->topic_property_->setValue(m_default_topic.c_str()); + this->topic_property_->setDescription("Topic to subscribe to."); + } + + void load(const rviz_common::Config & config) override + { + RosTopicDisplay::Display::load(config); + m_marker_common.load(config); + } + + void update(float wall_dt, float ros_dt) override {m_marker_common.update(wall_dt, ros_dt);} + + void reset() override + { + RosTopicDisplay::reset(); + m_marker_common.clearMarkers(); + } + + void clear_markers() {m_marker_common.clearMarkers();} + + void add_marker(visualization_msgs::msg::Marker::ConstSharedPtr marker_ptr) + { + m_marker_common.addMessage(marker_ptr); + } + +protected: + /// \brief Convert given shape msg into a Marker + /// \tparam ClassificationContainerT List type with ObjectClassificationMsg + /// \param shape_msg Shape msg to be converted + /// \param centroid Centroid position of the shape in Object.header.frame_id frame + /// \param orientation Orientation of the shape in Object.header.frame_id frame + /// \param labels List of ObjectClassificationMsg objects + /// \return Marker ptr. Id and header will have to be set by the caller + template + std::optional get_shape_marker_ptr( + const autoware_auto_perception_msgs::msg::Shape & shape_msg, + const geometry_msgs::msg::Point & centroid, const geometry_msgs::msg::Quaternion & orientation, + const ClassificationContainerT & labels) const + { + const std_msgs::msg::ColorRGBA color_rgba = get_color_rgba(labels); + + if (m_display_3d_property.getBool()) { + return detail::get_shape_marker_ptr(shape_msg, centroid, orientation, color_rgba); + } else { + return std::nullopt; + } + } + + /// \brief Convert given shape msg into a Marker to visualize label name + /// \tparam ClassificationContainerT List type with ObjectClassificationMsg + /// \param centroid Centroid position of the shape in Object.header.frame_id frame + /// \param labels List of ObjectClassificationMsg objects + /// \return Marker ptr. Id and header will have to be set by the caller + template + std::optional get_label_marker_ptr( + const geometry_msgs::msg::Point & centroid, const geometry_msgs::msg::Quaternion & orientation, + const ClassificationContainerT & labels) const + { + if (m_display_label_property.getBool()) { + const std::string label = get_best_label(labels); + const std_msgs::msg::ColorRGBA color_rgba = get_color_rgba(labels); + return detail::get_label_marker_ptr(centroid, orientation, label, color_rgba); + } else { + return std::nullopt; + } + } + + template + std::optional get_uuid_marker_ptr( + const unique_identifier_msgs::msg::UUID & uuid, const geometry_msgs::msg::Point & centroid, + const ClassificationContainerT & labels) const + { + if (m_display_uuid_property.getBool()) { + const std_msgs::msg::ColorRGBA color_rgba = get_color_rgba(labels); + const std::string uuid_str = uuid_to_string(uuid); + return detail::get_uuid_marker_ptr(uuid_str, centroid, color_rgba); + } else { + return std::nullopt; + } + } + + std::optional get_pose_with_covariance_marker_ptr( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance) const + { + if (m_display_pose_with_covariance_property.getBool()) { + return detail::get_pose_with_covariance_marker_ptr(pose_with_covariance); + } else { + return std::nullopt; + } + } + + template + std::optional get_velocity_text_marker_ptr( + const geometry_msgs::msg::Twist & twist, const geometry_msgs::msg::Point & vis_pos, + const ClassificationContainerT & labels) const + { + if (m_display_velocity_text_property.getBool()) { + const std_msgs::msg::ColorRGBA color_rgba = get_color_rgba(labels); + return detail::get_velocity_text_marker_ptr(twist, vis_pos, color_rgba); + } else { + return std::nullopt; + } + } + + std::optional get_twist_marker_ptr( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance, + const geometry_msgs::msg::TwistWithCovariance & twist_with_covariance) const + { + if (m_display_twist_property.getBool()) { + return detail::get_twist_marker_ptr(pose_with_covariance, twist_with_covariance); + } else { + return std::nullopt; + } + } + + std::optional get_predicted_path_marker_ptr( + const unique_identifier_msgs::msg::UUID & uuid, + const autoware_auto_perception_msgs::msg::Shape & shape, + const autoware_auto_perception_msgs::msg::PredictedPath & predicted_path) const + { + if (m_display_predicted_paths_property.getBool()) { + const std::string uuid_str = uuid_to_string(uuid); + const std_msgs::msg::ColorRGBA predicted_path_color = get_color_from_uuid(uuid_str); + return detail::get_predicted_path_marker_ptr(shape, predicted_path, predicted_path_color); + } else { + return std::nullopt; + } + } + + std::optional get_path_confidence_marker_ptr( + const unique_identifier_msgs::msg::UUID & uuid, + const autoware_auto_perception_msgs::msg::PredictedPath & predicted_path) const + { + if (m_display_path_confidence_property.getBool()) { + const std::string uuid_str = uuid_to_string(uuid); + const std_msgs::msg::ColorRGBA path_confidence_color = get_color_from_uuid(uuid_str); + return detail::get_path_confidence_marker_ptr(predicted_path, path_confidence_color); + } else { + return std::nullopt; + } + } + + /// \brief Get color and alpha values based on the given list of classification values + /// \tparam ClassificationContainerT Container of ObjectClassification + /// \param labels list of classifications + /// \return Color and alpha for the best class in the given list. Unknown class is used in + /// degenerate cases + template + std_msgs::msg::ColorRGBA get_color_rgba(const ClassificationContainerT & labels) const + { + static const std::string kLoggerName("ObjectPolygonDisplayBase"); + const auto label = detail::get_best_label(labels, kLoggerName); + auto it = m_polygon_properties.find(label); + if (it == m_polygon_properties.end()) { + it = m_polygon_properties.find(ObjectClassificationMsg::UNKNOWN); + } + return it->second; + } + + /// \brief Get color and alpha values based on the given list of classification values + /// \tparam ClassificationContainerT Container of ObjectClassification + /// \param labels list of classifications + /// \return best label string + template + std::string get_best_label(const ClassificationContainerT & labels) const + { + static const std::string kLoggerName("ObjectPolygonDisplayBase"); + const auto label = detail::get_best_label(labels, kLoggerName); + auto it = detail::kDefaultObjectPropertyValues.find(label); + if (it == detail::kDefaultObjectPropertyValues.end()) { + it = detail::kDefaultObjectPropertyValues.find(ObjectClassificationMsg::UNKNOWN); + } + return (it->second).label; + } + + std::string uuid_to_string(const unique_identifier_msgs::msg::UUID & u) const + { + std::stringstream ss; + for (auto i = 0; i < 16; ++i) { + ss << std::hex << std::setfill('0') << std::setw(2) << +u.uuid[i]; + } + return ss.str(); + } + + std_msgs::msg::ColorRGBA AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC + get_color_from_uuid(const std::string & uuid) const + { + int i = (static_cast(uuid.at(0)) * 4 + static_cast(uuid.at(1))) % + static_cast(predicted_path_colors.size()); + + std_msgs::msg::ColorRGBA color; + color.r = predicted_path_colors.at(i).r; + color.g = predicted_path_colors.at(i).g; + color.b = predicted_path_colors.at(i).b; + return color; + } + + void init_color_list(std::vector & colors) const + { + std_msgs::msg::ColorRGBA sample_color; + sample_color.r = 1.0; + sample_color.g = 0.0; + sample_color.b = 1.0; + colors.push_back(sample_color); // magenta + sample_color.r = 0.69; + sample_color.g = 1.0; + sample_color.b = 0.18; + colors.push_back(sample_color); // green yellow + sample_color.r = 0.59; + sample_color.g = 1.0; + sample_color.b = 0.59; + colors.push_back(sample_color); // pale green + sample_color.r = 0.5; + sample_color.g = 1.0; + sample_color.b = 0.0; + colors.push_back(sample_color); // chartreuse green + sample_color.r = 0.12; + sample_color.g = 0.56; + sample_color.b = 1.0; + colors.push_back(sample_color); // dodger blue + sample_color.r = 0.0; + sample_color.g = 1.0; + sample_color.b = 1.0; + colors.push_back(sample_color); // cyan + sample_color.r = 0.54; + sample_color.g = 0.168; + sample_color.b = 0.886; + colors.push_back(sample_color); // blueviolet + sample_color.r = 0.0; + sample_color.g = 1.0; + sample_color.b = 0.5; + colors.push_back(sample_color); // spring green + } + +private: + // All rviz plugins should have this. Should be initialized with pointer to this class + MarkerCommon m_marker_common; + // List is used to store the properties for classification in case we need to access them: + std::list m_class_group_properties; + // Map to store class labels and its corresponding properties + PolygonPropertyMap m_polygon_properties; + // Property to enable/disable height visualization of the polygon + rviz_common::properties::BoolProperty m_display_3d_property; + // Property to enable/disable label visualization + rviz_common::properties::BoolProperty m_display_label_property; + // Property to enable/disable uuid visualization + rviz_common::properties::BoolProperty m_display_uuid_property; + // Property to enable/disable pose with covariance visualization + rviz_common::properties::BoolProperty m_display_pose_with_covariance_property; + // Property to enable/disable velocity text visualization + rviz_common::properties::BoolProperty m_display_velocity_text_property; + // Property to enable/disable twist visualization + rviz_common::properties::BoolProperty m_display_twist_property; + // Property to enable/disable predicted paths visualization + rviz_common::properties::BoolProperty m_display_predicted_paths_property; + // Property to enable/disable predicted path confidence visualization + rviz_common::properties::BoolProperty m_display_path_confidence_property; + // Default topic name to be visualized + std::string m_default_topic; + + std::vector predicted_path_colors; +}; +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +#endif // OBJECT_DETECTION__OBJECT_POLYGON_DISPLAY_BASE_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/include/object_detection/predicted_objects_display.hpp b/common/autoware_auto_perception_rviz_plugin/include/object_detection/predicted_objects_display.hpp new file mode 100644 index 0000000000000..82c0898718f4b --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/include/object_detection/predicted_objects_display.hpp @@ -0,0 +1,104 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#ifndef OBJECT_DETECTION__PREDICTED_OBJECTS_DISPLAY_HPP_ +#define OBJECT_DETECTION__PREDICTED_OBJECTS_DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +/// \brief Class defining rviz plugin to visualize PredictedObjects +class AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC PredictedObjectsDisplay + : public ObjectPolygonDisplayBase +{ + Q_OBJECT + +public: + using PredictedObjects = autoware_auto_perception_msgs::msg::PredictedObjects; + + PredictedObjectsDisplay(); + +private: + void processMessage(PredictedObjects::ConstSharedPtr msg) override; + + boost::uuids::uuid to_boost_uuid(const unique_identifier_msgs::msg::UUID & uuid_msg) + { + const std::string uuid_str = uuid_to_string(uuid_msg); + boost::uuids::string_generator gen; + boost::uuids::uuid uuid = gen(uuid_str); + return uuid; + } + + void update_id_map(const PredictedObjects::ConstSharedPtr & msg) + { + std::vector new_uuids; + std::vector tracked_uuids; + new_uuids.reserve(msg->objects.size()); + tracked_uuids.reserve(msg->objects.size()); + for (const auto & object : msg->objects) { + const auto uuid = to_boost_uuid(object.object_id); + ((id_map.find(uuid) != id_map.end()) ? tracked_uuids : new_uuids).push_back(uuid); + } + + auto itr = id_map.begin(); + while (itr != id_map.end()) { + if ( + std::find(tracked_uuids.begin(), tracked_uuids.end(), itr->first) == tracked_uuids.end()) + { + unused_marker_ids.push_back(itr->second); + itr = id_map.erase(itr); + } else { + ++itr; + } + } + + for (const auto & new_uuid : new_uuids) { + if (unused_marker_ids.empty()) { + id_map.emplace(new_uuid, marker_id); + marker_id++; + } else { + id_map.emplace(new_uuid, unused_marker_ids.front()); + unused_marker_ids.pop_front(); + } + } + } + + int32_t uuid_to_marker_id(const unique_identifier_msgs::msg::UUID & uuid_msg) + { + auto uuid = to_boost_uuid(uuid_msg); + return id_map.at(uuid); + } + + std::map id_map; + std::list unused_marker_ids; + int32_t marker_id = 0; + const int32_t PATH_ID_CONSTANT = 1e3; +}; + +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +#endif // OBJECT_DETECTION__PREDICTED_OBJECTS_DISPLAY_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/include/object_detection/tracked_objects_display.hpp b/common/autoware_auto_perception_rviz_plugin/include/object_detection/tracked_objects_display.hpp new file mode 100644 index 0000000000000..43077ce1ce32e --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/include/object_detection/tracked_objects_display.hpp @@ -0,0 +1,103 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#ifndef OBJECT_DETECTION__TRACKED_OBJECTS_DISPLAY_HPP_ +#define OBJECT_DETECTION__TRACKED_OBJECTS_DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +/// \brief Class defining rviz plugin to visualize TrackedObjects +class AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC TrackedObjectsDisplay + : public ObjectPolygonDisplayBase +{ + Q_OBJECT + +public: + using TrackedObjects = autoware_auto_perception_msgs::msg::TrackedObjects; + + TrackedObjectsDisplay(); + +private: + void processMessage(TrackedObjects::ConstSharedPtr msg) override; + + boost::uuids::uuid to_boost_uuid(const unique_identifier_msgs::msg::UUID & uuid_msg) + { + const std::string uuid_str = uuid_to_string(uuid_msg); + boost::uuids::string_generator gen; + boost::uuids::uuid uuid = gen(uuid_str); + return uuid; + } + + void update_id_map(const TrackedObjects::ConstSharedPtr & msg) + { + std::vector new_uuids; + std::vector tracked_uuids; + new_uuids.reserve(msg->objects.size()); + tracked_uuids.reserve(msg->objects.size()); + for (const auto & object : msg->objects) { + const auto uuid = to_boost_uuid(object.object_id); + ((id_map.find(uuid) != id_map.end()) ? tracked_uuids : new_uuids).push_back(uuid); + } + + auto itr = id_map.begin(); + while (itr != id_map.end()) { + if ( + std::find(tracked_uuids.begin(), tracked_uuids.end(), itr->first) == tracked_uuids.end()) + { + unused_marker_ids.push_back(itr->second); + itr = id_map.erase(itr); + } else { + ++itr; + } + } + + for (const auto & new_uuid : new_uuids) { + if (unused_marker_ids.empty()) { + id_map.emplace(new_uuid, marker_id); + marker_id++; + } else { + id_map.emplace(new_uuid, unused_marker_ids.front()); + unused_marker_ids.pop_front(); + } + } + } + + int32_t uuid_to_marker_id(const unique_identifier_msgs::msg::UUID & uuid_msg) + { + auto uuid = to_boost_uuid(uuid_msg); + return id_map.at(uuid); + } + + std::map id_map; + std::list unused_marker_ids; + int32_t marker_id = 0; +}; + +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +#endif // OBJECT_DETECTION__TRACKED_OBJECTS_DISPLAY_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/include/visibility_control.hpp b/common/autoware_auto_perception_rviz_plugin/include/visibility_control.hpp new file mode 100644 index 0000000000000..d14a1898a9b80 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/include/visibility_control.hpp @@ -0,0 +1,43 @@ +// Copyright 2019 the Autoware Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +//    http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Co-developed by Tier IV, Inc. and Apex.AI, Inc. + +#ifndef VISIBILITY_CONTROL_HPP_ +#define VISIBILITY_CONTROL_HPP_ + +#if defined(__WIN32) +#if defined(AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_BUILDING_DLL) || \ + defined(AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_EXPORTS) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC __declspec(dllexport) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_LOCAL +// defined(AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_BUILDING_DLL) || +// defined(AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_EXPORTS) +#else +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC __declspec(dllimport) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_LOCAL +// defined(AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_BUILDING_DLL) || +// defined(AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_EXPORTS) +#endif +#elif defined(__linux__) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC __attribute__((visibility("default"))) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_LOCAL __attribute__((visibility("hidden"))) +#elif defined(__APPLE__) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_PUBLIC __attribute__((visibility("default"))) +#define AUTOWARE_AUTO_PERCEPTION_RVIZ_PLUGIN_LOCAL __attribute__((visibility("hidden"))) +#else // defined(_LINUX) +#error "Unsupported Build Configuration" +#endif // defined(_WINDOWS) + +#endif // VISIBILITY_CONTROL_HPP_ diff --git a/common/autoware_auto_perception_rviz_plugin/package.xml b/common/autoware_auto_perception_rviz_plugin/package.xml new file mode 100644 index 0000000000000..24d48fe5e3ee4 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/package.xml @@ -0,0 +1,26 @@ + + + + autoware_auto_perception_rviz_plugin + 1.0.0 + Contains plugins to visualize object detection outputs + Apex.AI, Inc. + Taichi Higashide + Apache 2.0 + + ament_cmake + + qtbase5-dev + + autoware_auto_perception_msgs + rviz_common + rviz_default_plugins + + libqt5-widgets + rviz2 + + ament_lint_auto + ament_lint_common + + ament_cmake + diff --git a/common/autoware_auto_perception_rviz_plugin/plugins_description.xml b/common/autoware_auto_perception_rviz_plugin/plugins_description.xml new file mode 100644 index 0000000000000..3f56a43558494 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/plugins_description.xml @@ -0,0 +1,26 @@ + + + + + + + Convert a PredictedObjects to markers and display them. + + autoware_auto_perception_msgs/msg/PredictedObjects + + + + + Convert a TrackedObjects to markers and display them. + + autoware_auto_perception_msgs/msg/TrackedObjects + + + + + Convert a DetectedObjects to markers and display them. + + autoware_auto_perception_msgs/msg/DetectedObjects + + + diff --git a/common/autoware_auto_perception_rviz_plugin/src/common/color_alpha_property.cpp b/common/autoware_auto_perception_rviz_plugin/src/common/color_alpha_property.cpp new file mode 100644 index 0000000000000..ebb3783845567 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/src/common/color_alpha_property.cpp @@ -0,0 +1,50 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Co-developed by Tier IV, Inc. and Apex.AI, Inc. + +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace common +{ +ColorAlphaProperty::ColorAlphaProperty( + const QColor & color_default, const float alpha_default, + rviz_common::properties::Property * parent_property) +: m_color_property("Color", color_default, "Set color value.", parent_property), + m_alpha_property( + "Alpha", alpha_default, "Set transparency value. Should be between 0 and 1.", parent_property) +{ + m_alpha_property.setMax(1.0F); + m_alpha_property.setMin(0.0F); +} + +ColorAlphaProperty::operator std_msgs::msg::ColorRGBA() const +{ + std_msgs::msg::ColorRGBA ret; + ret.r = static_cast(m_color_property.getColor().redF()); + ret.g = static_cast(m_color_property.getColor().greenF()); + ret.b = static_cast(m_color_property.getColor().blueF()); + ret.a = m_alpha_property.getFloat(); + + return ret; +} + +} // namespace common +} // namespace rviz_plugins +} // namespace autoware diff --git a/common/autoware_auto_perception_rviz_plugin/src/object_detection/detected_objects_display.cpp b/common/autoware_auto_perception_rviz_plugin/src/object_detection/detected_objects_display.cpp new file mode 100644 index 0000000000000..b3c645e8eff48 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/src/object_detection/detected_objects_display.cpp @@ -0,0 +1,65 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Co-developed by Tier IV, Inc. and Apex.AI, Inc. + +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +DetectedObjectsDisplay::DetectedObjectsDisplay() +: ObjectPolygonDisplayBase("detected_objects") {} + +void DetectedObjectsDisplay::processMessage(DetectedObjects::ConstSharedPtr msg) +{ + clear_markers(); + int id = 0; + for (const auto & object : msg->objects) { + // Get marker for shape + auto shape_marker = get_shape_marker_ptr( + object.shape, object.kinematics.pose_with_covariance.pose.position, + object.kinematics.pose_with_covariance.pose.orientation, object.classification); + if (shape_marker) { + auto shape_marker_ptr = shape_marker.value(); + shape_marker_ptr->header = msg->header; + shape_marker_ptr->id = id++; + add_marker(shape_marker_ptr); + } + + // Get marker for label + auto label_marker = get_label_marker_ptr( + object.kinematics.pose_with_covariance.pose.position, + object.kinematics.pose_with_covariance.pose.orientation, object.classification); + if (label_marker) { + auto label_marker_ptr = label_marker.value(); + label_marker_ptr->header = msg->header; + label_marker_ptr->id = id++; + add_marker(label_marker_ptr); + } + } +} + +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +// Export the plugin +#include // NOLINT +PLUGINLIB_EXPORT_CLASS( + autoware::rviz_plugins::object_detection::DetectedObjectsDisplay, rviz_common::Display) diff --git a/common/autoware_auto_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp b/common/autoware_auto_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp new file mode 100644 index 0000000000000..5f65fce8c72ea --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp @@ -0,0 +1,508 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License.. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +namespace detail +{ +using Marker = visualization_msgs::msg::Marker; + +visualization_msgs::msg::Marker::SharedPtr get_path_confidence_marker_ptr( + const autoware_auto_perception_msgs::msg::PredictedPath & predicted_path, + const std_msgs::msg::ColorRGBA & path_confidence_color) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = visualization_msgs::msg::Marker::TEXT_VIEW_FACING; + marker_ptr->ns = std::string("path confidence"); + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->scale.x = 0.5; + marker_ptr->scale.y = 0.5; + marker_ptr->scale.z = 0.5; + marker_ptr->pose = initPose(); + marker_ptr->color = path_confidence_color; + marker_ptr->pose.position = predicted_path.path.back().position; + marker_ptr->text = std::to_string(predicted_path.confidence); + marker_ptr->color.a = std::max( + static_cast(std::min(static_cast(predicted_path.confidence), 0.999)), 0.5); + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_predicted_path_marker_ptr( + const autoware_auto_perception_msgs::msg::Shape & shape, + const autoware_auto_perception_msgs::msg::PredictedPath & predicted_path, + const std_msgs::msg::ColorRGBA & predicted_path_color) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + marker_ptr->ns = std::string("path"); + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->pose = initPose(); + marker_ptr->color = predicted_path_color; + marker_ptr->color.a = std::max( + static_cast(std::min(static_cast(predicted_path.confidence), 0.999)), 0.5); + marker_ptr->scale.x = 0.03 * marker_ptr->color.a; + calc_path_line_list(predicted_path, marker_ptr->points); + for (size_t k = 0; k < marker_ptr->points.size(); ++k) { + marker_ptr->points.at(k).z -= shape.dimensions.z / 2.0; + } + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_twist_marker_ptr( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance, + const geometry_msgs::msg::TwistWithCovariance & twist_with_covariance) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + marker_ptr->ns = std::string("twist"); + marker_ptr->scale.x = 0.03; + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->pose = pose_with_covariance.pose; + + geometry_msgs::msg::Point pt_s; + pt_s.x = 0.0; + pt_s.y = 0.0; + pt_s.z = 0.0; + marker_ptr->points.push_back(pt_s); + + geometry_msgs::msg::Point pt_e; + pt_e.x = twist_with_covariance.twist.linear.x; + pt_e.y = twist_with_covariance.twist.linear.y; + pt_e.z = twist_with_covariance.twist.linear.z; + marker_ptr->points.push_back(pt_e); + + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->color.a = 0.999; + marker_ptr->color.r = 1.0; + marker_ptr->color.g = 0.0; + marker_ptr->color.b = 0.0; + + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_velocity_text_marker_ptr( + const geometry_msgs::msg::Twist & twist, const geometry_msgs::msg::Point & vis_pos, + const std_msgs::msg::ColorRGBA & color_rgba) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = visualization_msgs::msg::Marker::TEXT_VIEW_FACING; + marker_ptr->ns = std::string("velocity"); + marker_ptr->scale.x = 0.5; + marker_ptr->scale.z = 0.5; + + double vel = std::sqrt( + twist.linear.x * twist.linear.x + twist.linear.y * twist.linear.y + + twist.linear.z * twist.linear.z); + marker_ptr->text = std::to_string(static_cast(vel * 3.6)) + std::string("[km/h]"); + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->pose.position = vis_pos; + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->color = color_rgba; + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_pose_with_covariance_marker_ptr( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + marker_ptr->ns = std::string("position covariance"); + marker_ptr->scale.x = 0.03; + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->pose = pose_with_covariance.pose; + marker_ptr->pose.orientation.x = 0.0; + marker_ptr->pose.orientation.y = 0.0; + marker_ptr->pose.orientation.z = 0.0; + marker_ptr->pose.orientation.w = 1.0; + geometry_msgs::msg::Point point; + Eigen::Matrix2d eigen_pose_with_covariance; + eigen_pose_with_covariance << pose_with_covariance.covariance[0], + pose_with_covariance.covariance[1], pose_with_covariance.covariance[6], + pose_with_covariance.covariance[7]; + Eigen::SelfAdjointEigenSolver solver(eigen_pose_with_covariance); + double sigma1 = 2.448 * std::sqrt(solver.eigenvalues().x()); // 2.448 sigma is 95% + double sigma2 = 2.448 * std::sqrt(solver.eigenvalues().y()); // 2.448 sigma is 95% + Eigen::Vector2d e1 = solver.eigenvectors().col(0); + Eigen::Vector2d e2 = solver.eigenvectors().col(1); + point.x = -e1.x() * sigma1; + point.y = -e1.y() * sigma1; + point.z = 0; + marker_ptr->points.push_back(point); + point.x = e1.x() * sigma1; + point.y = e1.y() * sigma1; + point.z = 0; + marker_ptr->points.push_back(point); + point.x = -e2.x() * sigma2; + point.y = -e2.y() * sigma2; + point.z = 0; + marker_ptr->points.push_back(point); + point.x = e2.x() * sigma2; + point.y = e2.y() * sigma2; + point.z = 0; + marker_ptr->points.push_back(point); + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->color.a = 0.999; + marker_ptr->color.r = 1.0; + marker_ptr->color.g = 1.0; + marker_ptr->color.b = 1.0; + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_uuid_marker_ptr( + const std::string & uuid, const geometry_msgs::msg::Point & centroid, + const std_msgs::msg::ColorRGBA & color_rgba) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = Marker::TEXT_VIEW_FACING; + marker_ptr->ns = std::string("uuid"); + marker_ptr->text = uuid.substr(0, 4); + marker_ptr->action = Marker::MODIFY; + marker_ptr->scale.z = 0.5; + marker_ptr->color = color_rgba; + marker_ptr->pose.position = centroid; + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_label_marker_ptr( + const geometry_msgs::msg::Point & centroid, const geometry_msgs::msg::Quaternion & orientation, + const std::string label, const std_msgs::msg::ColorRGBA & color_rgba) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->type = visualization_msgs::msg::Marker::TEXT_VIEW_FACING; + marker_ptr->ns = std::string("label"); + marker_ptr->scale.x = 0.5; + marker_ptr->scale.z = 0.5; + marker_ptr->text = label; + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->pose = marker_ptr->pose = to_pose(centroid, orientation); + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->color = color_rgba; + return marker_ptr; +} + +visualization_msgs::msg::Marker::SharedPtr get_shape_marker_ptr( + const autoware_auto_perception_msgs::msg::Shape & shape_msg, + const geometry_msgs::msg::Point & centroid, const geometry_msgs::msg::Quaternion & orientation, + const std_msgs::msg::ColorRGBA & color_rgba) +{ + auto marker_ptr = std::make_shared(); + marker_ptr->ns = std::string("shape"); + + using autoware_auto_perception_msgs::msg::Shape; + if (shape_msg.type == Shape::BOUNDING_BOX) { + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + calc_bounding_box_line_list(shape_msg, marker_ptr->points); + } else if (shape_msg.type == Shape::CYLINDER) { + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + calc_cylinder_line_list(shape_msg, marker_ptr->points); + } else if (shape_msg.type == Shape::POLYGON) { + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + calc_polygon_line_list(shape_msg, marker_ptr->points); + } else { + marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; + calc_polygon_line_list(shape_msg, marker_ptr->points); + } + + marker_ptr->action = visualization_msgs::msg::Marker::MODIFY; + marker_ptr->pose = to_pose(centroid, orientation); + marker_ptr->lifetime = rclcpp::Duration::from_seconds(0.2); + marker_ptr->scale.x = 0.03; + marker_ptr->color = color_rgba; + + return marker_ptr; +} + +void calc_bounding_box_line_list( + const autoware_auto_perception_msgs::msg::Shape & shape, + std::vector & points) +{ + geometry_msgs::msg::Point point; + point.x = shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = -shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = -shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + // up surface + point.x = shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = -shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + + // down surface + point.x = shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = -shape.dimensions.x / 2.0; + point.y = shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + + point.x = shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + point.x = -shape.dimensions.x / 2.0; + point.y = -shape.dimensions.y / 2.0; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); +} + +void calc_cylinder_line_list( + const autoware_auto_perception_msgs::msg::Shape & shape, + std::vector & points) +{ + const double radius = shape.dimensions.x * 0.5; + { + constexpr int n = 20; + geometry_msgs::msg::Point center; + center.x = 0.0; + center.y = 0.0; + center.z = shape.dimensions.z * 0.5; + calc_circle_line_list(center, radius, points, n); + center.z = -shape.dimensions.z * 0.5; + calc_circle_line_list(center, radius, points, n); + } + { + constexpr int n = 4; + for (int i = 0; i < n; ++i) { + geometry_msgs::msg::Point point; + point.x = std::cos( + (static_cast(i) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius; + point.y = std::sin( + (static_cast(i) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius; + point.z = shape.dimensions.z * 0.5; + points.push_back(point); + point.x = std::cos( + (static_cast(i) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius; + point.y = std::sin( + (static_cast(i) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius; + point.z = -shape.dimensions.z * 0.5; + points.push_back(point); + } + } +} + +void calc_circle_line_list( + const geometry_msgs::msg::Point center, const double radius, + std::vector & points, const int n) +{ + for (int i = 0; i < n; ++i) { + geometry_msgs::msg::Point point; + point.x = std::cos( + (static_cast(i) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius + + center.x; + point.y = std::sin( + (static_cast(i) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius + + center.y; + point.z = center.z; + points.push_back(point); + point.x = std::cos( + (static_cast(i + 1.0) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius + + center.x; + point.y = std::sin( + (static_cast(i + 1.0) / static_cast(n)) * 2.0 * M_PI + + M_PI / static_cast(n)) * + radius + + center.y; + point.z = center.z; + points.push_back(point); + } +} + +void calc_polygon_line_list( + const autoware_auto_perception_msgs::msg::Shape & shape, + std::vector & points) +{ + if (shape.footprint.points.size() < 2) { + RCLCPP_WARN( + rclcpp::get_logger("ObjectPolygonDisplayBase"), + "there are no enough footprint to visualize polygon"); + return; + } + for (size_t i = 0; i < shape.footprint.points.size(); ++i) { + geometry_msgs::msg::Point point; + point.x = shape.footprint.points.at(i).x; + point.y = shape.footprint.points.at(i).y; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.footprint.points + .at(static_cast(i + 1) % static_cast(shape.footprint.points.size())) + .x; + point.y = shape.footprint.points + .at(static_cast(i + 1) % static_cast(shape.footprint.points.size())) + .y; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + } + for (size_t i = 0; i < shape.footprint.points.size(); ++i) { + geometry_msgs::msg::Point point; + point.x = shape.footprint.points.at(i).x; + point.y = shape.footprint.points.at(i).y; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.footprint.points + .at(static_cast(i + 1) % static_cast(shape.footprint.points.size())) + .x; + point.y = shape.footprint.points + .at(static_cast(i + 1) % static_cast(shape.footprint.points.size())) + .y; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + } + for (size_t i = 0; i < shape.footprint.points.size(); ++i) { + geometry_msgs::msg::Point point; + point.x = shape.footprint.points.at(i).x; + point.y = shape.footprint.points.at(i).y; + point.z = shape.dimensions.z / 2.0; + points.push_back(point); + point.x = shape.footprint.points.at(i).x; + point.y = shape.footprint.points.at(i).y; + point.z = -shape.dimensions.z / 2.0; + points.push_back(point); + } +} + +void calc_path_line_list( + const autoware_auto_perception_msgs::msg::PredictedPath & paths, + std::vector & points) +{ + for (int i = 0; i < static_cast(paths.path.size()) - 1; ++i) { + geometry_msgs::msg::Point point; + point.x = paths.path.at(i).position.x; + point.y = paths.path.at(i).position.y; + point.z = paths.path.at(i).position.z; + points.push_back(point); + point.x = paths.path.at(i + 1).position.x; + point.y = paths.path.at(i + 1).position.y; + point.z = paths.path.at(i + 1).position.z; + points.push_back(point); + calc_circle_line_list(point, 0.25, points, 10); + } +} + +} // namespace detail +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware diff --git a/common/autoware_auto_perception_rviz_plugin/src/object_detection/predicted_objects_display.cpp b/common/autoware_auto_perception_rviz_plugin/src/object_detection/predicted_objects_display.cpp new file mode 100644 index 0000000000000..9bb4e79f5f75d --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/src/object_detection/predicted_objects_display.cpp @@ -0,0 +1,149 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +PredictedObjectsDisplay::PredictedObjectsDisplay() +: ObjectPolygonDisplayBase("tracks") {} + +void PredictedObjectsDisplay::processMessage(PredictedObjects::ConstSharedPtr msg) +{ + clear_markers(); + update_id_map(msg); + + for (const auto & object : msg->objects) { + // Get marker for shape + auto shape_marker = get_shape_marker_ptr( + object.shape, object.kinematics.initial_pose_with_covariance.pose.position, + object.kinematics.initial_pose_with_covariance.pose.orientation, object.classification); + if (shape_marker) { + auto shape_marker_ptr = shape_marker.value(); + shape_marker_ptr->header = msg->header; + shape_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(shape_marker_ptr); + } + + // Get marker for label + auto label_marker = get_label_marker_ptr( + object.kinematics.initial_pose_with_covariance.pose.position, + object.kinematics.initial_pose_with_covariance.pose.orientation, object.classification); + if (label_marker) { + auto label_marker_ptr = label_marker.value(); + label_marker_ptr->header = msg->header; + label_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(label_marker_ptr); + } + + // Get marker for id + geometry_msgs::msg::Point uuid_vis_position; + uuid_vis_position.x = object.kinematics.initial_pose_with_covariance.pose.position.x - 0.5; + uuid_vis_position.y = object.kinematics.initial_pose_with_covariance.pose.position.y; + uuid_vis_position.z = object.kinematics.initial_pose_with_covariance.pose.position.z - 0.5; + + auto id_marker = + get_uuid_marker_ptr(object.object_id, uuid_vis_position, object.classification); + if (id_marker) { + auto id_marker_ptr = id_marker.value(); + id_marker_ptr->header = msg->header; + id_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(id_marker_ptr); + } + + // Get marker for pose with covariance + auto pose_with_covariance_marker = + get_pose_with_covariance_marker_ptr(object.kinematics.initial_pose_with_covariance); + if (pose_with_covariance_marker) { + auto pose_with_covariance_marker_ptr = pose_with_covariance_marker.value(); + pose_with_covariance_marker_ptr->header = msg->header; + pose_with_covariance_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(pose_with_covariance_marker_ptr); + } + + // Get marker for velocity text + geometry_msgs::msg::Point vel_vis_position; + vel_vis_position.x = uuid_vis_position.x - 0.5; + vel_vis_position.y = uuid_vis_position.y; + vel_vis_position.z = uuid_vis_position.z - 0.5; + auto velocity_text_marker = get_velocity_text_marker_ptr( + object.kinematics.initial_twist_with_covariance.twist, vel_vis_position, + object.classification); + if (velocity_text_marker) { + auto velocity_text_marker_ptr = velocity_text_marker.value(); + velocity_text_marker_ptr->header = msg->header; + velocity_text_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(velocity_text_marker_ptr); + } + + // Get marker for twist + auto twist_marker = get_twist_marker_ptr( + object.kinematics.initial_pose_with_covariance, + object.kinematics.initial_twist_with_covariance); + if (twist_marker) { + auto twist_marker_ptr = twist_marker.value(); + twist_marker_ptr->header = msg->header; + twist_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(twist_marker_ptr); + } + + // Add marker for each candidate path + int32_t path_count = 0; + for (const auto & predicted_path : object.kinematics.predicted_paths) { + // Get marker for predicted path + auto predicted_path_marker = + get_predicted_path_marker_ptr(object.object_id, object.shape, predicted_path); + if (predicted_path_marker) { + auto predicted_path_marker_ptr = predicted_path_marker.value(); + predicted_path_marker_ptr->header = msg->header; + predicted_path_marker_ptr->id = + uuid_to_marker_id(object.object_id) + path_count * PATH_ID_CONSTANT; + add_marker(predicted_path_marker_ptr); + path_count++; + } + } + + // Add confidence text marker for each candidate path + path_count = 0; + for (const auto & predicted_path : object.kinematics.predicted_paths) { + if (predicted_path.path.empty()) { + continue; + } + auto path_confidence_marker = + get_path_confidence_marker_ptr(object.object_id, predicted_path); + if (path_confidence_marker) { + auto path_confidence_marker_ptr = path_confidence_marker.value(); + path_confidence_marker_ptr->header = msg->header; + path_confidence_marker_ptr->id = + uuid_to_marker_id(object.object_id) + path_count * PATH_ID_CONSTANT; + add_marker(path_confidence_marker_ptr); + path_count++; + } + } + } +} + +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +// Export the plugin +#include // NOLINT +PLUGINLIB_EXPORT_CLASS( + autoware::rviz_plugins::object_detection::PredictedObjectsDisplay, rviz_common::Display) diff --git a/common/autoware_auto_perception_rviz_plugin/src/object_detection/tracked_objects_display.cpp b/common/autoware_auto_perception_rviz_plugin/src/object_detection/tracked_objects_display.cpp new file mode 100644 index 0000000000000..bbdcca607bf35 --- /dev/null +++ b/common/autoware_auto_perception_rviz_plugin/src/object_detection/tracked_objects_display.cpp @@ -0,0 +1,115 @@ +// Copyright 2021 Apex.AI, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Co-developed by Tier IV, Inc. and Apex.AI, Inc. + +#include +#include + +namespace autoware +{ +namespace rviz_plugins +{ +namespace object_detection +{ +TrackedObjectsDisplay::TrackedObjectsDisplay() +: ObjectPolygonDisplayBase("tracks") {} + +void TrackedObjectsDisplay::processMessage(TrackedObjects::ConstSharedPtr msg) +{ + clear_markers(); + update_id_map(msg); + + for (const auto & object : msg->objects) { + // Get marker for shape + auto shape_marker = get_shape_marker_ptr( + object.shape, object.kinematics.pose_with_covariance.pose.position, + object.kinematics.pose_with_covariance.pose.orientation, object.classification); + if (shape_marker) { + auto shape_marker_ptr = shape_marker.value(); + shape_marker_ptr->header = msg->header; + shape_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(shape_marker_ptr); + } + + // Get marker for label + auto label_marker = get_label_marker_ptr( + object.kinematics.pose_with_covariance.pose.position, + object.kinematics.pose_with_covariance.pose.orientation, object.classification); + if (label_marker) { + auto label_marker_ptr = label_marker.value(); + label_marker_ptr->header = msg->header; + label_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(label_marker_ptr); + } + + // Get marker for id + geometry_msgs::msg::Point uuid_vis_position; + uuid_vis_position.x = object.kinematics.pose_with_covariance.pose.position.x - 0.5; + uuid_vis_position.y = object.kinematics.pose_with_covariance.pose.position.y; + uuid_vis_position.z = object.kinematics.pose_with_covariance.pose.position.z - 0.5; + + auto id_marker = + get_uuid_marker_ptr(object.object_id, uuid_vis_position, object.classification); + if (id_marker) { + auto id_marker_ptr = id_marker.value(); + id_marker_ptr->header = msg->header; + id_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(id_marker_ptr); + } + + // Get marker for pose with covariance + auto pose_with_covariance_marker = + get_pose_with_covariance_marker_ptr(object.kinematics.pose_with_covariance); + if (pose_with_covariance_marker) { + auto pose_with_covariance_marker_ptr = pose_with_covariance_marker.value(); + pose_with_covariance_marker_ptr->header = msg->header; + pose_with_covariance_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(pose_with_covariance_marker_ptr); + } + + // Get marker for velocity text + geometry_msgs::msg::Point vel_vis_position; + vel_vis_position.x = uuid_vis_position.x - 0.5; + vel_vis_position.y = uuid_vis_position.y; + vel_vis_position.z = uuid_vis_position.z - 0.5; + auto velocity_text_marker = get_velocity_text_marker_ptr( + object.kinematics.twist_with_covariance.twist, vel_vis_position, object.classification); + if (velocity_text_marker) { + auto velocity_text_marker_ptr = velocity_text_marker.value(); + velocity_text_marker_ptr->header = msg->header; + velocity_text_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(velocity_text_marker_ptr); + } + + // Get marker for twist + auto twist_marker = get_twist_marker_ptr( + object.kinematics.pose_with_covariance, object.kinematics.twist_with_covariance); + if (twist_marker) { + auto twist_marker_ptr = twist_marker.value(); + twist_marker_ptr->header = msg->header; + twist_marker_ptr->id = uuid_to_marker_id(object.object_id); + add_marker(twist_marker_ptr); + } + } +} + +} // namespace object_detection +} // namespace rviz_plugins +} // namespace autoware + +// Export the plugin +#include // NOLINT +PLUGINLIB_EXPORT_CLASS( + autoware::rviz_plugins::object_detection::TrackedObjectsDisplay, rviz_common::Display) diff --git a/common/autoware_datetime_rviz_plugin/CMakeLists.txt b/common/autoware_datetime_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..2d9168b0f1843 --- /dev/null +++ b/common/autoware_datetime_rviz_plugin/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.5) +project(autoware_datetime_rviz_plugin) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic -Werror) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) + +ament_auto_add_library(${PROJECT_NAME} SHARED + src/autoware_datetime_panel.hpp + src/autoware_datetime_panel.cpp +) +target_link_libraries(${PROJECT_NAME} + ${QT_LIBRARIES} +) +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + plugins +) diff --git a/common/autoware_datetime_rviz_plugin/README.md b/common/autoware_datetime_rviz_plugin/README.md new file mode 100644 index 0000000000000..b8e6bf77a75b4 --- /dev/null +++ b/common/autoware_datetime_rviz_plugin/README.md @@ -0,0 +1,16 @@ +# autoware_datetime_rviz_plugin + +## Purpose + +This plugin displays the ROS Time and Wall Time in rviz. + +## Assumptions / Known limits + +TBD. + +## Usage + +1. Start rviz and select panels/Add new panel. + ![select_panel](./images/select_panels.png) +2. Select autoware_datetime_rviz_plugin/AutowareDateTimePanel and press OK. + ![select_datetime_plugin](./images/select_datetime_plugin.png) diff --git a/common/autoware_datetime_rviz_plugin/icons/classes/AutowareDateTimePanel.png b/common/autoware_datetime_rviz_plugin/icons/classes/AutowareDateTimePanel.png new file mode 100644 index 0000000000000000000000000000000000000000..9431c2d4223632e7cf0c3d2c6a6203d8ffbf0af1 GIT binary patch literal 561 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 Ni{i6IylL;T{{zK3R#E@} literal 0 HcmV?d00001 diff --git a/common/autoware_datetime_rviz_plugin/package.xml b/common/autoware_datetime_rviz_plugin/package.xml new file mode 100644 index 0000000000000..747e7a0204553 --- /dev/null +++ b/common/autoware_datetime_rviz_plugin/package.xml @@ -0,0 +1,26 @@ + + + + autoware_datetime_rviz_plugin + 0.0.0 + The autoware_datetime_rviz_plugin package + Takagi, Isamu + Apache License 2.0 + + ament_cmake_auto + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rclcpp + rviz_common + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + + + diff --git a/common/autoware_datetime_rviz_plugin/plugins/plugin_description.xml b/common/autoware_datetime_rviz_plugin/plugins/plugin_description.xml new file mode 100644 index 0000000000000..98ed9bb7b0242 --- /dev/null +++ b/common/autoware_datetime_rviz_plugin/plugins/plugin_description.xml @@ -0,0 +1,9 @@ + + + + AutowareDateTimePanel + + + diff --git a/common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.cpp b/common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.cpp new file mode 100644 index 0000000000000..e2c6be4d00a60 --- /dev/null +++ b/common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.cpp @@ -0,0 +1,66 @@ +// Copyright 2021 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "autoware_datetime_panel.hpp" + +#include +#include +#include +#include +#include + +#include + +void setFormatTime(QLineEdit * line, double time) +{ + char buffer[128]; + time_t seconds = static_cast(time); + strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localtime(&seconds)); + line->setText(QString(buffer) + QString::number((time - seconds), 'f', 3).rightRef(4)); +} + +AutowareDateTimePanel::AutowareDateTimePanel(QWidget * parent) : rviz_common::Panel(parent) +{ + ros_time_label_ = new QLineEdit; + ros_time_label_->setReadOnly(true); + + wall_time_label_ = new QLineEdit; + wall_time_label_->setReadOnly(true); + + QHBoxLayout * layout = new QHBoxLayout(this); + layout->addWidget(new QLabel("ROS Time:")); + layout->addWidget(ros_time_label_); + layout->addWidget(new QLabel("Wall Time:")); + layout->addWidget(wall_time_label_); + setLayout(layout); + + QTimer * timer = new QTimer(this); + connect(timer, &QTimer::timeout, this, &AutowareDateTimePanel::update); + timer->start(60); +} + +void AutowareDateTimePanel::onInitialize() +{ + rviz_ros_node_ = getDisplayContext()->getRosNodeAbstraction(); +} + +void AutowareDateTimePanel::update() +{ + setFormatTime( + ros_time_label_, rviz_ros_node_.lock()->get_raw_node()->get_clock()->now().seconds()); + setFormatTime(wall_time_label_, rclcpp::Clock().now().seconds()); +} + +#include +PLUGINLIB_EXPORT_CLASS(AutowareDateTimePanel, rviz_common::Panel) diff --git a/common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.hpp b/common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.hpp new file mode 100644 index 0000000000000..d1f7087efae27 --- /dev/null +++ b/common/autoware_datetime_rviz_plugin/src/autoware_datetime_panel.hpp @@ -0,0 +1,41 @@ +// Copyright 2021 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef AUTOWARE_DATETIME_PANEL_HPP_ +#define AUTOWARE_DATETIME_PANEL_HPP_ + +#include +#include +#include + +class QLineEdit; + +class AutowareDateTimePanel : public rviz_common::Panel +{ + Q_OBJECT + +public: + explicit AutowareDateTimePanel(QWidget * parent = nullptr); + void update(); + void onInitialize() override; + +private: + QLineEdit * ros_time_label_; + QLineEdit * wall_time_label_; + +protected: + rviz_common::ros_integration::RosNodeAbstractionIface::WeakPtr rviz_ros_node_; +}; + +#endif // AUTOWARE_DATETIME_PANEL_HPP_ diff --git a/common/autoware_localization_rviz_plugin/CMakeLists.txt b/common/autoware_localization_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..0b1854c34d7d3 --- /dev/null +++ b/common/autoware_localization_rviz_plugin/CMakeLists.txt @@ -0,0 +1,43 @@ +cmake_minimum_required(VERSION 3.5) +project(autoware_localization_rviz_plugin) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) + +ament_auto_add_library(${PROJECT_NAME} SHARED + src/pose_history/pose_history_display.hpp + src/pose_history/pose_history_display.cpp +) + +target_link_libraries(${PROJECT_NAME} + ${QT_LIBRARIES} +) + +# Export the plugin to be imported by rviz2 +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + plugins +) diff --git a/common/autoware_localization_rviz_plugin/README.md b/common/autoware_localization_rviz_plugin/README.md new file mode 100644 index 0000000000000..d26c0e71a5b82 --- /dev/null +++ b/common/autoware_localization_rviz_plugin/README.md @@ -0,0 +1,38 @@ +# autoware_localization_rviz_plugin + +## Purpose + +This plugin can display the history of the localization obtained by ekf_localizer or ndt_scan_matching. + +## Inputs / Outputs + +### Input + +| Name | Type | Description | +| ------------ | --------------------------------- | ---------------------------------------------------------------------------------------------- | +| `input/pose` | `geometry_msgs::msg::PoseStamped` | In input/pose, put the result of localization calculated by ekf_localizer or ndt_scan_matching | + +## Parameters + +### Core Parameters + +| Name | Type | Default Value | Description | +| ----------------------- | ------ | ------------- | -------------------------- | +| `property_buffer_size_` | int | 100 | Buffer size of topic | +| `property_line_view_` | bool | true | Use Line property or not | +| `property_line_width_` | float | 0.1 | Width of Line property [m] | +| `property_line_alpha_` | float | 1.0 | Alpha of Line property | +| `property_line_color_` | QColor | Qt::white | Color of Line property | + +## Assumptions / Known limits + +TBD. + +## Usage + +1. Start rviz and select Add under the Displays panel. + ![select_add](./images/select_add.png) +2. Select autoware_localization_rviz_plugin/PoseHistory and press OK. + ![select_localization_plugin](./images/select_localization_plugin.png) +3. Enter the name of the topic where you want to view the trajectory. + ![select_topic_name](./images/select_topic_name.png) diff --git a/common/autoware_localization_rviz_plugin/icons/classes/PoseHistory.png b/common/autoware_localization_rviz_plugin/icons/classes/PoseHistory.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_localization_rviz_plugin/images/select_add.png b/common/autoware_localization_rviz_plugin/images/select_add.png new file mode 100644 index 0000000000000000000000000000000000000000..c5130b6092384e5477ca0c52e856eee862f69431 GIT binary patch literal 18359 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 literal 0 HcmV?d00001 diff --git a/common/autoware_localization_rviz_plugin/images/select_topic_name.png b/common/autoware_localization_rviz_plugin/images/select_topic_name.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9ebc752f7e6886763dc5f054414ac82e3b8102 GIT binary patch literal 14723 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 literal 0 HcmV?d00001 diff --git a/common/autoware_localization_rviz_plugin/package.xml b/common/autoware_localization_rviz_plugin/package.xml new file mode 100644 index 0000000000000..e3283062da819 --- /dev/null +++ b/common/autoware_localization_rviz_plugin/package.xml @@ -0,0 +1,29 @@ + + + + autoware_localization_rviz_plugin + 0.1.0 + The autoware_localization_rviz_plugin package + Apache License 2.0 + + Isamu Takagi + + ament_cmake_auto + geometry_msgs + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rclcpp + rviz_common + rviz_default_plugins + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + + + diff --git a/common/autoware_localization_rviz_plugin/plugins/plugin_description.xml b/common/autoware_localization_rviz_plugin/plugins/plugin_description.xml new file mode 100644 index 0000000000000..c06af3364eb2e --- /dev/null +++ b/common/autoware_localization_rviz_plugin/plugins/plugin_description.xml @@ -0,0 +1,9 @@ + + + + Display pose history + + + diff --git a/common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.cpp b/common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.cpp new file mode 100644 index 0000000000000..f31eb833419fb --- /dev/null +++ b/common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.cpp @@ -0,0 +1,141 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "pose_history_display.hpp" + +#include +#include +#include +#include +#include +#include +#include + +namespace rviz_plugins +{ +PoseHistory::PoseHistory() : last_stamp_(0, 0, RCL_ROS_TIME) +{ + property_buffer_size_ = new rviz_common::properties::IntProperty("Buffer Size", 100, "", this); + property_line_view_ = new rviz_common::properties::BoolProperty("Line", true, "", this); + property_line_width_ = + new rviz_common::properties::FloatProperty("Width", 0.1, "", property_line_view_); + property_line_alpha_ = + new rviz_common::properties::FloatProperty("Alpha", 1.0, "", property_line_view_); + property_line_alpha_->setMin(0.0); + property_line_alpha_->setMax(1.0); + property_line_color_ = + new rviz_common::properties::ColorProperty("Color", Qt::white, "", property_line_view_); + + property_buffer_size_->setMin(0); + property_buffer_size_->setMax(16000); + property_line_width_->setMin(0.0); +} + +PoseHistory::~PoseHistory() +{ + // Properties are deleted by Qt +} + +void PoseHistory::onInitialize() +{ + MFDClass::onInitialize(); + lines_.reset(new rviz_rendering::BillboardLine(scene_manager_, scene_node_)); +} + +void PoseHistory::onEnable() { subscribe(); } + +void PoseHistory::onDisable() { unsubscribe(); } + +void PoseHistory::update(float wall_dt, float ros_dt) +{ + (void)wall_dt; + (void)ros_dt; + + if (!history_.empty()) { + lines_->clear(); + if (property_line_view_->getBool()) { + updateLines(); + } + } +} + +void PoseHistory::subscribe() { MFDClass::subscribe(); } + +void PoseHistory::unsubscribe() +{ + MFDClass::unsubscribe(); + + history_.clear(); + lines_->clear(); +} + +void PoseHistory::processMessage(const geometry_msgs::msg::PoseStamped::ConstSharedPtr message) +{ + if (!rviz_common::validateFloats(message->pose)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Topic", + "Message contained invalid floating point values (nans or infs)"); + return; + } + if (target_frame_ != message->header.frame_id) { + history_.clear(); + target_frame_ = message->header.frame_id; + } + history_.emplace_back(message); + last_stamp_ = message->header.stamp; + + updateHistory(); +} + +void PoseHistory::updateHistory() +{ + const auto buffer_size = static_cast(property_buffer_size_->getInt()); + while (buffer_size < history_.size()) { + history_.pop_front(); + } +} + +void PoseHistory::updateLines() +{ + Ogre::ColourValue color = rviz_common::properties::qtToOgre(property_line_color_->getColor()); + color.a = property_line_alpha_->getFloat(); + Ogre::Vector3 position; + Ogre::Quaternion orientation; + + auto frame_manager = context_->getFrameManager(); + if (!frame_manager->getTransform(target_frame_, last_stamp_, position, orientation)) { + setMissingTransformToFixedFrame(target_frame_); + return; + } + + setTransformOk(); + lines_->setMaxPointsPerLine(history_.size()); + lines_->setLineWidth(property_line_width_->getFloat()); + lines_->setPosition(position); + lines_->setOrientation(orientation); + lines_->setColor(color.r, color.g, color.b, color.a); + + for (const auto & message : history_) { + Ogre::Vector3 point; + point.x = message->pose.position.x; + point.y = message->pose.position.y; + point.z = message->pose.position.z; + lines_->addPoint(point); + } +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::PoseHistory, rviz_common::Display) diff --git a/common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.hpp b/common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.hpp new file mode 100644 index 0000000000000..0dfc666c64dea --- /dev/null +++ b/common/autoware_localization_rviz_plugin/src/pose_history/pose_history_display.hpp @@ -0,0 +1,81 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef POSE_HISTORY__POSE_HISTORY_DISPLAY_HPP_ +#define POSE_HISTORY__POSE_HISTORY_DISPLAY_HPP_ + +#include + +#include + +#include +#include +#include + +namespace rviz_rendering +{ +class BillboardLine; +} // namespace rviz_rendering +namespace rviz_common +{ +namespace properties +{ +class ColorProperty; +class FloatProperty; +class IntProperty; +class BoolProperty; +} // namespace properties +} // namespace rviz_common + +namespace rviz_plugins +{ +class PoseHistory : public rviz_common::MessageFilterDisplay +{ + Q_OBJECT + +public: + PoseHistory(); + ~PoseHistory() override; + +protected: + void onInitialize() override; + void onEnable() override; + void onDisable() override; + void update(float wall_dt, float ros_dt) override; + +private Q_SLOTS: + void subscribe(); + void unsubscribe(); + void processMessage(const geometry_msgs::msg::PoseStamped::ConstSharedPtr message); + +private: + void updateHistory(); + void updateLines(); + +private: + std::string target_frame_; + std::deque history_; + std::unique_ptr lines_; + rclcpp::Time last_stamp_; + + rviz_common::properties::IntProperty * property_buffer_size_; + rviz_common::properties::BoolProperty * property_line_view_; + rviz_common::properties::FloatProperty * property_line_width_; + rviz_common::properties::FloatProperty * property_line_alpha_; + rviz_common::properties::ColorProperty * property_line_color_; +}; + +} // namespace rviz_plugins + +#endif // POSE_HISTORY__POSE_HISTORY_DISPLAY_HPP_ diff --git a/common/autoware_perception_rviz_plugin/CMakeLists.txt b/common/autoware_perception_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..186ca20c1efa1 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/CMakeLists.txt @@ -0,0 +1,46 @@ +cmake_minimum_required(VERSION 3.5) +project(autoware_perception_rviz_plugin) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic -Werror) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) + +## Declare a C++ library +ament_auto_add_library(autoware_perception_rviz_plugin SHARED + src/tools/pedestrian_pose.cpp + src/tools/car_pose.cpp + src/tools/unknown_pose.cpp + src/tools/delete_all_objects.cpp +) + +target_link_libraries(autoware_perception_rviz_plugin + ${QT_LIBRARIES}) + +# Export the plugin to be imported by rviz2 +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + plugins +) diff --git a/common/autoware_perception_rviz_plugin/README.md b/common/autoware_perception_rviz_plugin/README.md new file mode 100644 index 0000000000000..792f3ec4cc459 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/README.md @@ -0,0 +1,79 @@ +# autoware_perception_rviz_plugin + +## Purpose + +This plugin is used to generate dummy pedestrians, cars, and obstacles in planning simulator. + +## Overview + +The CarInitialPoseTool sends a topic for generating a dummy car. +The PedestrianInitialPoseTool sends a topic for generating a dummy pedestrian. +The UnknownInitialPoseTool sends a topic for generating a dummy obstacle. +The DeleteAllObjectsTool deletes the dummy cars, pedestrians, and obstacles displayed by the above three tools. + +## Inputs / Outputs + +### Output + +| Name | Type | Description | +| ---------------------------------------------------- | ----------------------------------------- | ----------------------------------------------- | +| `/simulation/dummy_perception_publisher/object_info` | `dummy_perception_publisher::msg::Object` | The topic on which to publish dummy object info | + +## Parameter + +### Core Parameters + +#### CarPose + +| Name | Type | Default Value | Description | +| ----------------- | ------ | ---------------------------------------------------- | ----------------------------------------------- | +| `topic_property_` | string | `/simulation/dummy_perception_publisher/object_info` | The topic on which to publish dummy object info | +| `std_dev_x_` | float | 0.03 | X standard deviation for initial pose [m] | +| `std_dev_y_` | float | 0.03 | Y standard deviation for initial pose [m] | +| `std_dev_z_` | float | 0.03 | Z standard deviation for initial pose [m] | +| `std_dev_theta_` | float | 5.0 \* M_PI / 180.0 | Theta standard deviation for initial pose [rad] | +| `position_z_` | float | 0.0 | Z position for initial pose [m] | +| `velocity_` | float | 0.0 | Velocity [m/s] | + +#### PedestrianPose + +| Name | Type | Default Value | Description | +| ----------------- | ------ | ---------------------------------------------------- | ----------------------------------------------- | +| `topic_property_` | string | `/simulation/dummy_perception_publisher/object_info` | The topic on which to publish dummy object info | +| `std_dev_x_` | float | 0.03 | X standard deviation for initial pose [m] | +| `std_dev_y_` | float | 0.03 | Y standard deviation for initial pose [m] | +| `std_dev_z_` | float | 0.03 | Z standard deviation for initial pose [m] | +| `std_dev_theta_` | float | 5.0 \* M_PI / 180.0 | Theta standard deviation for initial pose [rad] | +| `position_z_` | float | 0.0 | Z position for initial pose [m] | +| `velocity_` | float | 0.0 | Velocity [m/s] | + +#### UnknownPose + +| Name | Type | Default Value | Description | +| ----------------- | ------ | ---------------------------------------------------- | ----------------------------------------------- | +| `topic_property_` | string | `/simulation/dummy_perception_publisher/object_info` | The topic on which to publish dummy object info | +| `std_dev_x_` | float | 0.03 | X standard deviation for initial pose [m] | +| `std_dev_y_` | float | 0.03 | Y standard deviation for initial pose [m] | +| `std_dev_z_` | float | 0.03 | Z standard deviation for initial pose [m] | +| `std_dev_theta_` | float | 5.0 \* M_PI / 180.0 | Theta standard deviation for initial pose [rad] | +| `position_z_` | float | 0.0 | Z position for initial pose [m] | +| `velocity_` | float | 0.0 | Velocity [m/s] | + +#### DeleteAllObjects + +| Name | Type | Default Value | Description | +| ----------------- | ------ | ---------------------------------------------------- | ----------------------------------------------- | +| `topic_property_` | string | `/simulation/dummy_perception_publisher/object_info` | The topic on which to publish dummy object info | + +## Assumptions / Known limits + +Using a planning simulator + +## Usage + +1. Start rviz and select + on the tool tab. + ![select_add](./images/select_add.png) +2. Select one of the following: autoware_perception_rviz_plugin and press OK. + ![select_plugin](./images/select_plugin.png) +3. Select the new item in the tool tab (2D Dummy Car in the example) and click on it in rviz. + ![select_dummy_car](./images/select_dummy_car.png) diff --git a/common/autoware_perception_rviz_plugin/icons/classes/CarInitialPoseTool.png b/common/autoware_perception_rviz_plugin/icons/classes/CarInitialPoseTool.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_perception_rviz_plugin/icons/classes/DeleteAllObjectsTool.png b/common/autoware_perception_rviz_plugin/icons/classes/DeleteAllObjectsTool.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_perception_rviz_plugin/icons/classes/PedestrianInitialPoseTool.png b/common/autoware_perception_rviz_plugin/icons/classes/PedestrianInitialPoseTool.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_perception_rviz_plugin/icons/classes/UnknownInitialPoseTool.png b/common/autoware_perception_rviz_plugin/icons/classes/UnknownInitialPoseTool.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_perception_rviz_plugin/images/select_add.png b/common/autoware_perception_rviz_plugin/images/select_add.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b73e874b230f83e21b51eabdbb116409d1264e GIT binary patch literal 53086 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 literal 0 HcmV?d00001 diff --git a/common/autoware_perception_rviz_plugin/images/select_dummy_car.png b/common/autoware_perception_rviz_plugin/images/select_dummy_car.png new file mode 100644 index 0000000000000000000000000000000000000000..6a08a2b37ee16b49562b2067b0e4e9e98ad94874 GIT binary patch literal 53764 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 + + autoware_perception_rviz_plugin + 0.1.0 + The autoware_perception_rviz_plugin package + + Yukihiro Saito + Apache License 2.0 + + ament_cmake + + dummy_perception_publisher + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rviz_common + rviz_default_plugins + tf2_geometry_msgs + tf2_ros + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + + diff --git a/common/autoware_perception_rviz_plugin/plugins/plugin_description.xml b/common/autoware_perception_rviz_plugin/plugins/plugin_description.xml new file mode 100644 index 0000000000000..fcbbd27f65eb6 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/plugins/plugin_description.xml @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/common/autoware_perception_rviz_plugin/src/tools/car_pose.cpp b/common/autoware_perception_rviz_plugin/src/tools/car_pose.cpp new file mode 100644 index 0000000000000..75038d85619de --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/car_pose.cpp @@ -0,0 +1,166 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "car_pose.hpp" + +#include + +#include +#include + +#include +#include +#include + +namespace rviz_plugins +{ +CarInitialPoseTool::CarInitialPoseTool() +{ + shortcut_key_ = 'k'; + + topic_property_ = new rviz_common::properties::StringProperty( + "Pose Topic", "/simulation/dummy_perception_publisher/object_info", + "The topic on which to publish dummy object info.", getPropertyContainer(), SLOT(updateTopic()), + this); + std_dev_x_ = new rviz_common::properties::FloatProperty( + "X std deviation", 0.03, "X standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_y_ = new rviz_common::properties::FloatProperty( + "Y std deviation", 0.03, "Y standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_z_ = new rviz_common::properties::FloatProperty( + "Z std deviation", 0.03, "Z standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_theta_ = new rviz_common::properties::FloatProperty( + "Theta std deviation", 5.0 * M_PI / 180.0, "Theta standard deviation for initial pose [rad]", + getPropertyContainer()); + position_z_ = new rviz_common::properties::FloatProperty( + "Z position", 0.0, "Z position for initial pose [m]", getPropertyContainer()); + velocity_ = new rviz_common::properties::FloatProperty( + "Velocity", 0.0, "velocity [m/s]", getPropertyContainer()); + std_dev_x_->setMin(0); + std_dev_y_->setMin(0); + std_dev_z_->setMin(0); + std_dev_theta_->setMin(0); + position_z_->setMin(0); +} + +void CarInitialPoseTool::onInitialize() +{ + PoseTool::onInitialize(); + setName("2D Dummy Car"); + updateTopic(); +} + +void CarInitialPoseTool::updateTopic() +{ + rclcpp::Node::SharedPtr raw_node = context_->getRosNodeAbstraction().lock()->get_raw_node(); + dummy_object_info_pub_ = raw_node->create_publisher( + topic_property_->getStdString(), 1); + clock_ = raw_node->get_clock(); +} + +void CarInitialPoseTool::onPoseSet(double x, double y, double theta) +{ + dummy_perception_publisher::msg::Object output_msg; + std::string fixed_frame = context_->getFixedFrame().toStdString(); + + // header + output_msg.header.frame_id = fixed_frame; + output_msg.header.stamp = clock_->now(); + + // semantic + output_msg.classification.label = autoware_auto_perception_msgs::msg::ObjectClassification::CAR; + output_msg.classification.probability = 1.0; + + // shape + output_msg.shape.type = autoware_auto_perception_msgs::msg::Shape::BOUNDING_BOX; + const double width = 1.8; + const double length = 4.0; + output_msg.shape.dimensions.x = length; + output_msg.shape.dimensions.y = width; + output_msg.shape.dimensions.z = 2.0; + + // initial state + // pose + output_msg.initial_state.pose_covariance.pose.position.x = x; + output_msg.initial_state.pose_covariance.pose.position.y = y; + output_msg.initial_state.pose_covariance.pose.position.z = position_z_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[0] = + std_dev_x_->getFloat() * std_dev_x_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[7] = + std_dev_y_->getFloat() * std_dev_y_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[14] = + std_dev_z_->getFloat() * std_dev_z_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[35] = + std_dev_theta_->getFloat() * std_dev_theta_->getFloat(); + tf2::Quaternion quat; + quat.setRPY(0.0, 0.0, theta); + output_msg.initial_state.pose_covariance.pose.orientation = tf2::toMsg(quat); + RCLCPP_INFO( + rclcpp::get_logger("CarInitialPoseTool"), "Setting pose: %.3f %.3f %.3f %.3f [frame=%s]", x, y, + position_z_->getFloat(), theta, fixed_frame.c_str()); + // twist + output_msg.initial_state.twist_covariance.twist.linear.x = velocity_->getFloat(); + output_msg.initial_state.twist_covariance.twist.linear.y = 0.0; + output_msg.initial_state.twist_covariance.twist.linear.z = 0.0; + RCLCPP_INFO( + rclcpp::get_logger("CarInitialPoseTool"), "Setting twist: %.3f %.3f %.3f [frame=%s]", + velocity_->getFloat(), 0.0, 0.0, fixed_frame.c_str()); + + // action + output_msg.action = dummy_perception_publisher::msg::Object::ADD; + + // id + std::mt19937 gen(std::random_device{}()); + std::independent_bits_engine bit_eng(gen); + std::generate(output_msg.id.uuid.begin(), output_msg.id.uuid.end(), bit_eng); + + dummy_object_info_pub_->publish(output_msg); +} + +} // end namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::CarInitialPoseTool, rviz_common::Tool) diff --git a/common/autoware_perception_rviz_plugin/src/tools/car_pose.hpp b/common/autoware_perception_rviz_plugin/src/tools/car_pose.hpp new file mode 100644 index 0000000000000..adc3a671676bd --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/car_pose.hpp @@ -0,0 +1,94 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TOOLS__CAR_POSE_HPP_ +#define TOOLS__CAR_POSE_HPP_ + +#ifndef Q_MOC_RUN // See: https://bugreports.qt-project.org/browse/QTBUG-22829 +#include +#include +#include +#include +#include +#include +#endif + +#include + +namespace rviz_plugins +{ +class CarInitialPoseTool : public rviz_default_plugins::tools::PoseTool +{ + Q_OBJECT + +public: + CarInitialPoseTool(); + virtual ~CarInitialPoseTool() {} + virtual void onInitialize(); + +protected: + virtual void onPoseSet(double x, double y, double theta); + +private Q_SLOTS: + void updateTopic(); + +private: + rclcpp::Clock::SharedPtr clock_; + rclcpp::Publisher::SharedPtr dummy_object_info_pub_; + + rviz_common::properties::StringProperty * topic_property_; + rviz_common::properties::FloatProperty * std_dev_x_; + rviz_common::properties::FloatProperty * std_dev_y_; + rviz_common::properties::FloatProperty * std_dev_z_; + rviz_common::properties::FloatProperty * std_dev_theta_; + rviz_common::properties::FloatProperty * position_z_; + rviz_common::properties::FloatProperty * velocity_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__CAR_POSE_HPP_ diff --git a/common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.cpp b/common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.cpp new file mode 100644 index 0000000000000..40984facf4459 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.cpp @@ -0,0 +1,100 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "delete_all_objects.hpp" + +#include + +#include + +namespace rviz_plugins +{ +DeleteAllObjectsTool::DeleteAllObjectsTool() +{ + shortcut_key_ = 'd'; + + topic_property_ = new rviz_common::properties::StringProperty( + "Pose Topic", "/simulation/dummy_perception_publisher/object_info", + "The topic on which to publish dummy object info.", getPropertyContainer(), SLOT(updateTopic()), + this); +} + +void DeleteAllObjectsTool::onInitialize() +{ + PoseTool::onInitialize(); + setName("Delete All Objects"); + updateTopic(); +} + +void DeleteAllObjectsTool::updateTopic() +{ + rclcpp::Node::SharedPtr raw_node = context_->getRosNodeAbstraction().lock()->get_raw_node(); + dummy_object_info_pub_ = raw_node->create_publisher( + topic_property_->getStdString(), 1); + clock_ = raw_node->get_clock(); +} + +void DeleteAllObjectsTool::onPoseSet( + [[maybe_unused]] double x, [[maybe_unused]] double y, [[maybe_unused]] double theta) +{ + dummy_perception_publisher::msg::Object output_msg; + std::string fixed_frame = context_->getFixedFrame().toStdString(); + + // header + output_msg.header.frame_id = fixed_frame; + output_msg.header.stamp = clock_->now(); + + // action + output_msg.action = dummy_perception_publisher::msg::Object::DELETEALL; + + dummy_object_info_pub_->publish(output_msg); +} + +} // end namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::DeleteAllObjectsTool, rviz_common::Tool) diff --git a/common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.hpp b/common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.hpp new file mode 100644 index 0000000000000..4c559445208da --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/delete_all_objects.hpp @@ -0,0 +1,88 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TOOLS__DELETE_ALL_OBJECTS_HPP_ +#define TOOLS__DELETE_ALL_OBJECTS_HPP_ + +#ifndef Q_MOC_RUN // See: https://bugreports.qt-project.org/browse/QTBUG-22829 +#include +#include +#include +#include +#include +#include +#endif + +#include + +namespace rviz_plugins +{ +class DeleteAllObjectsTool : public rviz_default_plugins::tools::PoseTool +{ + Q_OBJECT + +public: + DeleteAllObjectsTool(); + virtual ~DeleteAllObjectsTool() {} + virtual void onInitialize(); + +protected: + virtual void onPoseSet(double x, double y, double theta); + +private Q_SLOTS: + void updateTopic(); + +private: + rclcpp::Clock::SharedPtr clock_; + rclcpp::Publisher::SharedPtr dummy_object_info_pub_; + + rviz_common::properties::StringProperty * topic_property_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__DELETE_ALL_OBJECTS_HPP_ diff --git a/common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.cpp b/common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.cpp new file mode 100644 index 0000000000000..85b91aeb64b41 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.cpp @@ -0,0 +1,171 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pedestrian_pose.hpp" + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +namespace rviz_plugins +{ +PedestrianInitialPoseTool::PedestrianInitialPoseTool() +{ + shortcut_key_ = 'l'; + + topic_property_ = new rviz_common::properties::StringProperty( + "Pose Topic", "/simulation/dummy_perception_publisher/object_info", + "The topic on which to publish dummy object info.", getPropertyContainer(), SLOT(updateTopic()), + this); + std_dev_x_ = new rviz_common::properties::FloatProperty( + "X std deviation", 0.03, "X standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_y_ = new rviz_common::properties::FloatProperty( + "Y std deviation", 0.03, "Y standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_z_ = new rviz_common::properties::FloatProperty( + "Z std deviation", 0.03, "Z standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_theta_ = new rviz_common::properties::FloatProperty( + "Theta std deviation", 5.0 * M_PI / 180.0, "Theta standard deviation for initial pose [rad]", + getPropertyContainer()); + position_z_ = new rviz_common::properties::FloatProperty( + "Z position", 0.0, "Z position for initial pose [m]", getPropertyContainer()); + velocity_ = new rviz_common::properties::FloatProperty( + "Velocity", 0.0, "velocity [m/s]", getPropertyContainer()); + std_dev_x_->setMin(0); + std_dev_y_->setMin(0); + std_dev_z_->setMin(0); + std_dev_theta_->setMin(0); + position_z_->setMin(0); +} + +void PedestrianInitialPoseTool::onInitialize() +{ + PoseTool::onInitialize(); + setName("2D Dummy Pedestrian"); + updateTopic(); +} + +void PedestrianInitialPoseTool::updateTopic() +{ + rclcpp::Node::SharedPtr raw_node = context_->getRosNodeAbstraction().lock()->get_raw_node(); + dummy_object_info_pub_ = raw_node->create_publisher( + topic_property_->getStdString(), 1); + clock_ = raw_node->get_clock(); +} + +void PedestrianInitialPoseTool::onPoseSet(double x, double y, double theta) +{ + dummy_perception_publisher::msg::Object output_msg; + std::string fixed_frame = context_->getFixedFrame().toStdString(); + + // header + output_msg.header.frame_id = fixed_frame; + output_msg.header.stamp = clock_->now(); + + // semantic + output_msg.classification.label = + autoware_auto_perception_msgs::msg::ObjectClassification::PEDESTRIAN; + output_msg.classification.probability = 1.0; + + // shape + output_msg.shape.type = autoware_auto_perception_msgs::msg::Shape::CYLINDER; + const double width = 0.8; + const double length = 0.8; + output_msg.shape.dimensions.x = length; + output_msg.shape.dimensions.y = width; + output_msg.shape.dimensions.z = 2.0; + + // initial state + // pose + output_msg.initial_state.pose_covariance.pose.position.x = x; + output_msg.initial_state.pose_covariance.pose.position.y = y; + output_msg.initial_state.pose_covariance.pose.position.z = position_z_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[0] = + std_dev_x_->getFloat() * std_dev_x_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[7] = + std_dev_y_->getFloat() * std_dev_y_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[14] = + std_dev_z_->getFloat() * std_dev_z_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[35] = + std_dev_theta_->getFloat() * std_dev_theta_->getFloat(); + tf2::Quaternion quat; + quat.setRPY(0.0, 0.0, theta); + output_msg.initial_state.pose_covariance.pose.orientation = tf2::toMsg(quat); + RCLCPP_INFO( + rclcpp::get_logger("PedestrianInitialPoseTool"), "Setting pose: %.3f %.3f %.3f %.3f [frame=%s]", + x, y, position_z_->getFloat(), theta, fixed_frame.c_str()); + // twist + output_msg.initial_state.twist_covariance.twist.linear.x = velocity_->getFloat(); + output_msg.initial_state.twist_covariance.twist.linear.y = 0.0; + output_msg.initial_state.twist_covariance.twist.linear.z = 0.0; + RCLCPP_INFO( + rclcpp::get_logger("PedestrianInitialPoseTool"), "Setting twist: %.3f %.3f %.3f [frame=%s]", + velocity_->getFloat(), 0.0, 0.0, fixed_frame.c_str()); + + // action + output_msg.action = dummy_perception_publisher::msg::Object::ADD; + + // id + std::mt19937 gen(std::random_device{}()); + std::independent_bits_engine bit_eng(gen); + std::generate(output_msg.id.uuid.begin(), output_msg.id.uuid.end(), bit_eng); + + dummy_object_info_pub_->publish(output_msg); +} + +} // end namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::PedestrianInitialPoseTool, rviz_common::Tool) diff --git a/common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.hpp b/common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.hpp new file mode 100644 index 0000000000000..c463dbceeefd1 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/pedestrian_pose.hpp @@ -0,0 +1,93 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TOOLS__PEDESTRIAN_POSE_HPP_ +#define TOOLS__PEDESTRIAN_POSE_HPP_ + +#ifndef Q_MOC_RUN // See: https://bugreports.qt-project.org/browse/QTBUG-22829 +#include +#include +#include +#include +#include +#endif + +#include + +namespace rviz_plugins +{ +class PedestrianInitialPoseTool : public rviz_default_plugins::tools::PoseTool +{ + Q_OBJECT + +public: + PedestrianInitialPoseTool(); + virtual ~PedestrianInitialPoseTool() {} + virtual void onInitialize(); + +protected: + virtual void onPoseSet(double x, double y, double theta); + +private Q_SLOTS: + void updateTopic(); + +private: + rclcpp::Clock::SharedPtr clock_; + rclcpp::Publisher::SharedPtr dummy_object_info_pub_; + + rviz_common::properties::StringProperty * topic_property_; + rviz_common::properties::FloatProperty * std_dev_x_; + rviz_common::properties::FloatProperty * std_dev_y_; + rviz_common::properties::FloatProperty * std_dev_z_; + rviz_common::properties::FloatProperty * std_dev_theta_; + rviz_common::properties::FloatProperty * position_z_; + rviz_common::properties::FloatProperty * velocity_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__PEDESTRIAN_POSE_HPP_ diff --git a/common/autoware_perception_rviz_plugin/src/tools/unknown_pose.cpp b/common/autoware_perception_rviz_plugin/src/tools/unknown_pose.cpp new file mode 100644 index 0000000000000..c88e631f361c0 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/unknown_pose.cpp @@ -0,0 +1,166 @@ +// Copyright 2021 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "unknown_pose.hpp" + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +namespace rviz_plugins +{ +UnknownInitialPoseTool::UnknownInitialPoseTool() +{ + shortcut_key_ = 'u'; + + topic_property_ = new rviz_common::properties::StringProperty( + "Pose Topic", "/simulation/dummy_perception_publisher/object_info", + "The topic on which to publish dummy object info.", getPropertyContainer(), SLOT(updateTopic()), + this); + std_dev_x_ = new rviz_common::properties::FloatProperty( + "X std deviation", 0.03, "X standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_y_ = new rviz_common::properties::FloatProperty( + "Y std deviation", 0.03, "Y standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_z_ = new rviz_common::properties::FloatProperty( + "Z std deviation", 0.03, "Z standard deviation for initial pose [m]", getPropertyContainer()); + std_dev_theta_ = new rviz_common::properties::FloatProperty( + "Theta std deviation", 5.0 * M_PI / 180.0, "Theta standard deviation for initial pose [rad]", + getPropertyContainer()); + position_z_ = new rviz_common::properties::FloatProperty( + "Z position", 0.0, "Z position for initial pose [m]", getPropertyContainer()); + velocity_ = new rviz_common::properties::FloatProperty( + "Velocity", 0.0, "velocity [m/s]", getPropertyContainer()); + std_dev_x_->setMin(0); + std_dev_y_->setMin(0); + std_dev_z_->setMin(0); + std_dev_theta_->setMin(0); + position_z_->setMin(0); +} + +void UnknownInitialPoseTool::onInitialize() +{ + PoseTool::onInitialize(); + setName("2D Dummy Unknown"); + updateTopic(); +} + +void UnknownInitialPoseTool::updateTopic() +{ + rclcpp::Node::SharedPtr raw_node = context_->getRosNodeAbstraction().lock()->get_raw_node(); + dummy_object_info_pub_ = raw_node->create_publisher( + topic_property_->getStdString(), 1); + clock_ = raw_node->get_clock(); +} + +void UnknownInitialPoseTool::onPoseSet(double x, double y, double theta) +{ + dummy_perception_publisher::msg::Object output_msg; + std::string fixed_frame = context_->getFixedFrame().toStdString(); + + // header + output_msg.header.frame_id = fixed_frame; + output_msg.header.stamp = clock_->now(); + + // semantic + output_msg.classification.label = + autoware_auto_perception_msgs::msg::ObjectClassification::UNKNOWN; + output_msg.classification.probability = 1.0; + + // shape + output_msg.shape.type = autoware_auto_perception_msgs::msg::Shape::POLYGON; + const double width = 0.8; + const double length = 0.8; + output_msg.shape.dimensions.x = length; + output_msg.shape.dimensions.y = width; + output_msg.shape.dimensions.z = 2.0; + + // initial state + // pose + output_msg.initial_state.pose_covariance.pose.position.x = x; + output_msg.initial_state.pose_covariance.pose.position.y = y; + output_msg.initial_state.pose_covariance.pose.position.z = position_z_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[0] = + std_dev_x_->getFloat() * std_dev_x_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[7] = + std_dev_y_->getFloat() * std_dev_y_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[14] = + std_dev_z_->getFloat() * std_dev_z_->getFloat(); + output_msg.initial_state.pose_covariance.covariance[35] = + std_dev_theta_->getFloat() * std_dev_theta_->getFloat(); + tf2::Quaternion quat; + quat.setRPY(0.0, 0.0, theta); + output_msg.initial_state.pose_covariance.pose.orientation = tf2::toMsg(quat); + RCLCPP_INFO( + rclcpp::get_logger("PedestrianInitialPoseTool"), "Setting pose: %.3f %.3f %.3f %.3f [frame=%s]", + x, y, position_z_->getFloat(), theta, fixed_frame.c_str()); + // twist + output_msg.initial_state.twist_covariance.twist.linear.x = velocity_->getFloat(); + output_msg.initial_state.twist_covariance.twist.linear.y = 0.0; + output_msg.initial_state.twist_covariance.twist.linear.z = 0.0; + RCLCPP_INFO( + rclcpp::get_logger("PedestrianInitialPoseTool"), "Setting twist: %.3f %.3f %.3f [frame=%s]", + velocity_->getFloat(), 0.0, 0.0, fixed_frame.c_str()); + + // action + output_msg.action = dummy_perception_publisher::msg::Object::ADD; + + // id + std::mt19937 gen(std::random_device{}()); + std::independent_bits_engine bit_eng(gen); + std::generate(output_msg.id.uuid.begin(), output_msg.id.uuid.end(), bit_eng); + + dummy_object_info_pub_->publish(output_msg); +} + +} // end namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::UnknownInitialPoseTool, rviz_common::Tool) diff --git a/common/autoware_perception_rviz_plugin/src/tools/unknown_pose.hpp b/common/autoware_perception_rviz_plugin/src/tools/unknown_pose.hpp new file mode 100644 index 0000000000000..bdc3d40becbe9 --- /dev/null +++ b/common/autoware_perception_rviz_plugin/src/tools/unknown_pose.hpp @@ -0,0 +1,88 @@ +// Copyright 2021 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TOOLS__UNKNOWN_POSE_HPP_ +#define TOOLS__UNKNOWN_POSE_HPP_ + +#ifndef Q_MOC_RUN // See: https://bugreports.qt-project.org/browse/QTBUG-22829 +#include +#include +#include +#include +#include +#endif + +#include + +namespace rviz_plugins +{ +class UnknownInitialPoseTool : public rviz_default_plugins::tools::PoseTool +{ + Q_OBJECT + +public: + UnknownInitialPoseTool(); + virtual ~UnknownInitialPoseTool() {} + virtual void onInitialize(); + +protected: + virtual void onPoseSet(double x, double y, double theta); + +private Q_SLOTS: + void updateTopic(); + +private: + rclcpp::Clock::SharedPtr clock_; + rclcpp::Publisher::SharedPtr dummy_object_info_pub_; + + rviz_common::properties::StringProperty * topic_property_; + rviz_common::properties::FloatProperty * std_dev_x_; + rviz_common::properties::FloatProperty * std_dev_y_; + rviz_common::properties::FloatProperty * std_dev_z_; + rviz_common::properties::FloatProperty * std_dev_theta_; + rviz_common::properties::FloatProperty * position_z_; + rviz_common::properties::FloatProperty * velocity_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__UNKNOWN_POSE_HPP_ diff --git a/common/autoware_planning_rviz_plugin/CMakeLists.txt b/common/autoware_planning_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..73d932ae94336 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/CMakeLists.txt @@ -0,0 +1,54 @@ +cmake_minimum_required(VERSION 3.5) +project(autoware_planning_rviz_plugin) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) +find_package(Eigen3 REQUIRED) + +ament_auto_add_library(autoware_planning_rviz_plugin SHARED + include/path/display.hpp + src/path/display.cpp + include/path_footprint/display.hpp + src/path_footprint/display.cpp + include/trajectory/display.hpp + src/trajectory/display.cpp + include/trajectory_footprint/display.hpp + src/trajectory_footprint/display.cpp + include/mission_checkpoint/mission_checkpoint.hpp + src/mission_checkpoint/mission_checkpoint.cpp + src/tools/jsk_overlay_utils.cpp + src/tools/max_velocity.cpp +) + +target_link_libraries(autoware_planning_rviz_plugin + ${QT_LIBRARIES} +) + +# Export the plugin to be imported by rviz2 +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + plugins +) diff --git a/common/autoware_planning_rviz_plugin/README.md b/common/autoware_planning_rviz_plugin/README.md new file mode 100644 index 0000000000000..12520cc9a8bb4 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/README.md @@ -0,0 +1,118 @@ +# autoware_planning_rviz_plugin + +This package is including jsk code. +Note that jsk_overlay_utils.cpp and jsk_overlay_utils.hpp are BSD license. + +## Purpose + +This plugin displays the path, trajectory, and maximum speed. + +## Inputs / Outputs + +### Input + +| Name | Type | Description | +| -------------------------------------------------- | ---------------------------------------------- | ------------------------------------------ | +| `/input/path` | `autoware_auto_planning_msgs::msg::Path` | The topic on which to subscribe path | +| `/input/trajectory` | `autoware_auto_planning_msgs::msg::Trajectory` | The topic on which to subscribe trajectory | +| `/planning/scenario_planning/current_max_velocity` | `autoware_planning_msgs/msg/VelocityLimit` | The topic on which to publish max velocity | + +### Output + +| Name | Type | Description | +| --------------------------------------- | ------------------------------- | ---------------------------------------- | +| `/planning/mission_planning/checkpoint` | `geometry_msgs/msg/PoseStamped` | The topic on which to publish checkpoint | + +## Parameter + +### Core Parameters + +#### MissionCheckpoint + +| Name   | Type | Default Value | Description | +| ------------------------ | ------ | -------------------- | -------------------------------------------------- | +| `pose_topic_property_`  | string | `mission_checkpoint` | The topic on which to publish checkpoint | +| `std_dev_x_`   | float | 0.5 | X standard deviation for checkpoint pose [m] | +| `std_dev_y_`   | float | 0.5 | Y standard deviation for checkpoint pose [m] | +| `std_dev_theta_`   | float | M_PI / 12.0 | Theta standard deviation for checkpoint pose [rad] | +| `position_z_`   | float | 0.0 | Z position for checkpoint pose [m] | + +#### Path + +| Name | Type | Default Value | Description | +| ------------------------------- | ------ | ------------- | ---------------------------- | +| `property_path_view_` | bool | true | Use Path property or not | +| `property_path_width_` | float | 2.0 | Width of Path property [m] | +| `property_path_alpha_` | float | 1.0 | Alpha of Path property | +| `property_path_color_view_` | bool | false | Use Constant Color or not | +| `property_path_color_` | QColor | Qt::black | Color of Path property | +| `property_velocity_view_` | bool | true | Use Velocity property or not | +| `property_velocity_alpha_` | float | 1.0 | Alpha of Velocity property | +| `property_velocity_scale_` | float | 0.3 | Scale of Velocity property | +| `property_velocity_color_view_` | bool | false | Use Constant Color or not | +| `property_velocity_color_` | QColor | Qt::black | Color of Velocity property | +| `property_vel_max_` | float | 3.0 | Max velocity [m/s] | + +#### PathFootprint + +| Name | Type | Default Value | Description | +| -------------------------------- | ------ | ------------- | ---------------------------------- | +| `property_path_footprint_view_` | bool | true | Use Path Footprint property or not | +| `property_path_footprint_alpha_` | float | 1.0 | Alpha of Path Footprint property | +| `property_path_footprint_color_` | QColor | Qt::black | Color of Path Footprint property | +| `property_vehicle_length_` | float | 4.77 | Vehicle length [m] | +| `property_vehicle_width_` | float | 1.83 | Vehicle width [m] | +| `property_rear_overhang_` | float | 1.03 | Rear overhang [m] | + +#### Trajectory + +| Name | Type | Default Value | Description | +| ------------------------------- | ------ | ------------- | ---------------------------- | +| `property_path_view_` | bool | true | Use Path property or not | +| `property_path_width_` | float | 2.0 | Width of Path property [m] | +| `property_path_alpha_` | float | 1.0 | Alpha of Path property | +| `property_path_color_view_` | bool | false | Use Constant Color or not | +| `property_path_color_` | QColor | Qt::black | Color of Path property | +| `property_velocity_view_` | bool | true | Use Velocity property or not | +| `property_velocity_alpha_` | float | 1.0 | Alpha of Velocity property | +| `property_velocity_scale_` | float | 0.3 | Scale of Velocity property | +| `property_velocity_color_view_` | bool | false | Use Constant Color or not | +| `property_velocity_color_` | QColor | Qt::black | Color of Velocity property | +| `property_velocity_text_view_` | bool | false | View text Velocity | +| `property_velocity_text_scale_` | float | 0.3 | Scale of Velocity property | +| `property_vel_max_` | float | 3.0 | Max velocity [m/s] | + +#### TrajectoryFootprint + +| Name | Type | Default Value | Description | +| -------------------------------------- | ------ | -------------------- | ---------------------------------------- | +| `property_trajectory_footprint_view_` | bool | true | Use Trajectory Footprint property or not | +| `property_trajectory_footprint_alpha_` | float | 1.0 | Alpha of Trajectory Footprint property | +| `property_trajectory_footprint_color_` | QColor | QColor(230, 230, 50) | Color of Trajectory Footprint property | +| `property_vehicle_length_` | float | 4.77 | Vehicle length [m] | +| `property_vehicle_width_` | float | 1.83 | Vehicle width [m] | +| `property_rear_overhang_` | float | 1.03 | Rear overhang [m] | +| `property_trajectory_point_view_` | bool | false | Use Trajectory Point property or not | +| `property_trajectory_point_alpha_` | float | 1.0 | Alpha of Trajectory Point property | +| `property_trajectory_point_color_` | QColor | QColor(0, 60, 255) | Color of Trajectory Point property | +| `property_trajectory_point_radius_` | float | 0.1 | Radius of Trajectory Point property | + +#### MaxVelocity + +| Name | Type | Default Value | Description | +| ----------------------- | ------ | -------------------------------------------------- | -------------------------------------------- | +| `property_topic_name_` | string | `/planning/scenario_planning/current_max_velocity` | The topic on which to subscribe max velocity | +| `property_text_color_` | QColor | QColor(255, 255, 255) | Text color | +| `property_left_` | int | 128 | Left of the plotter window [px] | +| `property_top_` | int | 128 | Top of the plotter window [px] | +| `property_length_` | int | 96 | Length of the plotter window [px] | +| `property_value_scale_` | float | 1.0 / 4.0 | Value scale | + +## Usage + +1. Start rviz and select Add under the Displays panel. + ![select_add](./images/select_add.png) +2. Select any one of the autoware_planning_rviz_plugin and press OK. + ![select_planning_plugin](./images/select_planning_plugin.png) +3. Enter the name of the topic where you want to view the path or trajectory. + ![select_topic_name](./images/select_topic_name.png) diff --git a/common/autoware_planning_rviz_plugin/icons/classes/MaxVelocity.png b/common/autoware_planning_rviz_plugin/icons/classes/MaxVelocity.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/icons/classes/MissionCheckpointTool.png b/common/autoware_planning_rviz_plugin/icons/classes/MissionCheckpointTool.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/icons/classes/Path.png b/common/autoware_planning_rviz_plugin/icons/classes/Path.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/icons/classes/PathFootprint.png b/common/autoware_planning_rviz_plugin/icons/classes/PathFootprint.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 zcmc#)ig}7!VL~0BI3P>4u>jX{5WQyQGE==@gXiZcsv`yJ3)ShVHnpzyIKV zx%UIl!@PCQ*=Oy&*IwtGaAid)9L!gkAP@*gMjEOL0wKly`$K;YTnXsp8Ulf2BxRtY zY95&f%V-`irs2ZJD-E_>W|QJ#$f(lDGUzn9FhfdJ6ls+f7g13tl1h)8=nGVpD&-eU zEXJbkUMvxiN-bt%sdy?0Ws#;2U}Tww$D9k?tJrv3b90N4w6q7mY>Vu>j)cq`Gq>&g ztxVotd7x=_%0QrfCTU6#h!Tqc9R&LG1r-?ts`)>?Y`h5pRS_lWag8OXawfXJHk9@r zwSCxzbPRm-g9n1hq$!Q)8a9)#!i(M_cz&h|6vnpsyKVD7twGSL0-4KL6Q=BD1ZeP- zzfzYzWVM-q+?d)>KwJl;5;rOeaVP-p8?mb$R~c z!r4STVAB1bJ?W`Q1N^wk6a>;QVI%JxOu}Vf{^G|)Co3MGH{(9RMV<;nHU4Za)%KSC z`;I=`QN*K~)?CjlT%q3CJ0d$G%J_7^;$JI4Ms3f{6oyJDbjK_N!4ju2 z&$?3P$rm$WTureE-aq`r%H%qf&xx}1+^E65XE7*U*@ASHv#;8ex#{Xeuo?I&+x*og zCp;~E10-qE582|U!y4K~`SF#B31Gjpj3?LDSx6hf<#=NRr5x>o;P$^l9osYrEfL{WYjQydU9;g?K5#3k=W*FphTCuCHewl5&`Uu9F)(f>MMOxB>pE z88huBN|GrNq|eH~M(ELpl-tdZkMhs%;OV+^2?6{7^3=m>h4(Sn1AF4SLTeDL;O9g! zBWaM6c%X0DechlP8B_BUQ^1_B5ImG0q$&AGba@Q1!Sx#uv;b)FNlKJ%FF!gu4goAi z+jugMiX+lt3%Db%$x}1fa)yh%A&xxGW-Lle9BaRZcr(Jl8YJvmXVoM8b*d?nDn zr>xqjT|4gjOmgjyb!-I_L=1WSO(};jF5)F9(KK9k$6juv0YKyrQRHz_DK~8jI2)+w zm-Yt$QfvYLhOutzxp@d+SUG4qO=vJ%C2^D=7atD;N#3;^c;DQzmR&&!oPfkcBJT}x-4FY#kT02m@DxoqS-{xT|$ z3PAj4Y06h5S$bR{FjZhmf2ImPCOB3Cm{OLqda0jhqvfLSxmZ+?A2<^h+z64sYjMk*OaM^512bTNz1yJX#3oL;p>F~$69vB)J^K&J0kyCuHxo2qc9?N7 zpx^)Vh!`XhEMW3-8hQ#=jbwx3L_Yk3cspR5f1h~;US}c=&En=n$AFqJRa-Trw&}AF z#AgA`>wx2@JWAg4l9l5}1GY|0Z9CNsXNdgw(z**Vj@S4BOp0I}AA5Z|Zl~>Z3kVbj zqQ+>~?`j3P7S~|HAAK#cX8I@4)zn@Yx%DiDRJ@~c4bTC4ySPXJL&So)v8RA@6#{J%M_y$DCRzdd0*FPR zEH--gPG5+|{w5Yegr~;hMSkzb)vYj91mGV5xcRrf*}fIu`8(Gk(oJHQTMWSTlpe3W z7U|f@97Ozui1Pqn>xtK!34&Gp1$<#-lg>4RGs7K!6%!+v&|>f%Vhw^400u&sGY~q5 zJ^R2hK)+x%+?N_ujGMppd5=D@{V_pS_0HC2*7x*eApoKv>S`$MhIW>f zMXBEn^5P16FfqDGOxdOTX$;a&7%;G-28$P)$1&8Il!2^?K;(-9A|F432ZYVYM^|}I z3>OV1q`?mb9wc7}dJzwJ)_0FSe8o7Cm(><8hzS0{vBcWu7VZ9!xVd$!*%0qZqPEJb=%hJ$Z_L zz~Miu9bQOq9)39Df;+w>C4k8SnA^IR``!NH4|SUf61t|;@Y}Cs7L7w2kT8`ufki#> z(|*WcvwwZbRQK{xx%^U^9it@ui(i`PZ(a!{U!?$lf%er!QwQi?Jq@BTnXsQ0^KiZy z)@H)?s!l`=|Lg4jvo;>IFs7CP;9l8V4UpAo>sjIq#`%v=kuRv~Dh zsiW)pz26t!@MhZgf>?_yj35jsQu16~;-8_l{?rj9%$d(V-9L6Mv^t{|GGZ5-C`W&WqNh29e6d|hsvmvzE$*g zQmyMXe|TD_9?2}u%kdXf_x#(4xd=B4sAmzB{R*=+ZDMv*{0=ZZw`U z1zHnRLzGA%_kVvk=&UnLH`*nK6OLz)IZ+1RaP z$_a6)pzGO}t0_(S2EeN@?u0pWGf^QOT;Fy&fIf+061Vv&k6#eQ9E?CJbN7 zR~KK=eS#kf?q9C)BZqF)@T7l`iF(-E2|R4|?91b}4Ez)Kk2FyYsGq$iY-#*_u@~1} zergZr={EWSme9lc1Lvw@G~X6iq*U zJ>6TJJ1l)Wu8Wk+%I_jO@X>ttg#2Gtvr6H&5?wENhU3wfOD|1HK$EE0JWPIo?o%@w7QX>1z=lRIcDYmm^RdaH!J$U0qdKjR{v?Nj@k8=mLg z!QaffX+{G^hFLx>yzv{!{4I7+*?C}Mw;W;Akw&+^oGNB zKbo1D;RxOCe8*HY+Wq2Z{a&$bq>kL0E*5uqV%bZU97(Rgg}axR>R3#V{3&SGo$cMU zo>il+6}(CD_7>Sn+RG>LD*ZH>q}A^P_|jLN;2-ZSZ)e^-CR7g&UCtF)C)#ml2sjLp zna0G_?3W<_14PCTp7u%y`1jJLdPCb;WW==}ZA1fH$8?tCsR>bJF?vJ$I|J{? zlTYZ~d#P!IC7nc5MI zRsbBkP4l%D7PaBB{&6DKt4yR^NwBqPM*lr^I~U=AH?+LJ*&C$ZAXr^~8P$6rvc|OQ z@5*T^JLt$TP5T0t(=wiG^sXg zEd~AVuZVrio-s!T&LrqYTve>D*P81_=>7;qF3oJb%9-_$ zl7tF5{GK`$Y)Po@y_Df6U|SUSg7!xbv_*4yVe!Q#Ebc;ZcwoSK)rHUB2ho1zr!2(h z%dVk7oadz}SQ849EKz@)p|3b8py_+bZq+KNZ|#0KdDLC_ZhWXy#9XXyyOh3&D_KBd$d5r~dZ&@?gHCJhG5mniAQ@R>y{O zFvmlJ?JS~a-%K~9k;T?h@u&=-btl<6W(Mr?#p_#Nvx_0v`ilrR<$^+%&Dej}o4vNPn* z;owRb6rB0y*XFvkd6OhCQqGB6I?r)a!X@j6i&CJJ1K0a?>M~fR$7l@HLqkBtR{DNi z#>_e~=e6CHkiV3$L3^TB!NYiWD6Xr+?LjRJ218fc9?44c9VrfHEASeRf4u5=;4Pz2 zbmAarlXGC+<}+MNXuEB2%{j_j84W=YGt*J6aB$pdMP%f^yA?e@n6EWm{~fLLbbmH# zB#6dX=5Pv<(zsg%*jkAKL5r0knZM%tivqc1CatP(x82cXPdwWwcmjs-W@q|ImYY99 zYwlE~Y-hze~lk`x3mjPB!27mzk`xg^y;8^_L_ahVv6~)|t~mfqeU``w(TZ zxrTjOPssfK`oySR$6>Am1>m)tK+)!_P=0!6FfqlwTf!xubMJn*u$lh(uwJ8c<*Bgn zDIx;XIk9`S^Zs-&ZN{2BW%h21L^x#Hy{t&3#$u%2EIrNNs9uMGjS4;G4WkVIc79S?9<_)}5sGh^o2GGu01pfp6?z7wr_`sf6M}tS@hT zNCXk5MDOIEc)b#>BL5Byp4r;f?uV$qGqs%c8FpR1U>>e-v`u`iQ65*US#Q)pH|_z0GX?kiG%%(LOU!%Ckq@v`f@JK|pfX2{xiK)~<5soB5N zZ^n6hgiX)Z0q$xxBO+$zshAz%JT;G?R^ui!yaQF=CYolEefA_D418x5EBtuv6S_T# zt>8C5ZK^P2{Tk3jP{74C9i5Z*XB90Em|L^1Lp$Ty?ZVFx%zQ38_!1Hlo_wx*Jxm>5 z;cSTnM62^vnW0! zv(<%*u%dQ#ZEdDm`^UPysNb89-plAwdG@K0)y_jBD-qUQUN%)_5(TsN78%{K)f*=5FXVTI-5jC-M0r)_e2{Uu>Io;LFZ)WTSayCh zH$y%7yq?2_WZ>t-lJJ(ErM5;8)CMsVjU&indTZFQ!V%ji9)yN-+O%Xp_zMN?x2c&~ z$h26bQIZIOY$0|Hl-A{A>HW>D%Vl99Us^*}%6q+6(o_lL&Dq|Mo_&23{zG+CyVGoa zZdPuB-3?-rE;hgTQB^{1j%hnpE81vUZxe{q7+r62)9R zQjuMBfm(#Ms?@4Z$;Ik^iw9oWqRW`6isW|}$3~+7uuRp_uSRo5+uoV%o;%fYOqe&( z|2-;yrIE5RJ-g8wo6hVoIj1wlF#nl)eXp0d4XYB-b^eG|Cv?<)1s7iS_r5%WWTvIf z2b#SW2vI-|e@Dud15=%5ScGn5xI-4JpMXeprsukuG_&3pJ9vw|;{D{iSX$ZsyN-QS zIkazCCe z5tjTIqBD|W;A`f4 z(o2%2vBi}U($ZixbedSg2KMZ`WSTOQSc*AmMXpEHQN>d_Ts3UpJGs9*!n#G=T_Pyr zRXRI_^rJ$49%InZRr>IOdrQ?H&qWVYSv0t<)_MjA=@l6!>}m{uAv-nCbu4CkNL1I0 zszx2HgbeMhEPPFWT{;-iq%i3PmyXoFdjD&`g5k23{NZw;w9<>q|Iu^oZgl-bE6dSw z^mlKsUR{#$i%`XX%3&%n7Tqbvr-=iv3Vn!kYG;%8(aknQHmT914|hK(l9+ATj)ON8U+A7k}qtQoh z(o1n!2r2de-qqvX8LPa^T2)TVwotK{{5PUlaF}h}t$?CyJIDXX_j2AsLij`a@Rsi6 zT9`WmSJ@(5~J3(YDA@J|o3An#c=nA#EWWa`laHX*T$SjobapA&u?(UWP+Q{C%@7Q}QA^ zJNv{`cm#_$-9Pc`0QTcIA;7WaQ;?NPKQ)wA2wg2XAF*`a%1+DL{Ei|8qxs#0>_+qE zIygdQ6ZJGXrnY0=Ug)~OeO>jx(RvJib8E2<`5+hRj<=UQ`XSK&;bJyBjKUK-vv>=H zGCKa(@!Sj)ME<{YC-0A1b(Bqx63NF8LaQ+pwr7++?Y;83W-@6>tv_S?kk#VM|MVs2LY-DySvyPfa--K5g8|I^)y zxR)i5=c%cxpXe{y&Af@{;>*~{b02i&{aB_$54p;>&#@87qjme%iw$;g@1y3hdBV!k zZH`JGW7Tng^Ak~%}#;Q-2Kv@J$5 zPoiIQ%EmkU-JkTeJJ;0SF{mVKykranq(ebDsHb&e)<5FL`@L~x6=ryQdf$-7vCQ0< zVKw1(9v>zMv~Hr4MzS?k%k=W&z-eNFmOLHeG{ZZM>d@B7MqQoA_xwa^NGPaDE9_=G zqs6AdhWYsONzd@+OaTr-8XOBq(wvBuPJ?Raqs7jrj-Q(vB?55luOh~nXxNd`{VH~I zM;8yWZJr7r(}dDk^xNhxwsalXR!sA1N(T6xx8%3 z9i?;He4?%(U&RqXs^zm7y_}z_XZ`rKJWdqi+!lDPbqjFCc03mCyq$|H4*?12d18Xu zsc9-IL6-9k#5yU9z|37?M|bFc*A_tKQa1XE*M2$dVt-b%RtQm5BcL!+`EtBIz{=SB z>EVhR7s6-iy&6K2n(c0w;sbP}fDO(N@z^>W*1LXDq9TP$lSj^&IGFi{KpGIP-++mV zR2tI$TwO=$)6FcJ+Rs%5-rd7wzS5;BWefCwh}pkOiJM7&g&1R6o^Ft!tBsfjK$~LV zchl!;(BZ>dy(Cy;~wVJ*0yFzq6!EcXR5$rY?4gI54mUi2JbS2$QJGSQ5Xyxt;M>AF4Sv@28`bN@} zlqwK4bFtGi`_*QHwN9+3#N)ub$|i36r9T2zdP63$?>Q-i9luzG2$gB(w!3~+Q&2P3 ztg~7hwvPLAu**HR*1BKO`siW+cbQb!0_qL(aGzg2%;p*MKf-C??dsxN<>Sk(?%vrz zzc_PV+EeGDFeZ;i84*ZtW=H3=#2j|W^|ND<(N6Ys^vYL`H`p!um`KLX43QJ|#XvZ& z5VNDI>gv4*nZ&heTY8$rMpSG1;mfQ=IFry0%W*2X;r!dHgLxC(0(fUSoX7 zwNjEXD0t!s_`m5$=5BFW$;8yBAcYLBacVr_p>vrk2KwkD((ynWWJf^m6M0>Rs^j&K zcuG{Bb;k~FsXL?edF#}7S zHZDLmq@^Y_Y4fI*ecn|MwalQipJKC!`&+AEi=Oxumg^tYvS0s6v}&dED>#4Eap zAJNq9yf;-G>9>swxt+fKLmkVyKVy>_Z%8^@94F5{sE|(%yu=RF} zU|f+?>1X;0!Jp9#;p0r9dszlE)NBFz%Xb>g4B!|F;iIe%Rte_9u|W9MNnz3b-6obM zRP{c^sD1ZD1@8DThqDat@NK>7r_aG&(BpD|3!JTXho#kHn#b%IMn={-%208He(I{j z8s5K{sLB<8*d9?YNvdlAkE1Xq4M&^5V`}zED!eajyno=M;-hVhny2RT;+R}Z9r4hs zHg0|z%N0-eaMaHz%=Q`>bdt9ENtBg7zrZD9*0FRwt#|ss^{%z@XNh|0y-*Iz&V$F+ z5b1tlj^6+i1CSkW24b4a6t9GRb-61JetIWG3TakcE8lU{iJ1*WfY zhT3M?F_AEMwx8^2o>J9?B73d2M-Ao0yblIV=w|pGk7+ zChG0Dy~rHOK1Z}(>0iZDOF^?7HV2aYQZklSUv5SgTzl!7E#o4p(rOC24ScRx|^VD=~3JdRynp4w?)W(5A0 z)_C3;5w{#ut;AeK9af+D3$6?#Btje>?{BQL*L-vD2I8Ik7Vg!@QnLe zppa1pgsr!=`wq1_mTHZ}C3xl@K9Vf_gQQRAD_36GdaZ87H=x1+REu&}7i5gjPv`MP z?=NN3^VvFySA4Is?wUDmnv~`eOyF%d=CNUipe$ZOJ}FZgXz3+QW*Yt>xpMko-JL05 zks6_=q<8Zb!SRc%GSdhvd#^TbuH?h6Nef0sA3Wjvs`Q+zGw6AI#HO>wHLBBX;iyJI zFZ5A$b~Ji_KEX=v=l0q7@oKkklDfM5JEnZw<(BE1>)c*>-8TRsJgfKBDNYu#C!HGU zbLvbP6<#?=;4iU0T&Pb*LBnMo{A)%V&E)8oVNDoVfNMGIGqDC~Tscy8s*HW5h(C^+ zG%$nRO&>=ccGarn_c)}SF|TH0#$7Cx8+pN%20+veAhSU?RF1MOcSo&5t!{_L=^j!S zwpKQodunYpRvLi#(OCA4LtJoKXSCHK;j8k9qyr5?e~KQ|t>1+SXe) z>)&;E*Mlsb=gfL7YJkKP1nqI#dXEOw6i8@(OKrTvK3jR+J9~Xn-iY+EwA~bLWlsRR z23NE2O*dU)=1+e<1VW`GQj_6h3MbAnyDHL5QY*f|gl9W++|d2#xN2PS<3Ii9G|AA= zOQyQ5g5I}YLVzr($N9aHm+H&mo*)(pv+|j@cP5Nnz1nAZ%$JsKX2hLXNhUIS$$QnG z1AL<~%s^invTXLbb=gI`FD6^i`_j_7{ay3FG_nui=Feq_SET$RM11j`*GRQ*M5-@2 zd2E<{+liz^%K)8H_K-`#W19`%J018J8$M5t{XUL%67!Kv?T5Y6%HoSPfj9xo@SRNA zO&i%cnz)EbdPRxH)73v%VP9f)rk1ApgoAeZVYB+))9p8Bqd4&bBR~*`oNY>09O~N2 z!Rp>7KnHX=U8>;-697~ZJ_sN<+Irs|Hl_`;G1z694OixT`*V|Cz_YBGLc(tM@Kohm z>JD&MYd3Xf+B|B;lk$xwEPD9_~%=V(vx(C@a6Y-H$#=bfVOn57$&>rkwrVs4#bi zIXh7e(IM6w&y9tw+~I(;y6HV5=yM_(oXxC~r9=|;e>##2d}?n{dgmZtm$kdn2_X2$ zZn1&1c*eQwvMIIRLX^A-fxxJ(8WBPe?||LSuy z{t{iR`A!>-41uqe*4_8|FWHQLq|ffyeq*aJzDYNo!z||t!@KwR;k$ICGOlv)`wp!Q zFe7=&V)-C1g>f{5f5E>X@5^pc*;|x_)H3t0Wj(Hdf}t6f7dj;Lm3y|b61$Fgis3HI zZZTE=iadp@o=Y|={({-`cL3Mp!SitW{cQ0t++xA?d#mq<7jHsy-_FH#^te&BG6e9=TM4K?yE4$gLtJB{QzeetB zryUa6*x1vKi=Ur?^*FjI-@8jse%C$IlbLGM)=y!06b)*c>gqrMkCt)IoHxxwf;h>K zI$ZxUI0Qd&(@HM3+nD1SE<}@A-dyZ1FM9v|iBvCi@E-ah@k7-!4x7-5u`g+?MqO*l zm)P-Zzu$iR6iAlY+w9>D6kT>tx3it8Zf2XNw7OwQn=-dqz_;&l(OUI~)JrvPrtJfn zwVGJjkAIYJ@iHeSyf)eOw~G0ZJld2UGPIIZu3h{4455%Qbz6lZW74FexmYeYM;8aI z$K-h3Y^GFFCuw>-YX)_9?Ig^9A4wx1xQ2#eYVG!-LK}|bv$R8@eqlJgC_fD*}q9KhIE1f_i#O7_ zT)%x`)T#K2OJP6!v6Vb?t~cc+MQq6?;as!glC6mA<(e z<%lFRX`h0@1C67z0NHWh|ZjuVZ|V8t@FP@kIUYdtPp)2I9s3B_BXeBp}-ZP z5|l~AJ-|-~e7adHXKm6rZHQ~nBqb!qRwUhuE_?tsh^Kl=Hlz{jJv5 z%a`iA?S8PdtMf0~>M^6t2;7z3^z?rn(s|R}N+Jo!JO1-*rxQyqqw0F6X>RM!ACLOT zz2%2LmeJ%LT4#%}#EGCHI_{2UWy@EDyhONJs|(RvT?Z?St5 zJe~uJKn9oH8ehO#Qs>h$z{xbsOPOK-DR@vG_GmD%r#DqpIINVFeAg~=yeiV@S@ycUgHP|m(|5vgek*ZEH4RdwK{d$6jL>+4X z`4ChMuWjS9nJF{!ij95ygn<6)v21l;z0gZ@UjZab`9s9KK++(ZU}hS#jlPp@YHsdX+N+j<%}bAm_k9)T8@LAgyH4JzSyw>)>XO5eYZ-f(KZq4CZ8KAE}&p33a#nAw#ZL!zhkYZa0_fy&Jh12UfTAj4W?< z)O2(X-CC!M1+7n}8-n0j-m&cbyUhc#29lDYkyrH{#~wfcNz*@%?SyYHR3jK#qYkg` zfOxt;Xp>!NetI3?-j2$*c6E0peFJ1k0qtRyN~0J}eb0QIcI)6yPMaCaqc?e?=5%L0 z!wWTLgHwtNdLFYf->C5f&&TSGJKKO9egTz|q7H=dL_|bSuP9CLa~>76 znCtPqJkWLkR->ldp7iOcx({hE83#s3x$hnxA+ElF{8rgnRi*qnM5H$vfR4=(~l-hR-WQi)59iT6|TZNDzuRd5R$FCqNF)uguYRz#H!g{_d46@8|;6d)C31g+?wwl9UWUN!_7@iU(y8@`IP%@=plBH%=02yJ&ynGhwto!JlUOX z4ZlnR=UHTX(m73bJ`MY1G35^fepmv;GCh*P+1Gq7e{QeWW1q~jSlc~K9=z&1x!R5Sw+>Pg|4d7B*QMP1eov^xZ{boH28L>~l{Zhb#6){LZ zm@6K(L>wtG?EU!}!s|J9nZo{zoX5(&q`-6B*F~kgn1RWbz(S1+KjtWyba%eqCgn)S zFN@z*^(@_A3M$`75z6`%5E_kQVPm~8vUW(0-)Xpgi@MOw2BBVq0JDHsQp!G~mGIp` zt+g8jO^5Tn$1Dr}bH1cx#Vy}6vXegp0~5m=T_@{(WO?uY<)bNy2_cW;Z}e~9$_)RA z&R+=3N)8DzIPSQK_PD=ZR~&XP^$^GwPJke6@_WV`6v&1R5CO#>3rm*Q23Pe8MP7zS zN4FFUff1Z$-rRg+ zUOSJkl&izPHIn6>?4GZlL7(#}f01PSSIocavf%MkVJQEWW_pySvMFl!k06}^LD&vwY0rFM7Sdo{5 z!^6JOK>wyp&Wqx=>r``x(>dQU>14zTUKY_wnmZX{if`ugWtEtf5;FbfaR!RPMaJd=iiHkN)+{o zw=7_sEj@pbvWiNnS(}3oHAP5B$P(ALz1hl~T>aEY-XZhaZD8r8xs7nX)xEONDCjv; zOUTNmo&)Iqji8`liKzLOKAgKFJ{IZWuJ!WaoUryyAsQa}xqK??8(ZCEx7KBV%c+g} zKb}#TJ3DI#oj_gNy)Lv4->#&&w<8@3lV0qv{JbmRz6E=*>$kXAjlB;|IzAm_X;uCB zv75{DlZUCPX_L_PUzBOWE8nZ-zMA|iD#R`FU!}FRHDgRnO#Q#U-C^A-YHAzgg4T%^ zfT5UUrP9zgG!1;~y?UlKy%*}N2#Hw+^T|{6+|stQd7Vod9abu&XJ-I|3zTY{NPshIIhMP4(e)?%0Uv@SDj|pppr_Jb?SU%^oes09s*d=hLG% ze`5g7Pg|}#S=k6d+Fsg@%%xAxPEJlx7nk#=$7MiN?f*(I2$fs2BE8qna6zlDpw#AvWn%g%t!02^>Yj~m`Jc$>iH%XJ+e zZKMxoZxEm;V0$ox2?Us2H~)s3I>H<)HIzL9C2*B2%2% zuoz$qGG)~AC_jk0_89l)-w}Kjrep=sU*p1KA%bo<^)Jj!7x@I^8msO> z4>V)boi5cC6{?m%cYKi1zpQXO7Sj9MjcR~0ZwA;qj*h|~Zix)e+JeBwbFm_`UgUBj zgZ3CD_k(a;jH;dGQ*p3Bd%O`FzipXyFXu?vx-t zRRt(cFcEnGVV%fzDOH|TTM%e0EhS#yS{w_?&t<&+7NqhCIwh;+O2Q)sTsc~YfC3bU zq)x}416#3Ue7ioXI|D~PEaz~kUWr15fPZx;b=F9Tzwr0+<&|tGXq@ z-!p+0U!6Y(5C2L=UkFUuSvc=t6~zQS+H_VW)Q7oK9zW$`$z@cCY7+mxgHfQ2uQhZ-Bg6F)mmEz|j=0p4I}11k?as_b+mA%#j1I8iXEwQXk2s&yQGt+}5bJPGb zYs;@L`=D=*mVrBcjz(@?+%AG&0^6ZbXHPVwwQtYzgjukZEJ2bVC7?Lfli&RQ%4ql> zZ3Bjstq?yQBdHTP-^B*^9^)d5i0V_-08a5k6bqU|cZ>@XF)H;$15M;U%QGN@6}Z0a%$-dB3&%`n1N7*~lrtIJ9})K!Z&`SKbd?mA;INup)SGh_}|FuM4}K3U^9Fb8+f3I)=dOLQaPRBqE3YvwXIT1%t;9*xKkQh>Kn}+ z;Q<4<$i;f+^O`#E1n{wLZ`^)rpKs3y{DkQ8RNlH1vu<1qB`m4Ar|D>VgG6BuM+f>~Dm_|t=53>L+p^5?Ap9utF zppJ$KnZyZs@R1KmMUXW&i^`seS3FLP#h)k*_YGfPxP+Lf^-x z_sPQj+kVNDcrI(6;l2Q!R|cD$^7tp7bf7;!t@&f~h=LG73c#aHVNd&EsO|JDJ9OOx z4GDygnsW{dr3{vF5xpd#k62wqCZIlHJHXZfU5XlU_yV<>Rk0;H^GfkD(N zC8;^cd!U6lfJ^KX0@2Cm4 zd=8d)ev_63t*c7*w-JRN1{3v+Dme+gIiEr$x928QNy2pGAlduak_Nks{AB%r4d$fH zGhrW1qRbq8d%BIF&*L}E-fw%oD&cP&m%}Rqb%t5mz_v?@_2O7|JOgdKNWi}S@&06z zP{QC}7)~36DkZQSelp`cI3;!}dXmDmA1C4Sk2IJkXca2?Rq1CeU5pr=Z$Eb|MA79r zy57rE7PN*8KqGRYA39>(eT2c|(NGsfr{%mU54|>P>rf=dU$a zVl0M^67U>rcEgp*DN>+P_xfhO3&BA|ja^IR9nZ)3c|`h+cLeVW#xuq+3uv}nG%A6$ z#JM=Sf#pn?8f_ORN$Xqfs`b>*IN!zY+eSWe1i~INHf-G~8xDL(&1R?cv=sOgWv}k5 zvteF@Dw-i34yuxg_Ahk2WZ_t?;YIDiHl87$aT0m1go-04L)r0u>_1x^n=umxKkx@T zXKB)YVqzl*IYMPkmI~jo$xVn-{?=xiJ8`YE6AE&DmVLZJomVQhqu;I!nEhjZSW}A& z9aUJDnK_|~5?EL>2L>l;*|=qJIbzC{IPFmO%Mz2JRMpR3A?xzA_EP8?g@56F6FM$q zslHsKdNUki-|0=HpNsVPE(Hds%j;8TT#?q*MZ~(-<~C%b_A2|X}`fHdwvLeljj~n5@a2L|D4uGt&g#XQX&30uL+(&sRQi{`=)W|ELz*%Z{nK;cEHSxzI zsrA`<4Rz6Z8InRbWPpDMuP7)CHtM(&gT2jMVmcA6EvW4pd-}Qk^8M1f ztkSjGqJ~jOXiyi^+0T{nVA#S8`(S%RprmWLq)G}RWd2UQ3q_lH)oTEP+*uVvg!LsN zp4D^TqM1J4uq;@HeYBs!V3ZI;JIi2~d7$Bqe6W{zYP=5{*J{>)N}3r95vhNZ5{>PP zuI(%1IF+xoU4$(JU!{WLTR0_#*HMh#ml-ls=i#wjLt?A2l@z+gU?w4~g&W3HA^s`4 z4F}UB7IHlO-A+nWfeRdy@gjRdiHelQl{X=Mi%^&FKd0*<@l5nI+3Vc#h{rC$Kmoe- zvpZ3bMn*|-qZj5396y5q;CzC9kn7s`b9To2s502|i^nLOu-LIIk#*-sAS;X19xv|T z{0*ls}liCZmq|f?Z;8zxgGkM?Er0=gxe!}5B)Cfts%zx+KRG~>%xK$^Qwgd zxLTF&cv9bZ<-o^?!iTp33(@-}y0vl_)2I~G)HF}92jl3v=#<)O=E7Rmdy2oglf|Hk z9aQ(|WOUn)IJ?Ev)&Fx6bF6)kaLn)DLr)thofgM!&@~!rT^O7bt@e5Or7|3fA$%9Z zdcgKVh^j?@4Sr`l^A=M|1^Pj?Yjm{L@U2TTmvgF?=HwY>`I&p}76Dqk08?8TUT-A< znh@%m4Kr8Z2eAG|xkt@vbVWTWWo?7J*w`48u>8$6i$5I*42V{tPKX%OlI`)B z()!3ib)k>8#b55^e=w>k^6=B1ZbJ{JnSv5WmCH4hd6f6{<7;|@XRLCWiDm99yGhA{}Wd_r0D9El$(X5~ZD@6Yeq%JJ_WnN-%QoT_^& zls{`|J%9EnfAEk~Gyx};)G-ocS*iS3?;B@s#A40HNR)|D9E{SnkxmA^FH@JMsvova zX8&ayT=lAu;Am_z@Z2<%$ z6{BjEfS{w}t2VXwOJOAH%tlL96JNh1#=Wf*>*+C=wXQ*vNIs(oaU1*ElJg~AWBoz3 zYsEM6%XU&tu#eu|7g)PJi(C|&tXR}Xn&hnaxd#gx>+j>0Lv??-YpZnq{-}DCX85D* z_dAPe6Sn6vuwUIAo->ylZ}KI6nQVFL;mT@J6n=}jh-Pjuf%pEv++Pdkdj*Zwp7DBP zrhTtVw6{gZP)&6$66l-|HJ4w8%;eg~^EPs4nrqIew2C|SrN%S*vk{KJr_g;`Y{qKK za@>)WYnnH1$Y7g~H208STe0$q*DizuUr(^Zw@=B+o)Nq~aS$e4yGfT@>daH^DKIsz z)cwow6@MRvpi+T4eltCU8Nd3QQI$>-+ zFgW?Ai;?m(M6`3~3t0MUNoj|7dB1(@$eb{5jiAiUXxRcsX%N7syb8a-?5DbXQY&dt z%QtBuucYrm*1Dmz5?dn{A0>WU5x4YjETQ|M(8cAmSNvkb`2Ku7q`f}>zYyO<$8g@x zUzs*Gk#M%Gr7AVQ9ITO)uwuolOW^S4&Y0P4a>%SIVE2Gjj|O|=mQu{^v#Iu?g_u(5R=+V-wf&8^chyn4kgY80C{bYAldhLKCoo`h9f)w_=Um8!5STwbwF{_U3Tizp{AyHC84h8bs|GATle zy3F*$Rqlvr6MURu^<;ctoJ-C-Z#8oO_$tvow?$;EY1DOi-(^S-2TIzlGbRuwb&;-U z7yZw0dus6-cg1D}!{`%wA1C;jA;~pKJ=T-XVnJJKHRncn?@V?ZaEO-)De!(_{cb?PQZM`vF>be}<$+yB>x!n%iMG>Ka&r0;UkQJwE7Mk z$`Z}Z4DInTXYHvlPzHtdM7q)!O@~4(CDCwL6=&P!6H8`ZIu8IG){ebnFOOsgJi5#J zo*23$q%3OfclD3VJx10L$%S6mR#0O{Z-fm;yH{W~(%~1?#@9nDw|X-FV4WFNNE?u= zNsUpZB9>X39R6ko>B{E@palselu!fi@;2{*99+kw!vd7==a0k1U~mtD?VxZfC+5?F zS*Nm{8|Z%mvGF+lu?k#)zW_q@WO_h`!~-H-wk-C(55!&CS9;0~tCO{qo!|0Ld`A4R z!?{Ezel$sA7!Q>QFASC6a)j3Q9elimCP?JOd_Bc7+iW%D38BRl_}=XI4MruG!$~Y! z)#3G0Ing0FLqmnq)N|04xKy0c__kp$%3zYQ=jbnv1!pZF??**9r5!AA6QQz8HaBac z-)DvlmLg^;&QlPoDNzVPj2csI+Sp_GZ>Y~5tTw?OOsB`~G>Igi6#!z}vZxRn z_mZ3%^Wj5E=1-Gbo9g3YL(lz--KY}z4P9;Rev`lWf1j9yQ{VAp+Sf5=7Hy=={c`2yJadWY-BAQd=Lk{ z_R5BjK&)=KT9B)gLV{1>rb2!28ThgAIW#%qO5B*yF`N0*A1srvHd0v*yWIk#^?)Ts zM5jSs*i*xFz2D7|(i500ZVx1J5^<9kp}e$hGHAC2LutRtBH%ytYf07!h%N|p$O_p@ zM76*Ze2pGv`4>e77PC@W+j}V~VvZ$pJA7_u0J6SUt6#Bso7y)~k6x^LN|Y_7g&3t~ zc23kDyJ8C;xg3Hmb~#>n;^|83;U1180$1Uh7VPe5U0Yj3=xI`|HIDic);1 z%Zx)#tB~cm_w^{1mrymqhd`i6ceMi`P*4dL1i~7qi~&@l{y)Y0VJg~EDlzW{YoEjk QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/icons/classes/Trajectory.png b/common/autoware_planning_rviz_plugin/icons/classes/Trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/icons/classes/TrajectoryFootprint.png b/common/autoware_planning_rviz_plugin/icons/classes/TrajectoryFootprint.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/images/select_add.png b/common/autoware_planning_rviz_plugin/images/select_add.png new file mode 100644 index 0000000000000000000000000000000000000000..c5130b6092384e5477ca0c52e856eee862f69431 GIT binary patch literal 18359 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 Vg!$n2J`((;xkz{6&H1JW{vRU$4Fv!I literal 0 HcmV?d00001 diff --git a/common/autoware_planning_rviz_plugin/images/select_topic_name.png b/common/autoware_planning_rviz_plugin/images/select_topic_name.png new file mode 100644 index 0000000000000000000000000000000000000000..0b14dc78617b921f23127acc926980acfdcf2342 GIT binary patch literal 10245 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 +#include +#include +#include +#include +#include +#endif + +#include + +namespace rviz_plugins +{ +class MissionCheckpointTool : public rviz_default_plugins::tools::PoseTool +{ + Q_OBJECT + +public: + MissionCheckpointTool(); + virtual ~MissionCheckpointTool() {} + virtual void onInitialize(); + +protected: + virtual void onPoseSet(double x, double y, double theta); + +private Q_SLOTS: + void updateTopic(); + +private: + rclcpp::Clock::SharedPtr clock_; + rclcpp::Publisher::SharedPtr pose_pub_; + + rviz_common::properties::StringProperty * pose_topic_property_; + rviz_common::properties::StringProperty * twist_topic_property_; + rviz_common::properties::FloatProperty * std_dev_x_; + rviz_common::properties::FloatProperty * std_dev_y_; + rviz_common::properties::FloatProperty * std_dev_theta_; + rviz_common::properties::FloatProperty * position_z_; +}; + +} // namespace rviz_plugins + +#endif // MISSION_CHECKPOINT__MISSION_CHECKPOINT_HPP_ diff --git a/common/autoware_planning_rviz_plugin/include/path/display.hpp b/common/autoware_planning_rviz_plugin/include/path/display.hpp new file mode 100644 index 0000000000000..2d7aeba5c7cfb --- /dev/null +++ b/common/autoware_planning_rviz_plugin/include/path/display.hpp @@ -0,0 +1,84 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef PATH__DISPLAY_HPP_ +#define PATH__DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include + +namespace rviz_plugins +{ +class AutowarePathDisplay +: public rviz_common::MessageFilterDisplay +{ + Q_OBJECT + +public: + AutowarePathDisplay(); + virtual ~AutowarePathDisplay(); + + void onInitialize() override; + void reset() override; + +private Q_SLOTS: + void updateVisualization(); + +protected: + void processMessage( + const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr msg_ptr) override; + std::unique_ptr setColorDependsOnVelocity( + const double vel_max, const double cmd_vel); + std::unique_ptr gradation( + const QColor & color_min, const QColor & color_max, const double ratio); + Ogre::ManualObject * path_manual_object_; + Ogre::ManualObject * velocity_manual_object_; + rviz_common::properties::BoolProperty * property_path_view_; + rviz_common::properties::BoolProperty * property_velocity_view_; + rviz_common::properties::FloatProperty * property_path_width_; + rviz_common::properties::ColorProperty * property_path_color_; + rviz_common::properties::ColorProperty * property_velocity_color_; + rviz_common::properties::FloatProperty * property_path_alpha_; + rviz_common::properties::FloatProperty * property_velocity_alpha_; + rviz_common::properties::FloatProperty * property_velocity_scale_; + rviz_common::properties::BoolProperty * property_path_color_view_; + rviz_common::properties::BoolProperty * property_velocity_color_view_; + rviz_common::properties::FloatProperty * property_vel_max_; + +private: + autoware_auto_planning_msgs::msg::Path::ConstSharedPtr last_msg_ptr_; + bool validateFloats(const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr & msg_ptr); +}; + +} // namespace rviz_plugins + +#endif // PATH__DISPLAY_HPP_ diff --git a/common/autoware_planning_rviz_plugin/include/path_footprint/display.hpp b/common/autoware_planning_rviz_plugin/include/path_footprint/display.hpp new file mode 100644 index 0000000000000..78f87bd6ec030 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/include/path_footprint/display.hpp @@ -0,0 +1,84 @@ +// Copyright 2021 Tier IV, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef PATH_FOOTPRINT__DISPLAY_HPP_ +#define PATH_FOOTPRINT__DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +namespace rviz_plugins +{ +class AutowarePathFootprintDisplay +: public rviz_common::MessageFilterDisplay +{ + Q_OBJECT + +public: + AutowarePathFootprintDisplay(); + virtual ~AutowarePathFootprintDisplay(); + + void onInitialize() override; + void reset() override; + +private Q_SLOTS: + void updateVisualization(); + void updateVehicleInfo(); + +protected: + void processMessage( + const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr msg_ptr) override; + Ogre::ManualObject * path_footprint_manual_object_; + rviz_common::properties::BoolProperty * property_path_footprint_view_; + rviz_common::properties::ColorProperty * property_path_footprint_color_; + rviz_common::properties::FloatProperty * property_path_footprint_alpha_; + rviz_common::properties::FloatProperty * property_vehicle_length_; + rviz_common::properties::FloatProperty * property_vehicle_width_; + rviz_common::properties::FloatProperty * property_rear_overhang_; + + struct VehicleFootprintInfo + { + VehicleFootprintInfo(const float l, const float w, const float r) + : length(l), width(w), rear_overhang(r) + { + } + float length, width, rear_overhang; + }; + std::shared_ptr vehicle_footprint_info_; + +private: + autoware_auto_planning_msgs::msg::Path::ConstSharedPtr last_msg_ptr_; + bool validateFloats(const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr & msg_ptr); +}; + +} // namespace rviz_plugins + +#endif // PATH_FOOTPRINT__DISPLAY_HPP_ diff --git a/common/autoware_planning_rviz_plugin/include/trajectory/display.hpp b/common/autoware_planning_rviz_plugin/include/trajectory/display.hpp new file mode 100644 index 0000000000000..428774e1d3b90 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/include/trajectory/display.hpp @@ -0,0 +1,90 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TRAJECTORY__DISPLAY_HPP_ +#define TRAJECTORY__DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace rviz_plugins +{ +class AutowareTrajectoryDisplay +: public rviz_common::MessageFilterDisplay +{ + Q_OBJECT + +public: + AutowareTrajectoryDisplay(); + virtual ~AutowareTrajectoryDisplay(); + + void onInitialize() override; + void reset() override; + +private Q_SLOTS: + void updateVisualization(); + +protected: + void processMessage( + const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr msg_ptr) override; + std::unique_ptr setColorDependsOnVelocity( + const double vel_max, const double cmd_vel); + std::unique_ptr gradation( + const QColor & color_min, const QColor & color_max, const double ratio); + Ogre::ManualObject * path_manual_object_; + Ogre::ManualObject * velocity_manual_object_; + std::vector velocity_texts_; + std::vector velocity_text_nodes_; + rviz_common::properties::BoolProperty * property_path_view_; + rviz_common::properties::BoolProperty * property_velocity_view_; + rviz_common::properties::FloatProperty * property_path_width_; + rviz_common::properties::ColorProperty * property_path_color_; + rviz_common::properties::ColorProperty * property_velocity_color_; + rviz_common::properties::FloatProperty * property_velocity_scale_; + rviz_common::properties::BoolProperty * property_velocity_text_view_; + rviz_common::properties::FloatProperty * property_velocity_text_scale_; + rviz_common::properties::FloatProperty * property_path_alpha_; + rviz_common::properties::FloatProperty * property_velocity_alpha_; + rviz_common::properties::BoolProperty * property_path_color_view_; + rviz_common::properties::BoolProperty * property_velocity_color_view_; + rviz_common::properties::FloatProperty * property_vel_max_; + +private: + autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr last_msg_ptr_; + bool validateFloats(const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr & msg_ptr); +}; + +} // namespace rviz_plugins + +#endif // TRAJECTORY__DISPLAY_HPP_ diff --git a/common/autoware_planning_rviz_plugin/include/trajectory_footprint/display.hpp b/common/autoware_planning_rviz_plugin/include/trajectory_footprint/display.hpp new file mode 100644 index 0000000000000..5c2002160d832 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/include/trajectory_footprint/display.hpp @@ -0,0 +1,91 @@ +// Copyright 2021 Tier IV, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TRAJECTORY_FOOTPRINT__DISPLAY_HPP_ +#define TRAJECTORY_FOOTPRINT__DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +namespace rviz_plugins +{ +class AutowareTrajectoryFootprintDisplay +: public rviz_common::MessageFilterDisplay +{ + Q_OBJECT + +public: + AutowareTrajectoryFootprintDisplay(); + virtual ~AutowareTrajectoryFootprintDisplay(); + + void onInitialize() override; + void reset() override; + +private Q_SLOTS: + void updateVisualization(); + void updateVehicleInfo(); + +protected: + void processMessage( + const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr msg_ptr) override; + Ogre::ManualObject * trajectory_footprint_manual_object_; + rviz_common::properties::BoolProperty * property_trajectory_footprint_view_; + rviz_common::properties::ColorProperty * property_trajectory_footprint_color_; + rviz_common::properties::FloatProperty * property_trajectory_footprint_alpha_; + rviz_common::properties::FloatProperty * property_vehicle_length_; + rviz_common::properties::FloatProperty * property_vehicle_width_; + rviz_common::properties::FloatProperty * property_rear_overhang_; + + Ogre::ManualObject * trajectory_point_manual_object_; + rviz_common::properties::BoolProperty * property_trajectory_point_view_; + rviz_common::properties::ColorProperty * property_trajectory_point_color_; + rviz_common::properties::FloatProperty * property_trajectory_point_alpha_; + rviz_common::properties::FloatProperty * property_trajectory_point_radius_; + rviz_common::properties::FloatProperty * property_trajectory_point_offset_; + + struct VehicleFootprintInfo + { + VehicleFootprintInfo(const float l, const float w, const float r) + : length(l), width(w), rear_overhang(r) + { + } + float length, width, rear_overhang; + }; + std::shared_ptr vehicle_footprint_info_; + +private: + autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr last_msg_ptr_; + bool validateFloats(const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr & msg_ptr); +}; + +} // namespace rviz_plugins + +#endif // TRAJECTORY_FOOTPRINT__DISPLAY_HPP_ diff --git a/common/autoware_planning_rviz_plugin/package.xml b/common/autoware_planning_rviz_plugin/package.xml new file mode 100644 index 0000000000000..d8e3a10e4e160 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/package.xml @@ -0,0 +1,32 @@ + + + + autoware_planning_rviz_plugin + 0.1.0 + The autoware_planning_rviz_plugin package + Yukihiro Saito + Apache License 2.0 + + ament_cmake + autoware_auto_planning_msgs + autoware_planning_msgs + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rclcpp + rviz_common + rviz_default_plugins + rviz_rendering + tf2_geometry_msgs + tf2_ros + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + + + diff --git a/common/autoware_planning_rviz_plugin/plugins/plugin_description.xml b/common/autoware_planning_rviz_plugin/plugins/plugin_description.xml new file mode 100644 index 0000000000000..63f07bd9e562e --- /dev/null +++ b/common/autoware_planning_rviz_plugin/plugins/plugin_description.xml @@ -0,0 +1,31 @@ + + + Display autoware_planning_msg::Path + + + Display autoware_planning_msg::PathFootprint + + + Display autoware_planning_msg::Trajectory + + + Display autoware_planning_msg::TrajectoryFootprint + + + Display external max velocity limit + + + + diff --git a/common/autoware_planning_rviz_plugin/src/mission_checkpoint/mission_checkpoint.cpp b/common/autoware_planning_rviz_plugin/src/mission_checkpoint/mission_checkpoint.cpp new file mode 100644 index 0000000000000..a3678158c32aa --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/mission_checkpoint/mission_checkpoint.cpp @@ -0,0 +1,117 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include + +#include + +namespace rviz_plugins +{ +MissionCheckpointTool::MissionCheckpointTool() +{ + shortcut_key_ = 'c'; + + pose_topic_property_ = new rviz_common::properties::StringProperty( + "Pose Topic", "mission_checkpoint", "The topic on which to publish checkpoint.", + getPropertyContainer(), SLOT(updateTopic()), this); + std_dev_x_ = new rviz_common::properties::FloatProperty( + "X std deviation", 0.5, "X standard deviation for checkpoint pose [m]", getPropertyContainer()); + std_dev_y_ = new rviz_common::properties::FloatProperty( + "Y std deviation", 0.5, "Y standard deviation for checkpoint pose [m]", getPropertyContainer()); + std_dev_theta_ = new rviz_common::properties::FloatProperty( + "Theta std deviation", M_PI / 12.0, "Theta standard deviation for checkpoint pose [rad]", + getPropertyContainer()); + position_z_ = new rviz_common::properties::FloatProperty( + "Z position", 0.0, "Z position for checkpoint pose [m]", getPropertyContainer()); + std_dev_x_->setMin(0); + std_dev_y_->setMin(0); + std_dev_theta_->setMin(0); + position_z_->setMin(0); +} + +void MissionCheckpointTool::onInitialize() +{ + PoseTool::onInitialize(); + setName("2D Checkpoint Pose"); + updateTopic(); +} + +void MissionCheckpointTool::updateTopic() +{ + rclcpp::Node::SharedPtr raw_node = context_->getRosNodeAbstraction().lock()->get_raw_node(); + pose_pub_ = raw_node->create_publisher( + pose_topic_property_->getStdString(), 1); + clock_ = raw_node->get_clock(); +} + +void MissionCheckpointTool::onPoseSet(double x, double y, double theta) +{ + // pose + std::string fixed_frame = context_->getFixedFrame().toStdString(); + geometry_msgs::msg::PoseStamped pose; + pose.header.frame_id = fixed_frame; + pose.header.stamp = clock_->now(); + pose.pose.position.x = x; + pose.pose.position.y = y; + pose.pose.position.z = position_z_->getFloat(); + + tf2::Quaternion quat; + quat.setRPY(0.0, 0.0, theta); + pose.pose.orientation = tf2::toMsg(quat); + RCLCPP_INFO( + rclcpp::get_logger("MissionCheckpointTool"), "Setting pose: %.3f %.3f %.3f %.3f [frame=%s]", x, + y, position_z_->getFloat(), theta, fixed_frame.c_str()); + pose_pub_->publish(pose); +} + +} // end namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::MissionCheckpointTool, rviz_common::Tool) diff --git a/common/autoware_planning_rviz_plugin/src/path/display.cpp b/common/autoware_planning_rviz_plugin/src/path/display.cpp new file mode 100644 index 0000000000000..ee4b95dc8e1af --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/path/display.cpp @@ -0,0 +1,254 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#define EIGEN_MPL2_ONLY +#include +#include + +namespace rviz_plugins +{ +std::unique_ptr AutowarePathDisplay::gradation( + const QColor & color_min, const QColor & color_max, const double ratio) +{ + std::unique_ptr color_ptr(new Ogre::ColourValue); + color_ptr->g = color_max.greenF() * ratio + color_min.greenF() * (1.0 - ratio); + color_ptr->r = color_max.redF() * ratio + color_min.redF() * (1.0 - ratio); + color_ptr->b = color_max.blueF() * ratio + color_min.blueF() * (1.0 - ratio); + + return color_ptr; +} + +std::unique_ptr AutowarePathDisplay::setColorDependsOnVelocity( + const double vel_max, const double cmd_vel) +{ + const double cmd_vel_abs = std::fabs(cmd_vel); + const double vel_min = 0.0; + + std::unique_ptr color_ptr(new Ogre::ColourValue()); + if (vel_min < cmd_vel_abs && cmd_vel_abs <= (vel_max / 2.0)) { + double ratio = (cmd_vel_abs - vel_min) / (vel_max / 2.0 - vel_min); + color_ptr = gradation(Qt::red, Qt::yellow, ratio); + } else if ((vel_max / 2.0) < cmd_vel_abs && cmd_vel_abs <= vel_max) { + double ratio = (cmd_vel_abs - vel_max / 2.0) / (vel_max - vel_max / 2.0); + color_ptr = gradation(Qt::yellow, Qt::green, ratio); + } else if (vel_max < cmd_vel_abs) { + *color_ptr = Ogre::ColourValue::Green; + } else { + *color_ptr = Ogre::ColourValue::Red; + } + + return color_ptr; +} + +AutowarePathDisplay::AutowarePathDisplay() +{ + property_path_view_ = new rviz_common::properties::BoolProperty( + "View Path", true, "", this, SLOT(updateVisualization())); + property_path_width_ = new rviz_common::properties::FloatProperty( + "Width", 2.0, "", property_path_view_, SLOT(updateVisualization()), this); + property_path_width_->setMin(0.0); + property_path_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_path_view_, SLOT(updateVisualization()), this); + property_path_alpha_->setMin(0.0); + property_path_alpha_->setMax(1.0); + property_path_color_view_ = new rviz_common::properties::BoolProperty( + "Constant Color", false, "", property_path_view_, SLOT(updateVisualization()), this); + property_path_color_ = new rviz_common::properties::ColorProperty( + "Color", Qt::black, "", property_path_view_, SLOT(updateVisualization()), this); + + property_velocity_view_ = new rviz_common::properties::BoolProperty( + "View Velocity", true, "", this, SLOT(updateVisualization()), this); + property_velocity_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_alpha_->setMin(0.0); + property_velocity_alpha_->setMax(1.0); + property_velocity_scale_ = new rviz_common::properties::FloatProperty( + "Scale", 0.3, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_scale_->setMin(0.1); + property_velocity_scale_->setMax(10.0); + property_velocity_color_view_ = new rviz_common::properties::BoolProperty( + "Constant Color", false, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_color_ = new rviz_common::properties::ColorProperty( + "Color", Qt::black, "", property_velocity_view_, SLOT(updateVisualization()), this); + + property_vel_max_ = new rviz_common::properties::FloatProperty( + "Color Border Vel Max", 3.0, "[m/s]", this, SLOT(updateVisualization()), this); + property_vel_max_->setMin(0.0); +} + +AutowarePathDisplay::~AutowarePathDisplay() +{ + if (initialized()) { + scene_manager_->destroyManualObject(path_manual_object_); + scene_manager_->destroyManualObject(velocity_manual_object_); + } +} + +void AutowarePathDisplay::onInitialize() +{ + MFDClass::onInitialize(); + + path_manual_object_ = scene_manager_->createManualObject(); + velocity_manual_object_ = scene_manager_->createManualObject(); + path_manual_object_->setDynamic(true); + velocity_manual_object_->setDynamic(true); + scene_node_->attachObject(path_manual_object_); + scene_node_->attachObject(velocity_manual_object_); +} + +void AutowarePathDisplay::reset() +{ + MFDClass::reset(); + path_manual_object_->clear(); + velocity_manual_object_->clear(); +} + +bool AutowarePathDisplay::validateFloats( + const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr & msg_ptr) +{ + for (auto && path_point : msg_ptr->points) { + if ( + !rviz_common::validateFloats(path_point.pose) && + !rviz_common::validateFloats(path_point.longitudinal_velocity_mps)) { + return false; + } + } + return true; +} + +void AutowarePathDisplay::processMessage( + const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr msg_ptr) +{ + if (!validateFloats(msg_ptr)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Topic", + "Message contained invalid floating point values (nans or infs)"); + return; + } + + Ogre::Vector3 position; + Ogre::Quaternion orientation; + if (!context_->getFrameManager()->getTransform(msg_ptr->header, position, orientation)) { + RCLCPP_DEBUG( + rclcpp::get_logger("AutowarePathDisplay"), "Error transforming from frame '%s' to frame '%s'", + msg_ptr->header.frame_id.c_str(), qPrintable(fixed_frame_)); + } + + scene_node_->setPosition(position); + scene_node_->setOrientation(orientation); + + path_manual_object_->clear(); + velocity_manual_object_->clear(); + + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + + if (!msg_ptr->points.empty()) { + path_manual_object_->estimateVertexCount(msg_ptr->points.size() * 2); + velocity_manual_object_->estimateVertexCount(msg_ptr->points.size()); + path_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_TRIANGLE_STRIP); + // path_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_TRIANGLE_STRIP); + velocity_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP); + + for (auto && path_point : msg_ptr->points) { + /* + * Path + */ + if (property_path_view_->getBool()) { + Ogre::ColourValue color; + if (property_path_color_view_->getBool()) { + color = rviz_common::properties::qtToOgre(property_path_color_->getColor()); + } else { + /* color change depending on velocity */ + std::unique_ptr dynamic_color_ptr = setColorDependsOnVelocity( + property_vel_max_->getFloat(), path_point.longitudinal_velocity_mps); + color = *dynamic_color_ptr; + } + color.a = property_path_alpha_->getFloat(); + Eigen::Vector3f vec_in, vec_out; + Eigen::Quaternionf quat_yaw_reverse(0, 0, 0, 1); + { + vec_in << 0, (property_path_width_->getFloat() / 2.0), 0; + Eigen::Quaternionf quat( + path_point.pose.orientation.w, path_point.pose.orientation.x, + path_point.pose.orientation.y, path_point.pose.orientation.z); + if (path_point.longitudinal_velocity_mps < 0) { + quat *= quat_yaw_reverse; + } + vec_out = quat * vec_in; + path_manual_object_->position( + path_point.pose.position.x + vec_out.x(), path_point.pose.position.y + vec_out.y(), + path_point.pose.position.z + vec_out.z()); + path_manual_object_->colour(color); + } + { + vec_in << 0, -(property_path_width_->getFloat() / 2.0), 0; + Eigen::Quaternionf quat( + path_point.pose.orientation.w, path_point.pose.orientation.x, + path_point.pose.orientation.y, path_point.pose.orientation.z); + if (path_point.longitudinal_velocity_mps < 0) { + quat *= quat_yaw_reverse; + } + vec_out = quat * vec_in; + path_manual_object_->position( + path_point.pose.position.x + vec_out.x(), path_point.pose.position.y + vec_out.y(), + path_point.pose.position.z + vec_out.z()); + path_manual_object_->colour(color); + } + } + /* + * Velocity + */ + if (property_velocity_view_->getBool()) { + Ogre::ColourValue color; + if (property_velocity_color_view_->getBool()) { + color = rviz_common::properties::qtToOgre(property_velocity_color_->getColor()); + } else { + /* color change depending on velocity */ + std::unique_ptr dynamic_color_ptr = setColorDependsOnVelocity( + property_vel_max_->getFloat(), path_point.longitudinal_velocity_mps); + color = *dynamic_color_ptr; + } + color.a = property_velocity_alpha_->getFloat(); + + velocity_manual_object_->position( + path_point.pose.position.x, path_point.pose.position.y, + path_point.pose.position.z + + path_point.longitudinal_velocity_mps * property_velocity_scale_->getFloat()); + velocity_manual_object_->colour(color); + } + } + + path_manual_object_->end(); + velocity_manual_object_->end(); + } + last_msg_ptr_ = msg_ptr; +} + +void AutowarePathDisplay::updateVisualization() +{ + if (last_msg_ptr_ != nullptr) { + processMessage(last_msg_ptr_); + } +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::AutowarePathDisplay, rviz_common::Display) diff --git a/common/autoware_planning_rviz_plugin/src/path_footprint/display.cpp b/common/autoware_planning_rviz_plugin/src/path_footprint/display.cpp new file mode 100644 index 0000000000000..9806be61bdc35 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/path_footprint/display.cpp @@ -0,0 +1,185 @@ +// Copyright 2021 Tier IV, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#define EIGEN_MPL2_ONLY +#include +#include +#include + +namespace rviz_plugins +{ +AutowarePathFootprintDisplay::AutowarePathFootprintDisplay() +{ + property_path_footprint_view_ = new rviz_common::properties::BoolProperty( + "View Path Footprint", true, "", this, SLOT(updateVisualization()), this); + property_path_footprint_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_path_footprint_view_, SLOT(updateVisualization()), this); + property_path_footprint_alpha_->setMin(0.0); + property_path_footprint_alpha_->setMax(1.0); + property_path_footprint_color_ = new rviz_common::properties::ColorProperty( + "Color", QColor(230, 230, 50), "", property_path_footprint_view_, SLOT(updateVisualization()), + this); + property_vehicle_length_ = new rviz_common::properties::FloatProperty( + "Vehicle Length", 4.77, "", property_path_footprint_view_, SLOT(updateVehicleInfo()), this); + property_vehicle_width_ = new rviz_common::properties::FloatProperty( + "Vehicle Width", 1.83, "", property_path_footprint_view_, SLOT(updateVehicleInfo()), this); + property_rear_overhang_ = new rviz_common::properties::FloatProperty( + "Rear Overhang", 1.03, "", property_path_footprint_view_, SLOT(updateVehicleInfo()), this); + property_vehicle_length_->setMin(0.0); + property_vehicle_width_->setMin(0.0); + property_rear_overhang_->setMin(0.0); + + updateVehicleInfo(); +} + +AutowarePathFootprintDisplay::~AutowarePathFootprintDisplay() +{ + if (initialized()) { + scene_manager_->destroyManualObject(path_footprint_manual_object_); + } +} + +void AutowarePathFootprintDisplay::onInitialize() +{ + MFDClass::onInitialize(); + + path_footprint_manual_object_ = scene_manager_->createManualObject(); + path_footprint_manual_object_->setDynamic(true); + scene_node_->attachObject(path_footprint_manual_object_); +} + +void AutowarePathFootprintDisplay::reset() +{ + MFDClass::reset(); + path_footprint_manual_object_->clear(); +} + +bool AutowarePathFootprintDisplay::validateFloats( + const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr & msg_ptr) +{ + for (auto && path_point : msg_ptr->points) { + if (!rviz_common::validateFloats(path_point.pose)) { + return false; + } + } + return true; +} + +void AutowarePathFootprintDisplay::processMessage( + const autoware_auto_planning_msgs::msg::Path::ConstSharedPtr msg_ptr) +{ + if (!validateFloats(msg_ptr)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Topic", + "Message contained invalid floating point values (nans or infs)"); + return; + } + + Ogre::Vector3 position; + Ogre::Quaternion orientation; + if (!context_->getFrameManager()->getTransform(msg_ptr->header, position, orientation)) { + RCLCPP_DEBUG( + rviz_ros_node_.lock()->get_raw_node()->get_logger(), + "Error transforming from frame '%s' to frame '%s'", msg_ptr->header.frame_id.c_str(), + qPrintable(fixed_frame_)); + } + + scene_node_->setPosition(position); + scene_node_->setOrientation(orientation); + + path_footprint_manual_object_->clear(); + + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + + if (!msg_ptr->points.empty()) { + path_footprint_manual_object_->estimateVertexCount(msg_ptr->points.size() * 4 * 2); + path_footprint_manual_object_->begin( + "BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST); + + for (size_t point_idx = 0; point_idx < msg_ptr->points.size(); point_idx++) { + const auto & path_point = msg_ptr->points.at(point_idx); + /* + * Footprint + */ + if (property_path_footprint_view_->getBool()) { + Ogre::ColourValue color; + color = rviz_common::properties::qtToOgre(property_path_footprint_color_->getColor()); + color.a = property_path_footprint_alpha_->getFloat(); + + const auto info = vehicle_footprint_info_; + const float top = info->length - info->rear_overhang; + const float bottom = -info->rear_overhang; + const float left = -info->width / 2.0; + const float right = info->width / 2.0; + + const std::array lon_offset_vec{top, top, bottom, bottom}; + const std::array lat_offset_vec{left, right, right, left}; + + for (int f_idx = 0; f_idx < 4; ++f_idx) { + const Eigen::Quaternionf quat( + path_point.pose.orientation.w, path_point.pose.orientation.x, + path_point.pose.orientation.y, path_point.pose.orientation.z); + + { + const Eigen::Vector3f offset_vec{ + lon_offset_vec.at(f_idx), lat_offset_vec.at(f_idx), 0.0}; + const auto offset_to_edge = quat * offset_vec; + path_footprint_manual_object_->position( + path_point.pose.position.x + offset_to_edge.x(), + path_point.pose.position.y + offset_to_edge.y(), path_point.pose.position.z); + path_footprint_manual_object_->colour(color); + } + { + const Eigen::Vector3f offset_vec{ + lon_offset_vec.at((f_idx + 1) % 4), lat_offset_vec.at((f_idx + 1) % 4), 0.0}; + const auto offset_to_edge = quat * offset_vec; + path_footprint_manual_object_->position( + path_point.pose.position.x + offset_to_edge.x(), + path_point.pose.position.y + offset_to_edge.y(), path_point.pose.position.z); + path_footprint_manual_object_->colour(color); + } + } + } + } + + path_footprint_manual_object_->end(); + } + last_msg_ptr_ = msg_ptr; +} + +void AutowarePathFootprintDisplay::updateVisualization() +{ + if (last_msg_ptr_ != nullptr) { + processMessage(last_msg_ptr_); + } +} + +void AutowarePathFootprintDisplay::updateVehicleInfo() +{ + float length{property_vehicle_length_->getFloat()}; + float width{property_vehicle_width_->getFloat()}; + float rear_overhang{property_rear_overhang_->getFloat()}; + + vehicle_footprint_info_ = std::make_shared(length, width, rear_overhang); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::AutowarePathFootprintDisplay, rviz_common::Display) diff --git a/common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.cpp b/common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.cpp new file mode 100644 index 0000000000000..e535ceadab9cd --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.cpp @@ -0,0 +1,193 @@ +// Copyright (c) 2014, JSK Lab +// All rights reserved. +// +// Software License Agreement (BSD License 2.0) +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of {copyright_holder} nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE.S SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#include "jsk_overlay_utils.hpp" + +#include + +namespace jsk_rviz_plugins +{ +ScopedPixelBuffer::ScopedPixelBuffer(Ogre::HardwarePixelBufferSharedPtr pixel_buffer) +: pixel_buffer_(pixel_buffer) +{ + pixel_buffer_->lock(Ogre::HardwareBuffer::HBL_NORMAL); +} + +ScopedPixelBuffer::~ScopedPixelBuffer() { pixel_buffer_->unlock(); } + +Ogre::HardwarePixelBufferSharedPtr ScopedPixelBuffer::getPixelBuffer() { return pixel_buffer_; } + +QImage ScopedPixelBuffer::getQImage(unsigned int width, unsigned int height) +{ + const Ogre::PixelBox & pixelBox = pixel_buffer_->getCurrentLock(); + Ogre::uint8 * pDest = static_cast(pixelBox.data); + memset(pDest, 0, width * height); + return QImage(pDest, width, height, QImage::Format_ARGB32); +} + +QImage ScopedPixelBuffer::getQImage(unsigned int width, unsigned int height, QColor & bg_color) +{ + QImage Hud = getQImage(width, height); + for (unsigned int i = 0; i < width; i++) { + for (unsigned int j = 0; j < height; j++) { + Hud.setPixel(i, j, bg_color.rgba()); + } + } + return Hud; +} + +QImage ScopedPixelBuffer::getQImage(OverlayObject & overlay) +{ + return getQImage(overlay.getTextureWidth(), overlay.getTextureHeight()); +} + +QImage ScopedPixelBuffer::getQImage(OverlayObject & overlay, QColor & bg_color) +{ + return getQImage(overlay.getTextureWidth(), overlay.getTextureHeight(), bg_color); +} + +OverlayObject::OverlayObject( + Ogre::SceneManager * manager, rclcpp::Logger logger, const std::string & name) +: name_(name), logger_(logger) +{ + rviz_rendering::RenderSystem::get()->prepareOverlays(manager); + std::string material_name = name_ + "Material"; + Ogre::OverlayManager * mOverlayMgr = Ogre::OverlayManager::getSingletonPtr(); + overlay_ = mOverlayMgr->create(name_); + panel_ = static_cast( + mOverlayMgr->createOverlayElement("Panel", name_ + "Panel")); + panel_->setMetricsMode(Ogre::GMM_PIXELS); + + panel_material_ = Ogre::MaterialManager::getSingleton().create( + material_name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + panel_->setMaterialName(panel_material_->getName()); + overlay_->add2D(panel_); +} + +OverlayObject::~OverlayObject() +{ + hide(); + panel_material_->unload(); + Ogre::MaterialManager::getSingleton().remove(panel_material_->getName()); + // Ogre::OverlayManager* mOverlayMgr = Ogre::OverlayManager::getSingletonPtr(); + // mOverlayMgr->destroyOverlayElement(panel_); + // delete panel_; + // delete overlay_; +} + +std::string OverlayObject::getName() { return name_; } + +void OverlayObject::hide() +{ + if (overlay_->isVisible()) { + overlay_->hide(); + } +} + +void OverlayObject::show() +{ + if (!overlay_->isVisible()) { + overlay_->show(); + } +} + +bool OverlayObject::isTextureReady() { return static_cast(texture_); } + +void OverlayObject::updateTextureSize(unsigned int width, unsigned int height) +{ + const std::string texture_name = name_ + "Texture"; + if (width == 0) { + RCLCPP_WARN(logger_, "width=0 is specified as texture size"); + width = 1; + } + if (height == 0) { + RCLCPP_WARN(logger_, "height=0 is specified as texture size"); + height = 1; + } + if (!isTextureReady() || ((width != texture_->getWidth()) || (height != texture_->getHeight()))) { + if (isTextureReady()) { + Ogre::TextureManager::getSingleton().remove(texture_name); + panel_material_->getTechnique(0)->getPass(0)->removeAllTextureUnitStates(); + } + texture_ = Ogre::TextureManager::getSingleton().createManual( + texture_name, // name + Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + Ogre::TEX_TYPE_2D, // type + width, height, // width & height of the render window + 0, // number of mipmaps + Ogre::PF_A8R8G8B8, // pixel format chosen to match a format Qt can use + Ogre::TU_DEFAULT // usage + ); + panel_material_->getTechnique(0)->getPass(0)->createTextureUnitState(texture_name); + + panel_material_->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + } +} + +ScopedPixelBuffer OverlayObject::getBuffer() +{ + if (isTextureReady()) { + return ScopedPixelBuffer(texture_->getBuffer()); + } else { + return ScopedPixelBuffer(Ogre::HardwarePixelBufferSharedPtr()); + } +} + +void OverlayObject::setPosition(double left, double top) { panel_->setPosition(left, top); } + +void OverlayObject::setDimensions(double width, double height) +{ + panel_->setDimensions(width, height); +} + +bool OverlayObject::isVisible() { return overlay_->isVisible(); } + +unsigned int OverlayObject::getTextureWidth() +{ + if (isTextureReady()) { + return texture_->getWidth(); + } else { + return 0; + } +} + +unsigned int OverlayObject::getTextureHeight() +{ + if (isTextureReady()) { + return texture_->getHeight(); + } else { + return 0; + } +} + +} // namespace jsk_rviz_plugins diff --git a/common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.hpp b/common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.hpp new file mode 100644 index 0000000000000..e0e885c9e340d --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/tools/jsk_overlay_utils.hpp @@ -0,0 +1,127 @@ +// Copyright (c) 2014, JSK Lab +// All rights reserved. +// +// Software License Agreement (BSD License 2.0) +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of {copyright_holder} nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE.S SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#ifndef TOOLS__JSK_OVERLAY_UTILS_HPP_ +#define TOOLS__JSK_OVERLAY_UTILS_HPP_ + +#include +#include +#include +#include +#include +#include + +#include +#include +// see OGRE/OgrePrerequisites.h +// #define OGRE_VERSION +// ((OGRE_VERSION_MAJOR << 16) | (OGRE_VERSION_MINOR << 8) | OGRE_VERSION_PATCH) +#if OGRE_VERSION < ((1 << 16) | (9 << 8) | 0) +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#endif + +#include +#include +#include +#include + +namespace jsk_rviz_plugins +{ +class OverlayObject; + +class ScopedPixelBuffer +{ +public: + explicit ScopedPixelBuffer(Ogre::HardwarePixelBufferSharedPtr pixel_buffer); + virtual ~ScopedPixelBuffer(); + virtual Ogre::HardwarePixelBufferSharedPtr getPixelBuffer(); + virtual QImage getQImage(unsigned int width, unsigned int height); + virtual QImage getQImage(OverlayObject & overlay); + virtual QImage getQImage(unsigned int width, unsigned int height, QColor & bg_color); + virtual QImage getQImage(OverlayObject & overlay, QColor & bg_color); + +protected: + Ogre::HardwarePixelBufferSharedPtr pixel_buffer_; + +private: +}; + +// this is a class for put overlay object on rviz 3D panel. +// This class suppose to be instantiated in onInitialize method +// of rviz::Display class. +class OverlayObject +{ +public: + typedef std::shared_ptr Ptr; + + OverlayObject(Ogre::SceneManager * manager, rclcpp::Logger logger, const std::string & name); + virtual ~OverlayObject(); + + virtual std::string getName(); + virtual void hide(); + virtual void show(); + virtual bool isTextureReady(); + virtual void updateTextureSize(unsigned int width, unsigned int height); + virtual ScopedPixelBuffer getBuffer(); + virtual void setPosition(double left, double top); + virtual void setDimensions(double width, double height); + virtual bool isVisible(); + virtual unsigned int getTextureWidth(); + virtual unsigned int getTextureHeight(); + +protected: + const std::string name_; + rclcpp::Logger logger_; + Ogre::Overlay * overlay_; + Ogre::PanelOverlayElement * panel_; + Ogre::MaterialPtr panel_material_; + Ogre::TexturePtr texture_; + +private: +}; + +// Ogre::Overlay* createOverlay(std::string name); +// Ogre::PanelOverlayElement* createOverlayPanel(Ogre::Overlay* overlay); +// Ogre::MaterialPtr createOverlayMaterial(Ogre::Overlay* overlay); +} // namespace jsk_rviz_plugins + +#endif // TOOLS__JSK_OVERLAY_UTILS_HPP_ diff --git a/common/autoware_planning_rviz_plugin/src/tools/max_velocity.cpp b/common/autoware_planning_rviz_plugin/src/tools/max_velocity.cpp new file mode 100644 index 0000000000000..53750cb9db1be --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/tools/max_velocity.cpp @@ -0,0 +1,189 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "max_velocity.hpp" + +#include +#include +#include + +#include + +#include +#include +#include + +namespace rviz_plugins +{ +MaxVelocityDisplay::MaxVelocityDisplay() +{ + property_topic_name_ = new rviz_common::properties::StringProperty( + "Topic", "/planning/scenario_planning/current_max_velocity", + "The topic on which to publish max velocity.", this, SLOT(updateTopic()), this); + property_text_color_ = new rviz_common::properties::ColorProperty( + "Text Color", QColor(255, 255, 255), "text color", this, SLOT(updateVisualization()), this); + property_left_ = new rviz_common::properties::IntProperty( + "Left", 128, "Left of the plotter window", this, SLOT(updateVisualization()), this); + property_left_->setMin(0); + property_top_ = new rviz_common::properties::IntProperty( + "Top", 128, "Top of the plotter window", this, SLOT(updateVisualization())); + property_top_->setMin(0); + + property_length_ = new rviz_common::properties::IntProperty( + "Length", 96, "Length of the plotter window", this, SLOT(updateVisualization()), this); + property_length_->setMin(10); + property_value_scale_ = new rviz_common::properties::FloatProperty( + "Value Scale", 1.0 / 4.0, "Value scale", this, SLOT(updateVisualization()), this); + property_value_scale_->setMin(0.01); +} + +MaxVelocityDisplay::~MaxVelocityDisplay() +{ + if (initialized()) { + overlay_->hide(); + } +} + +void MaxVelocityDisplay::onInitialize() +{ + static int count = 0; + rviz_common::UniformStringStream ss; + ss << "MaxVelocityDisplayObject" << count++; + auto logger = context_->getRosNodeAbstraction().lock()->get_raw_node()->get_logger(); + overlay_.reset(new jsk_rviz_plugins::OverlayObject(scene_manager_, logger, ss.str())); + + overlay_->show(); + + overlay_->updateTextureSize(property_length_->getInt(), property_length_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); + + // QColor background_color; + // background_color.setAlpha(0); + // jsk_rviz_plugins::ScopedPixelBuffer buffer = overlay_->getBuffer(); + // hud_ = buffer.getQImage(*overlay_); + // for (int i = 0; i < overlay_->getTextureWidth(); i++) + // { + // for (int j = 0; j < overlay_->getTextureHeight(); j++) + // { + // hud_.setPixel(i, j, background_color.rgba()); + // } + // } +} + +void MaxVelocityDisplay::updateTopic() +{ + unsubscribe(); + subscribe(); +} + +void MaxVelocityDisplay::onEnable() +{ + subscribe(); + overlay_->show(); +} + +void MaxVelocityDisplay::onDisable() +{ + unsubscribe(); + reset(); + overlay_->hide(); +} + +void MaxVelocityDisplay::subscribe() +{ + std::string topic_name = property_topic_name_->getStdString(); + if (topic_name.length() > 0 && topic_name != "/") { + rclcpp::Node::SharedPtr raw_node = context_->getRosNodeAbstraction().lock()->get_raw_node(); + max_vel_sub_ = raw_node->create_subscription( + topic_name, rclcpp::QoS{1}.transient_local(), + std::bind(&MaxVelocityDisplay::processMessage, this, std::placeholders::_1)); + } +} + +void MaxVelocityDisplay::unsubscribe() { max_vel_sub_.reset(); } + +void MaxVelocityDisplay::processMessage( + const autoware_planning_msgs::msg::VelocityLimit::ConstSharedPtr msg_ptr) +{ + if (!isEnabled()) { + return; + } + if (!overlay_->isVisible()) { + return; + } + + QColor background_color; + background_color.setAlpha(0); + jsk_rviz_plugins::ScopedPixelBuffer buffer = overlay_->getBuffer(); + QImage hud = buffer.getQImage(*overlay_); + hud.fill(background_color); + + QPainter painter(&hud); + painter.setRenderHint(QPainter::Antialiasing, true); + + const int line_width = property_length_->getInt() / 8; + + int w = overlay_->getTextureWidth() - line_width; + int h = overlay_->getTextureHeight() - line_width; + + // draw sign + // QColor white_color(Qt::red); + // white_color.setAlpha(255); + // const double min_range_theta = 2.0 * M_PI + M_PI_2; + // const double max_range_theta = 0.0 + M_PI_2; + // painter.setPen(QPen(white_color, line_width, Qt::SolidLine)); + // painter.drawLine( + // (w / 2) + (line_width * 0.5) + ((double)w / 2.0 - (line_width * 0.5)) * std::cos(M_PI_4), + // (h / 2) + (line_width * 0.5) - ((double)h / 2.0 - (line_width * 0.5)) * std::sin(M_PI_4), + // (w / 2) + (line_width * 0.5) - ((double)w / 2.0 - (line_width * 0.5)) * std::cos(M_PI_4), + // (h / 2) + (line_width * 0.5) + ((double)h / 2.0 - (line_width * 0.5)) * std::sin(M_PI_4)); + // painter.drawArc( + // line_width * 0.5, line_width * 0.5, w, h, 16 * ((min_range_theta - M_PI) * 180.0 / M_PI), + // 16 * ((max_range_theta - min_range_theta) * 180.0 / M_PI)); + + // text + QColor text_color(property_text_color_->getColor()); + text_color.setAlpha(255); + painter.setPen(QPen(text_color, static_cast(2), Qt::SolidLine)); + QFont font = painter.font(); + font.setPixelSize( + std::max(static_cast(static_cast(w) * property_value_scale_->getFloat()), 1)); + font.setBold(true); + painter.setFont(font); + std::ostringstream velocity_ss; + velocity_ss << std::fixed << std::setprecision(0) << "limited" << std::endl + << msg_ptr->max_velocity * 3.6 << "km/h"; + painter.drawText( + static_cast(line_width * 0.5), std::min(static_cast(line_width * 0.5), h - 1), w, + std::max(h, 1), Qt::AlignCenter | Qt::AlignVCenter, velocity_ss.str().c_str()); + painter.end(); + last_msg_ptr_ = msg_ptr; +} + +void MaxVelocityDisplay::updateVisualization() +{ + overlay_->updateTextureSize(property_length_->getInt(), property_length_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); + + if (last_msg_ptr_ != nullptr) { + processMessage(last_msg_ptr_); + } +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::MaxVelocityDisplay, rviz_common::Display) diff --git a/common/autoware_planning_rviz_plugin/src/tools/max_velocity.hpp b/common/autoware_planning_rviz_plugin/src/tools/max_velocity.hpp new file mode 100644 index 0000000000000..e379d1fd1b754 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/tools/max_velocity.hpp @@ -0,0 +1,82 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TOOLS__MAX_VELOCITY_HPP_ +#define TOOLS__MAX_VELOCITY_HPP_ + +#include +#include + +#ifndef Q_MOC_RUN +#include "jsk_overlay_utils.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#endif + +namespace rviz_plugins +{ +class MaxVelocityDisplay : public rviz_common::Display +{ + Q_OBJECT + +public: + MaxVelocityDisplay(); + virtual ~MaxVelocityDisplay(); + + void onInitialize() override; + void onDisable() override; + void onEnable() override; + void subscribe(); + void unsubscribe(); + +private Q_SLOTS: + void updateTopic(); + void updateVisualization(); + +protected: + void processMessage(const autoware_planning_msgs::msg::VelocityLimit::ConstSharedPtr msg_ptr); + jsk_rviz_plugins::OverlayObject::Ptr overlay_; + rviz_common::properties::ColorProperty * property_text_color_; + rviz_common::properties::IntProperty * property_left_; + rviz_common::properties::IntProperty * property_top_; + rviz_common::properties::IntProperty * property_length_; + rviz_common::properties::StringProperty * property_topic_name_; + rviz_common::properties::FloatProperty * property_value_scale_; + +private: + rclcpp::Subscription::SharedPtr max_vel_sub_; + autoware_planning_msgs::msg::VelocityLimit::ConstSharedPtr last_msg_ptr_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__MAX_VELOCITY_HPP_ diff --git a/common/autoware_planning_rviz_plugin/src/trajectory/display.cpp b/common/autoware_planning_rviz_plugin/src/trajectory/display.cpp new file mode 100644 index 0000000000000..3e6ce699fc5d2 --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/trajectory/display.cpp @@ -0,0 +1,317 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#define EIGEN_MPL2_ONLY +#include +#include + +namespace rviz_plugins +{ +std::unique_ptr AutowareTrajectoryDisplay::gradation( + const QColor & color_min, const QColor & color_max, const double ratio) +{ + std::unique_ptr color_ptr(new Ogre::ColourValue); + color_ptr->g = color_max.greenF() * ratio + color_min.greenF() * (1.0 - ratio); + color_ptr->r = color_max.redF() * ratio + color_min.redF() * (1.0 - ratio); + color_ptr->b = color_max.blueF() * ratio + color_min.blueF() * (1.0 - ratio); + + return color_ptr; +} + +std::unique_ptr AutowareTrajectoryDisplay::setColorDependsOnVelocity( + const double vel_max, const double cmd_vel) +{ + const double cmd_vel_abs = std::fabs(cmd_vel); + const double vel_min = 0.0; + + std::unique_ptr color_ptr(new Ogre::ColourValue()); + if (vel_min < cmd_vel_abs && cmd_vel_abs <= (vel_max / 2.0)) { + double ratio = (cmd_vel_abs - vel_min) / (vel_max / 2.0 - vel_min); + color_ptr = gradation(Qt::red, Qt::yellow, ratio); + } else if ((vel_max / 2.0) < cmd_vel_abs && cmd_vel_abs <= vel_max) { + double ratio = (cmd_vel_abs - vel_max / 2.0) / (vel_max - vel_max / 2.0); + color_ptr = gradation(Qt::yellow, Qt::green, ratio); + } else if (vel_max < cmd_vel_abs) { + *color_ptr = Ogre::ColourValue::Green; + } else { + *color_ptr = Ogre::ColourValue::Red; + } + + return color_ptr; +} + +AutowareTrajectoryDisplay::AutowareTrajectoryDisplay() +{ + property_path_view_ = new rviz_common::properties::BoolProperty( + "View Path", true, "", this, SLOT(updateVisualization())); + property_path_width_ = new rviz_common::properties::FloatProperty( + "Width", 2.0, "", property_path_view_, SLOT(updateVisualization()), this); + property_path_width_->setMin(0.0); + property_path_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_path_view_, SLOT(updateVisualization()), this); + property_path_alpha_->setMin(0.0); + property_path_alpha_->setMax(1.0); + property_path_color_view_ = new rviz_common::properties::BoolProperty( + "Constant Color", false, "", property_path_view_, SLOT(updateVisualization()), this); + property_path_color_ = new rviz_common::properties::ColorProperty( + "Color", Qt::black, "", property_path_view_, SLOT(updateVisualization()), this); + + property_velocity_view_ = new rviz_common::properties::BoolProperty( + "View Velocity", true, "", this, SLOT(updateVisualization()), this); + property_velocity_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_alpha_->setMin(0.0); + property_velocity_alpha_->setMax(1.0); + property_velocity_scale_ = new rviz_common::properties::FloatProperty( + "Scale", 0.3, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_scale_->setMin(0.1); + property_velocity_scale_->setMax(10.0); + property_velocity_color_view_ = new rviz_common::properties::BoolProperty( + "Constant Color", false, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_color_ = new rviz_common::properties::ColorProperty( + "Color", Qt::black, "", property_velocity_view_, SLOT(updateVisualization()), this); + property_velocity_text_view_ = new rviz_common::properties::BoolProperty( + "View Text Velocity", false, "", this, SLOT(updateVisualization()), this); + property_velocity_text_scale_ = new rviz_common::properties::FloatProperty( + "Scale", 0.3, "", property_velocity_text_view_, SLOT(updateVisualization()), this); + property_vel_max_ = new rviz_common::properties::FloatProperty( + "Color Border Vel Max", 3.0, "[m/s]", this, SLOT(updateVisualization()), this); + property_vel_max_->setMin(0.0); +} + +AutowareTrajectoryDisplay::~AutowareTrajectoryDisplay() +{ + if (initialized()) { + scene_manager_->destroyManualObject(path_manual_object_); + scene_manager_->destroyManualObject(velocity_manual_object_); + for (size_t i = 0; i < velocity_text_nodes_.size(); i++) { + Ogre::SceneNode * node = velocity_text_nodes_.at(i); + node->removeAndDestroyAllChildren(); + node->detachAllObjects(); + scene_manager_->destroySceneNode(node); + } + } +} + +void AutowareTrajectoryDisplay::onInitialize() +{ + MFDClass::onInitialize(); + + path_manual_object_ = scene_manager_->createManualObject(); + velocity_manual_object_ = scene_manager_->createManualObject(); + path_manual_object_->setDynamic(true); + velocity_manual_object_->setDynamic(true); + scene_node_->attachObject(path_manual_object_); + scene_node_->attachObject(velocity_manual_object_); +} + +void AutowareTrajectoryDisplay::reset() +{ + MFDClass::reset(); + path_manual_object_->clear(); + velocity_manual_object_->clear(); + for (size_t i = 0; i < velocity_texts_.size(); i++) { + Ogre::SceneNode * node = velocity_text_nodes_.at(i); + node->detachAllObjects(); + node->removeAndDestroyAllChildren(); + scene_manager_->destroySceneNode(node); + } + velocity_text_nodes_.clear(); + velocity_texts_.clear(); +} + +bool AutowareTrajectoryDisplay::validateFloats( + const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr & msg_ptr) +{ + for (auto && trajectory_point : msg_ptr->points) { + if ( + !rviz_common::validateFloats(trajectory_point.pose) && + !rviz_common::validateFloats(trajectory_point.longitudinal_velocity_mps)) { + return false; + } + } + return true; +} + +void AutowareTrajectoryDisplay::processMessage( + const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr msg_ptr) +{ + if (!validateFloats(msg_ptr)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Topic", + "Message contained invalid floating point values (nans or infs)"); + return; + } + + Ogre::Vector3 position; + Ogre::Quaternion orientation; + if (!context_->getFrameManager()->getTransform(msg_ptr->header, position, orientation)) { + RCLCPP_DEBUG( + rclcpp::get_logger("AutowareTrajectoryDisplay"), + "Error transforming from frame '%s' to frame '%s'", msg_ptr->header.frame_id.c_str(), + qPrintable(fixed_frame_)); + } + + scene_node_->setPosition(position); + scene_node_->setOrientation(orientation); + + path_manual_object_->clear(); + velocity_manual_object_->clear(); + + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + + if (!msg_ptr->points.empty()) { + path_manual_object_->estimateVertexCount(msg_ptr->points.size() * 2); + velocity_manual_object_->estimateVertexCount(msg_ptr->points.size()); + path_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_TRIANGLE_STRIP); + velocity_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP); + + if (msg_ptr->points.size() > velocity_texts_.size()) { + for (size_t i = velocity_texts_.size(); i < msg_ptr->points.size(); i++) { + Ogre::SceneNode * node = scene_node_->createChildSceneNode(); + rviz_rendering::MovableText * text = + new rviz_rendering::MovableText("not initialized", "Liberation Sans", 0.1); + text->setVisible(false); + text->setTextAlignment( + rviz_rendering::MovableText::H_CENTER, rviz_rendering::MovableText::V_ABOVE); + node->attachObject(text); + velocity_texts_.push_back(text); + velocity_text_nodes_.push_back(node); + } + } else if (msg_ptr->points.size() < velocity_texts_.size()) { + for (size_t i = velocity_texts_.size() - 1; i >= msg_ptr->points.size(); i--) { + Ogre::SceneNode * node = velocity_text_nodes_.at(i); + node->detachAllObjects(); + node->removeAndDestroyAllChildren(); + scene_manager_->destroySceneNode(node); + } + velocity_texts_.resize(msg_ptr->points.size()); + velocity_text_nodes_.resize(msg_ptr->points.size()); + } + + for (size_t point_idx = 0; point_idx < msg_ptr->points.size(); point_idx++) { + const auto & path_point = msg_ptr->points.at(point_idx); + /* + * Path + */ + if (property_path_view_->getBool()) { + Ogre::ColourValue color; + if (property_path_color_view_->getBool()) { + color = rviz_common::properties::qtToOgre(property_path_color_->getColor()); + } else { + /* color change depending on velocity */ + std::unique_ptr dynamic_color_ptr = setColorDependsOnVelocity( + property_vel_max_->getFloat(), path_point.longitudinal_velocity_mps); + color = *dynamic_color_ptr; + } + color.a = property_path_alpha_->getFloat(); + Eigen::Vector3f vec_in, vec_out; + Eigen::Quaternionf quat_yaw_reverse(0, 0, 0, 1); + { + vec_in << 0, (property_path_width_->getFloat() / 2.0), 0; + Eigen::Quaternionf quat( + path_point.pose.orientation.w, path_point.pose.orientation.x, + path_point.pose.orientation.y, path_point.pose.orientation.z); + if (path_point.longitudinal_velocity_mps < 0) { + quat *= quat_yaw_reverse; + } + vec_out = quat * vec_in; + path_manual_object_->position( + path_point.pose.position.x + vec_out.x(), path_point.pose.position.y + vec_out.y(), + path_point.pose.position.z + vec_out.z()); + path_manual_object_->colour(color); + } + { + vec_in << 0, -(property_path_width_->getFloat() / 2.0), 0; + Eigen::Quaternionf quat( + path_point.pose.orientation.w, path_point.pose.orientation.x, + path_point.pose.orientation.y, path_point.pose.orientation.z); + if (path_point.longitudinal_velocity_mps < 0) { + quat *= quat_yaw_reverse; + } + vec_out = quat * vec_in; + path_manual_object_->position( + path_point.pose.position.x + vec_out.x(), path_point.pose.position.y + vec_out.y(), + path_point.pose.position.z + vec_out.z()); + path_manual_object_->colour(color); + } + } + /* + * Velocity + */ + if (property_velocity_view_->getBool()) { + Ogre::ColourValue color; + if (property_velocity_color_view_->getBool()) { + color = rviz_common::properties::qtToOgre(property_velocity_color_->getColor()); + } else { + /* color change depending on velocity */ + std::unique_ptr dynamic_color_ptr = setColorDependsOnVelocity( + property_vel_max_->getFloat(), path_point.longitudinal_velocity_mps); + color = *dynamic_color_ptr; + } + color.a = property_velocity_alpha_->getFloat(); + + velocity_manual_object_->position( + path_point.pose.position.x, path_point.pose.position.y, + path_point.pose.position.z + + path_point.longitudinal_velocity_mps * property_velocity_scale_->getFloat()); + velocity_manual_object_->colour(color); + } + /* + * Velocity Text + */ + if (property_velocity_text_view_->getBool()) { + Ogre::Vector3 position; + position.x = path_point.pose.position.x; + position.y = path_point.pose.position.y; + position.z = path_point.pose.position.z; + Ogre::SceneNode * node = velocity_text_nodes_.at(point_idx); + node->setPosition(position); + + rviz_rendering::MovableText * text = velocity_texts_.at(point_idx); + double vel = path_point.longitudinal_velocity_mps; + text->setCaption( + std::to_string(static_cast(std::floor(vel))) + "." + + std::to_string(static_cast(std::floor(vel * 100)))); + text->setCharacterHeight(property_velocity_text_scale_->getFloat()); + text->setVisible(true); + } else { + rviz_rendering::MovableText * text = velocity_texts_.at(point_idx); + text->setVisible(false); + } + } + + path_manual_object_->end(); + velocity_manual_object_->end(); + } + last_msg_ptr_ = msg_ptr; +} + +void AutowareTrajectoryDisplay::updateVisualization() +{ + if (last_msg_ptr_ != nullptr) { + processMessage(last_msg_ptr_); + } +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::AutowareTrajectoryDisplay, rviz_common::Display) diff --git a/common/autoware_planning_rviz_plugin/src/trajectory_footprint/display.cpp b/common/autoware_planning_rviz_plugin/src/trajectory_footprint/display.cpp new file mode 100644 index 0000000000000..4eb63fcd1201e --- /dev/null +++ b/common/autoware_planning_rviz_plugin/src/trajectory_footprint/display.cpp @@ -0,0 +1,250 @@ +// Copyright 2021 Tier IV, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#define EIGEN_MPL2_ONLY +#include +#include +#include + +#include + +namespace rviz_plugins +{ +AutowareTrajectoryFootprintDisplay::AutowareTrajectoryFootprintDisplay() +{ + // trajectory footprint + property_trajectory_footprint_view_ = new rviz_common::properties::BoolProperty( + "View Trajectory Footprint", true, "", this, SLOT(updateVisualization()), this); + property_trajectory_footprint_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_trajectory_footprint_view_, SLOT(updateVisualization()), this); + property_trajectory_footprint_alpha_->setMin(0.0); + property_trajectory_footprint_alpha_->setMax(1.0); + property_trajectory_footprint_color_ = new rviz_common::properties::ColorProperty( + "Color", QColor(230, 230, 50), "", property_trajectory_footprint_view_, + SLOT(updateVisualization()), this); + property_vehicle_length_ = new rviz_common::properties::FloatProperty( + "Vehicle Length", 4.77, "", property_trajectory_footprint_view_, SLOT(updateVehicleInfo()), + this); + property_vehicle_width_ = new rviz_common::properties::FloatProperty( + "Vehicle Width", 1.83, "", property_trajectory_footprint_view_, SLOT(updateVehicleInfo()), + this); + property_rear_overhang_ = new rviz_common::properties::FloatProperty( + "Rear Overhang", 1.03, "", property_trajectory_footprint_view_, SLOT(updateVehicleInfo()), + this); + property_vehicle_length_->setMin(0.0); + property_vehicle_width_->setMin(0.0); + property_rear_overhang_->setMin(0.0); + + // trajectory point + property_trajectory_point_view_ = new rviz_common::properties::BoolProperty( + "View Trajectory Point", false, "", this, SLOT(updateVisualization()), this); + property_trajectory_point_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", property_trajectory_point_view_, SLOT(updateVisualization()), this); + property_trajectory_point_alpha_->setMin(0.0); + property_trajectory_point_alpha_->setMax(1.0); + property_trajectory_point_color_ = new rviz_common::properties::ColorProperty( + "Color", QColor(0, 60, 255), "", property_trajectory_point_view_, SLOT(updateVisualization()), + this); + property_trajectory_point_radius_ = new rviz_common::properties::FloatProperty( + "Radius", 0.1, "", property_trajectory_point_view_, SLOT(updateVisualization()), this); + property_trajectory_point_offset_ = new rviz_common::properties::FloatProperty( + "Offset", 0.0, "", property_trajectory_point_view_, SLOT(updateVisualization()), this); + + updateVehicleInfo(); +} + +AutowareTrajectoryFootprintDisplay::~AutowareTrajectoryFootprintDisplay() +{ + if (initialized()) { + scene_manager_->destroyManualObject(trajectory_footprint_manual_object_); + scene_manager_->destroyManualObject(trajectory_point_manual_object_); + } +} + +void AutowareTrajectoryFootprintDisplay::onInitialize() +{ + MFDClass::onInitialize(); + + trajectory_footprint_manual_object_ = scene_manager_->createManualObject(); + trajectory_footprint_manual_object_->setDynamic(true); + scene_node_->attachObject(trajectory_footprint_manual_object_); + + trajectory_point_manual_object_ = scene_manager_->createManualObject(); + trajectory_point_manual_object_->setDynamic(true); + scene_node_->attachObject(trajectory_point_manual_object_); +} + +void AutowareTrajectoryFootprintDisplay::reset() +{ + MFDClass::reset(); + trajectory_footprint_manual_object_->clear(); + trajectory_point_manual_object_->clear(); +} + +bool AutowareTrajectoryFootprintDisplay::validateFloats( + const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr & msg_ptr) +{ + for (auto && trajectory_point : msg_ptr->points) { + if (!rviz_common::validateFloats(trajectory_point.pose)) { + return false; + } + } + return true; +} + +void AutowareTrajectoryFootprintDisplay::processMessage( + const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr msg_ptr) +{ + if (!validateFloats(msg_ptr)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Topic", + "Message contained invalid floating point values (nans or infs)"); + return; + } + + Ogre::Vector3 position; + Ogre::Quaternion orientation; + if (!context_->getFrameManager()->getTransform(msg_ptr->header, position, orientation)) { + RCLCPP_DEBUG( + rviz_ros_node_.lock()->get_raw_node()->get_logger(), + "Error transforming from frame '%s' to frame '%s'", msg_ptr->header.frame_id.c_str(), + qPrintable(fixed_frame_)); + } + + scene_node_->setPosition(position); + scene_node_->setOrientation(orientation); + + trajectory_footprint_manual_object_->clear(); + trajectory_point_manual_object_->clear(); + + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + + if (!msg_ptr->points.empty()) { + trajectory_footprint_manual_object_->estimateVertexCount(msg_ptr->points.size() * 4 * 2); + trajectory_footprint_manual_object_->begin( + "BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST); + + trajectory_point_manual_object_->estimateVertexCount(msg_ptr->points.size() * 3 * 8); + trajectory_point_manual_object_->begin( + "BaseWhiteNoLighting", Ogre::RenderOperation::OT_TRIANGLE_LIST); + + for (size_t point_idx = 0; point_idx < msg_ptr->points.size(); point_idx++) { + const auto & path_point = msg_ptr->points.at(point_idx); + /* + * Footprint + */ + if (property_trajectory_footprint_view_->getBool()) { + Ogre::ColourValue color; + color = rviz_common::properties::qtToOgre(property_trajectory_footprint_color_->getColor()); + color.a = property_trajectory_footprint_alpha_->getFloat(); + + const auto info = vehicle_footprint_info_; + const float top = info->length - info->rear_overhang; + const float bottom = -info->rear_overhang; + const float left = -info->width / 2.0; + const float right = info->width / 2.0; + + const std::array lon_offset_vec{top, top, bottom, bottom}; + const std::array lat_offset_vec{left, right, right, left}; + + for (int f_idx = 0; f_idx < 4; ++f_idx) { + const Eigen::Quaternionf quat( + path_point.pose.orientation.w, path_point.pose.orientation.x, + path_point.pose.orientation.y, path_point.pose.orientation.z); + + { + const Eigen::Vector3f offset_vec{ + lon_offset_vec.at(f_idx), lat_offset_vec.at(f_idx), 0.0}; + const auto offset_to_edge = quat * offset_vec; + trajectory_footprint_manual_object_->position( + path_point.pose.position.x + offset_to_edge.x(), + path_point.pose.position.y + offset_to_edge.y(), path_point.pose.position.z); + trajectory_footprint_manual_object_->colour(color); + } + { + const Eigen::Vector3f offset_vec{ + lon_offset_vec.at((f_idx + 1) % 4), lat_offset_vec.at((f_idx + 1) % 4), 0.0}; + const auto offset_to_edge = quat * offset_vec; + trajectory_footprint_manual_object_->position( + path_point.pose.position.x + offset_to_edge.x(), + path_point.pose.position.y + offset_to_edge.y(), path_point.pose.position.z); + trajectory_footprint_manual_object_->colour(color); + } + } + } + + /* + * Point + */ + if (property_trajectory_point_view_->getBool()) { + Ogre::ColourValue color; + color = rviz_common::properties::qtToOgre(property_trajectory_point_color_->getColor()); + color.a = property_trajectory_point_alpha_->getFloat(); + + const double offset = property_trajectory_point_offset_->getFloat(); + const double yaw = tf2::getYaw(path_point.pose.orientation); + const double base_x = path_point.pose.position.x + offset * std::cos(yaw); + const double base_y = path_point.pose.position.y + offset * std::sin(yaw); + const double base_z = path_point.pose.position.z; + + const double radius = property_trajectory_point_radius_->getFloat(); + for (size_t s_idx = 0; s_idx < 8; ++s_idx) { + const double current_angle = static_cast(s_idx) / 8.0 * 2.0 * M_PI; + const double next_angle = static_cast(s_idx + 1) / 8.0 * 2.0 * M_PI; + trajectory_point_manual_object_->position( + base_x + radius * std::cos(current_angle), base_y + radius * std::sin(current_angle), + base_z); + trajectory_point_manual_object_->colour(color); + + trajectory_point_manual_object_->position( + base_x + radius * std::cos(next_angle), base_y + radius * std::sin(next_angle), base_z); + trajectory_point_manual_object_->colour(color); + + trajectory_point_manual_object_->position(base_x, base_y, base_z); + trajectory_point_manual_object_->colour(color); + } + } + } + + trajectory_footprint_manual_object_->end(); + trajectory_point_manual_object_->end(); + } + last_msg_ptr_ = msg_ptr; +} + +void AutowareTrajectoryFootprintDisplay::updateVisualization() +{ + if (last_msg_ptr_ != nullptr) { + processMessage(last_msg_ptr_); + } +} + +void AutowareTrajectoryFootprintDisplay::updateVehicleInfo() +{ + float length{property_vehicle_length_->getFloat()}; + float width{property_vehicle_width_->getFloat()}; + float rear_overhang{property_rear_overhang_->getFloat()}; + + vehicle_footprint_info_ = std::make_shared(length, width, rear_overhang); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::AutowareTrajectoryFootprintDisplay, rviz_common::Display) diff --git a/common/autoware_state_rviz_plugin/CMakeLists.txt b/common/autoware_state_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..9098124f01131 --- /dev/null +++ b/common/autoware_state_rviz_plugin/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.5) +project(autoware_state_rviz_plugin) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic -Werror) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) + +ament_auto_add_library(${PROJECT_NAME} SHARED + src/autoware_state_panel.cpp +) + +target_link_libraries(${PROJECT_NAME} + ${QT_LIBRARIES} +) + +# Export the plugin to be imported by rviz2 +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + plugins +) diff --git a/common/autoware_state_rviz_plugin/README.md b/common/autoware_state_rviz_plugin/README.md new file mode 100644 index 0000000000000..425a586ea57b8 --- /dev/null +++ b/common/autoware_state_rviz_plugin/README.md @@ -0,0 +1,32 @@ +# autoware_state_rviz_plugin + +## Purpose + +This plugin displays the current status of autoware. +This plugin also can engage from the panel. + +## Inputs / Outputs + +### Input + +| Name | Type | Description | +| ----------------------------- | ----------------------------------------------- | -------------------------------------------------- | +| `/control/current_gate_mode` | `autoware_control_msgs::msg::GateMode` | The topic represents the state of AUTO or EXTERNAL | +| `/autoware/state` | `autoware_auto_system_msgs::msg::AutowareState` | The topic represents the state of Autoware | +| `/vehicle/status/gear_status` | `autoware_auto_vehicle_msgs::msg::GearReport` | The topic represents the state of Gear | +| `/api/external/get/engage` | `autoware_external_api_msgs::msg::EngageStatus` | The topic represents the state of Engage | + +### Output + +| Name | Type | Description | +| -------------------------- | ----------------------------------------- | ------------------------------ | +| `/api/external/set/engage` | `autoware_external_api_msgs::srv::Engage` | The service inputs engage true | + +## HowToUse + +1. Start rviz and select panels/Add new panel. + ![select_panel](./images/select_panels.png) +2. Select autoware_state_rviz_plugin/AutowareStatePanel and press OK. + ![select_state_plugin](./images/select_state_plugin.png) +3. If the AutowareState is WaitingForEngage, can engage by clicking the Engage button. + ![select_engage](./images/select_engage.png) diff --git a/common/autoware_state_rviz_plugin/icons/classes/AutowareStatePanel.png b/common/autoware_state_rviz_plugin/icons/classes/AutowareStatePanel.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_state_rviz_plugin/images/select_engage.png b/common/autoware_state_rviz_plugin/images/select_engage.png new file mode 100644 index 0000000000000000000000000000000000000000..9a842800a786c840707567403981702b43c8f934 GIT binary patch literal 46355 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

(b(lWII6B~AIsX+)%AkH2rICBH{-grk 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 literal 0 HcmV?d00001 diff --git a/common/autoware_state_rviz_plugin/images/select_panels.png b/common/autoware_state_rviz_plugin/images/select_panels.png new file mode 100644 index 0000000000000000000000000000000000000000..a691602c42c3c688f636b57aa7449486df296094 GIT binary patch literal 67237 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 Ni{i6IylL;T{{zK3R#E@} literal 0 HcmV?d00001 diff --git a/common/autoware_state_rviz_plugin/images/select_state_plugin.png b/common/autoware_state_rviz_plugin/images/select_state_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..eff568e7553073f4a0386d438ae4ad84d506652e GIT binary patch literal 86154 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 Ozu;;QRk6y?g8v^~2B0_q literal 0 HcmV?d00001 diff --git a/common/autoware_state_rviz_plugin/package.xml b/common/autoware_state_rviz_plugin/package.xml new file mode 100644 index 0000000000000..ad9ee379e7ce6 --- /dev/null +++ b/common/autoware_state_rviz_plugin/package.xml @@ -0,0 +1,30 @@ + + + + autoware_state_rviz_plugin + 0.0.0 + The autoware state rviz plugin package + Hiroki OTA + Apache License 2.0 + + ament_cmake_auto + autoware_auto_system_msgs + autoware_auto_vehicle_msgs + autoware_control_msgs + autoware_external_api_msgs + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rclcpp + rviz_common + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + + + diff --git a/common/autoware_state_rviz_plugin/plugins/plugin_description.xml b/common/autoware_state_rviz_plugin/plugins/plugin_description.xml new file mode 100644 index 0000000000000..df5b5500b30fa --- /dev/null +++ b/common/autoware_state_rviz_plugin/plugins/plugin_description.xml @@ -0,0 +1,9 @@ + + + + AutowareStatePanel + + + diff --git a/common/autoware_state_rviz_plugin/src/autoware_state_panel.cpp b/common/autoware_state_rviz_plugin/src/autoware_state_panel.cpp new file mode 100644 index 0000000000000..4dad6cb742f6d --- /dev/null +++ b/common/autoware_state_rviz_plugin/src/autoware_state_panel.cpp @@ -0,0 +1,199 @@ +// +// Copyright 2020 Tier IV, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "autoware_state_panel.hpp" + +#include +#include +#include + +#include +#include + +inline std::string Bool2String(const bool var) { return var ? "True" : "False"; } + +using std::placeholders::_1; + +namespace rviz_plugins +{ +AutowareStatePanel::AutowareStatePanel(QWidget * parent) : rviz_common::Panel(parent) +{ + // Gate Mode + auto * gate_prefix_label_ptr = new QLabel("GATE: "); + gate_prefix_label_ptr->setAlignment(Qt::AlignRight); + gate_mode_label_ptr_ = new QLabel("INIT"); + gate_mode_label_ptr_->setAlignment(Qt::AlignCenter); + auto * gate_layout = new QHBoxLayout; + gate_layout->addWidget(gate_prefix_label_ptr); + gate_layout->addWidget(gate_mode_label_ptr_); + + // State + auto * state_prefix_label_ptr = new QLabel("STATE: "); + state_prefix_label_ptr->setAlignment(Qt::AlignRight); + autoware_state_label_ptr_ = new QLabel("INIT"); + autoware_state_label_ptr_->setAlignment(Qt::AlignCenter); + auto * state_layout = new QHBoxLayout; + state_layout->addWidget(state_prefix_label_ptr); + state_layout->addWidget(autoware_state_label_ptr_); + + // Gear + auto * gear_prefix_label_ptr = new QLabel("GEAR: "); + gear_prefix_label_ptr->setAlignment(Qt::AlignRight); + gear_label_ptr_ = new QLabel("INIT"); + gear_label_ptr_->setAlignment(Qt::AlignCenter); + auto * gear_layout = new QHBoxLayout; + gear_layout->addWidget(gear_prefix_label_ptr); + gear_layout->addWidget(gear_label_ptr_); + + // Engage Status + auto * engage_prefix_label_ptr = new QLabel("Engage: "); + engage_prefix_label_ptr->setAlignment(Qt::AlignRight); + engage_status_label_ptr_ = new QLabel("INIT"); + engage_status_label_ptr_->setAlignment(Qt::AlignCenter); + auto * engage_status_layout = new QHBoxLayout; + engage_status_layout->addWidget(engage_prefix_label_ptr); + engage_status_layout->addWidget(engage_status_label_ptr_); + + // Autoware Engage Button + engage_button_ptr_ = new QPushButton("Engage"); + connect(engage_button_ptr_, SIGNAL(clicked()), SLOT(onClickAutowareEngage())); + + auto * v_layout = new QVBoxLayout; + v_layout->addLayout(gate_layout); + v_layout->addLayout(state_layout); + v_layout->addLayout(gear_layout); + v_layout->addLayout(engage_status_layout); + v_layout->addWidget(engage_button_ptr_); + setLayout(v_layout); +} + +void AutowareStatePanel::onInitialize() +{ + raw_node_ = this->getDisplayContext()->getRosNodeAbstraction().lock()->get_raw_node(); + + sub_gate_mode_ = raw_node_->create_subscription( + "/control/current_gate_mode", 10, std::bind(&AutowareStatePanel::onGateMode, this, _1)); + + sub_autoware_state_ = + raw_node_->create_subscription( + "/autoware/state", 10, std::bind(&AutowareStatePanel::onAutowareState, this, _1)); + + sub_gear_ = raw_node_->create_subscription( + "/vehicle/status/gear_status", 10, std::bind(&AutowareStatePanel::onShift, this, _1)); + + sub_engage_ = raw_node_->create_subscription( + "/api/external/get/engage", 10, std::bind(&AutowareStatePanel::onEngageStatus, this, _1)); + + client_engage_ = raw_node_->create_client( + "/api/external/set/engage", rmw_qos_profile_services_default); +} + +void AutowareStatePanel::onGateMode(const autoware_control_msgs::msg::GateMode::ConstSharedPtr msg) +{ + switch (msg->data) { + case autoware_control_msgs::msg::GateMode::AUTO: + gate_mode_label_ptr_->setText("AUTO"); + gate_mode_label_ptr_->setStyleSheet("background-color: #00FF00;"); + break; + + case autoware_control_msgs::msg::GateMode::EXTERNAL: + gate_mode_label_ptr_->setText("EXTERNAL"); + gate_mode_label_ptr_->setStyleSheet("background-color: #FFFF00;"); + break; + + default: + gate_mode_label_ptr_->setText("UNKNOWN"); + gate_mode_label_ptr_->setStyleSheet("background-color: #FF0000;"); + break; + } +} + +void AutowareStatePanel::onAutowareState( + const autoware_auto_system_msgs::msg::AutowareState::ConstSharedPtr msg) +{ + if (msg->state == autoware_auto_system_msgs::msg::AutowareState::INITIALIZING) { + autoware_state_label_ptr_->setText("INITIALIZING"); + autoware_state_label_ptr_->setStyleSheet("background-color: #FFFF00;"); + } else if (msg->state == autoware_auto_system_msgs::msg::AutowareState::WAITING_FOR_ROUTE) { + autoware_state_label_ptr_->setText("WAITING_FOR_ROUTE"); + autoware_state_label_ptr_->setStyleSheet("background-color: #FFFF00;"); + } else if (msg->state == autoware_auto_system_msgs::msg::AutowareState::PLANNING) { + autoware_state_label_ptr_->setText("PLANNING"); + autoware_state_label_ptr_->setStyleSheet("background-color: #FFFF00;"); + } else if (msg->state == autoware_auto_system_msgs::msg::AutowareState::WAITING_FOR_ENGAGE) { + autoware_state_label_ptr_->setText("WAITING_FOR_ENGAGE"); + autoware_state_label_ptr_->setStyleSheet("background-color: #00FFFF;"); + } else if (msg->state == autoware_auto_system_msgs::msg::AutowareState::DRIVING) { + autoware_state_label_ptr_->setText("DRIVING"); + autoware_state_label_ptr_->setStyleSheet("background-color: #00FF00;"); + } else if (msg->state == autoware_auto_system_msgs::msg::AutowareState::ARRIVED_GOAL) { + autoware_state_label_ptr_->setText("ARRIVED_GOAL"); + autoware_state_label_ptr_->setStyleSheet("background-color: #FF00FF;"); + } else if (msg->state == autoware_auto_system_msgs::msg::AutowareState::FINALIZING) { + autoware_state_label_ptr_->setText("FINALIZING"); + autoware_state_label_ptr_->setStyleSheet("background-color: #FFFF00;"); + } +} + +void AutowareStatePanel::onShift( + const autoware_auto_vehicle_msgs::msg::GearReport::ConstSharedPtr msg) +{ + switch (msg->report) { + case autoware_auto_vehicle_msgs::msg::GearReport::PARK: + gear_label_ptr_->setText("PARKING"); + break; + case autoware_auto_vehicle_msgs::msg::GearReport::REVERSE: + gear_label_ptr_->setText("REVERSE"); + break; + case autoware_auto_vehicle_msgs::msg::GearReport::DRIVE: + gear_label_ptr_->setText("DRIVE"); + break; + case autoware_auto_vehicle_msgs::msg::GearReport::LOW: + gear_label_ptr_->setText("LOW"); + break; + } +} + +void AutowareStatePanel::onEngageStatus( + const autoware_external_api_msgs::msg::EngageStatus::ConstSharedPtr msg) +{ + engage_status_label_ptr_->setText(QString::fromStdString(Bool2String(msg->engage))); +} + +void AutowareStatePanel::onClickAutowareEngage() +{ + auto req = std::make_shared(); + req->engage = true; + + RCLCPP_INFO(raw_node_->get_logger(), "client request"); + + if (!client_engage_->service_is_ready()) { + RCLCPP_INFO(raw_node_->get_logger(), "client is unavailable"); + return; + } + + client_engage_->async_send_request( + req, [this](rclcpp::Client::SharedFuture result) { + RCLCPP_INFO( + raw_node_->get_logger(), "Status: %d, %s", result.get()->status.code, + result.get()->status.message.c_str()); + }); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::AutowareStatePanel, rviz_common::Panel) diff --git a/common/autoware_state_rviz_plugin/src/autoware_state_panel.hpp b/common/autoware_state_rviz_plugin/src/autoware_state_panel.hpp new file mode 100644 index 0000000000000..c9d1f9bc97f2d --- /dev/null +++ b/common/autoware_state_rviz_plugin/src/autoware_state_panel.hpp @@ -0,0 +1,68 @@ +// +// Copyright 2020 Tier IV, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef AUTOWARE_STATE_PANEL_HPP_ +#define AUTOWARE_STATE_PANEL_HPP_ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +namespace rviz_plugins +{ +class AutowareStatePanel : public rviz_common::Panel +{ + Q_OBJECT + +public: + explicit AutowareStatePanel(QWidget * parent = nullptr); + void onInitialize() override; + +public Q_SLOTS: + void onClickAutowareEngage(); + +protected: + void onGateMode(const autoware_control_msgs::msg::GateMode::ConstSharedPtr msg); + void onAutowareState(const autoware_auto_system_msgs::msg::AutowareState::ConstSharedPtr msg); + void onShift(const autoware_auto_vehicle_msgs::msg::GearReport::ConstSharedPtr msg); + void onEngageStatus(const autoware_external_api_msgs::msg::EngageStatus::ConstSharedPtr msg); + + rclcpp::Node::SharedPtr raw_node_; + rclcpp::Subscription::SharedPtr sub_gate_mode_; + rclcpp::Subscription::SharedPtr + sub_autoware_state_; + rclcpp::Subscription::SharedPtr sub_gear_; + rclcpp::Subscription::SharedPtr sub_engage_; + + rclcpp::Client::SharedPtr client_engage_; + + QLabel * gate_mode_label_ptr_; + QLabel * autoware_state_label_ptr_; + QLabel * gear_label_ptr_; + QLabel * engage_status_label_ptr_; + QPushButton * engage_button_ptr_; +}; + +} // namespace rviz_plugins + +#endif // AUTOWARE_STATE_PANEL_HPP_ diff --git a/common/autoware_vehicle_rviz_plugin/CMakeLists.txt b/common/autoware_vehicle_rviz_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..0360d8b8a751a --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.5) +project(autoware_vehicle_rviz_plugin) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) + +set(HEADERS + src/tools/turn_signal.hpp + src/tools/console_meter.hpp + src/tools/steering_angle.hpp + src/tools/jsk_overlay_utils.hpp + src/tools/velocity_history.hpp +) + +## Declare a C++ library +ament_auto_add_library(autoware_vehicle_rviz_plugin SHARED + src/tools/turn_signal.cpp + src/tools/console_meter.cpp + src/tools/steering_angle.cpp + src/tools/jsk_overlay_utils.cpp + src/tools/velocity_history.cpp + ${HEADERS} +) + +target_link_libraries(autoware_vehicle_rviz_plugin + ${QT_LIBRARIES}) + +# Export the plugin to be imported by rviz2 +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + images + plugins +) diff --git a/common/autoware_vehicle_rviz_plugin/README.md b/common/autoware_vehicle_rviz_plugin/README.md new file mode 100644 index 0000000000000..c8a755604cbf3 --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/README.md @@ -0,0 +1,78 @@ +# autoware_vehicle_rviz_plugin + +This package is including jsk code. +Note that jsk_overlay_utils.cpp and jsk_overlay_utils.hpp are BSD license. + +## Purpose + +This plugin provides a visual and easy-to-understand display of vehicle speed, turn signal and steering status. + +## Inputs / Outputs + +### Input + +| Name | Type | Description | +| --------------------------------- | ------------------------------------------------------- | ---------------------------------- | +| `/vehicle/status/velocity_status` | `autoware_auto_vehicle_msgs::msg::VelocityReport` | The topic is vehicle twist | +| `/control/turn_signal_cmd` | `autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport` | The topic is status of turn signal | +| `/vehicle/status/steering_status` | `autoware_auto_vehicle_msgs::msg::SteeringReport` | The topic is status of steering | + +## Parameter + +### Core Parameters + +#### ConsoleMeter + +| Name | Type | Default Value | Description | +| ------------------------------- | ------ | -------------------- | ---------------------------------------- | +| `property_text_color_` | QColor | QColor(25, 255, 240) | Text color | +| `property_left_` | int | 128 | Left of the plotter window [px] | +| `property_top_` | int | 128 | Top of the plotter window [px] | +| `property_length_` | int | 256 | Height of the plotter window [px] | +| `property_value_height_offset_` | int | 0 | Height offset of the plotter window [px] | +| `property_value_scale_` | float | 1.0 / 6.667 | Value scale | + +#### SteeringAngle + +| Name | Type | Default Value | Description | +| ------------------------------- | ------ | -------------------- | ---------------------------------------- | +| `property_text_color_` | QColor | QColor(25, 255, 240) | Text color | +| `property_left_` | int | 128 | Left of the plotter window [px] | +| `property_top_` | int | 128 | Top of the plotter window [px] | +| `property_length_` | int | 256 | Height of the plotter window [px] | +| `property_value_height_offset_` | int | 0 | Height offset of the plotter window [px] | +| `property_value_scale_` | float | 1.0 / 6.667 | Value scale | +| `property_handle_angle_scale_` | float | 3.0 | Scale is steering angle to handle angle | + +#### TurnSignal + +| Name | Type | Default Value | Description | +| ------------------ | ---- | ------------- | -------------------------------- | +| `property_left_` | int | 128 | Left of the plotter window [px] | +| `property_top_` | int | 128 | Top of the plotter window [px] | +| `property_width_` | int | 256 | Left of the plotter window [px] | +| `property_height_` | int | 256 | Width of the plotter window [px] | + +#### VelocityHistory + +| Name | Type | Default Value | Description | +| ------------------------------- | ------ | ------------- | -------------------------- | +| `property_velocity_timeout_` | float | 10.0 | Timeout of velocity [s] | +| `property_velocity_alpha_` | float | 1.0 | Alpha of velocity | +| `property_velocity_scale_` | float | 0.3 | Scale of velocity | +| `property_velocity_color_view_` | bool | false | Use Constant Color or not | +| `property_velocity_color_` | QColor | Qt::black | Color of velocity history | +| `property_vel_max_` | float | 3.0 | Color Border Vel Max [m/s] | + +## Assumptions / Known limits + +TBD. + +## Usage + +1. Start rviz and select Add under the Displays panel. + ![select_add](./images/select_add.png) +2. Select any one of the autoware_vehicle_rviz_plugin and press OK. + ![select_vehicle_plugin](./images/select_vehicle_plugin.png) +3. Enter the name of the topic where you want to view the status. + ![select_topic_name](./images/select_topic_name.png) diff --git a/common/autoware_vehicle_rviz_plugin/icons/classes/ConsoleMeter.png b/common/autoware_vehicle_rviz_plugin/icons/classes/ConsoleMeter.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_vehicle_rviz_plugin/icons/classes/SteeringAngle.png b/common/autoware_vehicle_rviz_plugin/icons/classes/SteeringAngle.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_vehicle_rviz_plugin/icons/classes/TurnSignal.png b/common/autoware_vehicle_rviz_plugin/icons/classes/TurnSignal.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_vehicle_rviz_plugin/icons/classes/VelocityHistory.png b/common/autoware_vehicle_rviz_plugin/icons/classes/VelocityHistory.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 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 QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/autoware_vehicle_rviz_plugin/images/handle.png b/common/autoware_vehicle_rviz_plugin/images/handle.png new file mode 100644 index 0000000000000000000000000000000000000000..8783b8ef6707413a3221026b4770ea34c7116264 GIT binary patch literal 11237 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⪚SGid{OvqCFhft&_ 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 LUBRoOum>p247}!_7K05d?ony(zHHa=v%7c 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 + + autoware_vehicle_rviz_plugin + 0.1.0 + The autoware_vehicle_rviz_plugin package + Yukihiro Saito + Apache License 2.0 + ament_cmake_auto + + autoware_auto_vehicle_msgs + autoware_utils + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rviz_common + rviz_default_plugins + rviz_ogre_vendor + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + diff --git a/common/autoware_vehicle_rviz_plugin/plugins/plugin_description.xml b/common/autoware_vehicle_rviz_plugin/plugins/plugin_description.xml new file mode 100644 index 0000000000000..1f809c748035b --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/plugins/plugin_description.xml @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/console_meter.cpp b/common/autoware_vehicle_rviz_plugin/src/tools/console_meter.cpp new file mode 100644 index 0000000000000..632a74170ee54 --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/console_meter.cpp @@ -0,0 +1,216 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "console_meter.hpp" + +#include +#include + +#include + +namespace rviz_plugins +{ +ConsoleMeterDisplay::ConsoleMeterDisplay() +{ + property_text_color_ = new rviz_common::properties::ColorProperty( + "Text Color", QColor(25, 255, 240), "text color", this, SLOT(updateVisualization()), this); + property_left_ = new rviz_common::properties::IntProperty( + "Left", 128, "Left of the plotter window", this, SLOT(updateVisualization()), this); + property_left_->setMin(0); + property_top_ = new rviz_common::properties::IntProperty( + "Top", 128, "Top of the plotter window", this, SLOT(updateVisualization())); + property_top_->setMin(0); + + property_length_ = new rviz_common::properties::IntProperty( + "Length", 256, "Length of the plotter window", this, SLOT(updateVisualization()), this); + property_length_->setMin(10); + property_value_height_offset_ = new rviz_common::properties::IntProperty( + "Value height offset", 0, "Height offset of the plotter window", this, + SLOT(updateVisualization())); + property_value_scale_ = new rviz_common::properties::FloatProperty( + "Value Scale", 1.0 / 6.667, "Value scale", this, SLOT(updateVisualization()), this); + property_value_scale_->setMin(0.01); +} + +ConsoleMeterDisplay::~ConsoleMeterDisplay() +{ + if (initialized()) { + overlay_->hide(); + } +} + +void ConsoleMeterDisplay::onInitialize() +{ + RTDClass::onInitialize(); + static int count = 0; + rviz_common::UniformStringStream ss; + ss << "ConsoleMeterDisplayObject" << count++; + overlay_.reset(new jsk_rviz_plugins::OverlayObject(ss.str())); + + overlay_->show(); + + overlay_->updateTextureSize(property_length_->getInt(), property_length_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); +} + +void ConsoleMeterDisplay::onEnable() +{ + subscribe(); + overlay_->show(); +} + +void ConsoleMeterDisplay::onDisable() +{ + unsubscribe(); + reset(); + overlay_->hide(); +} + +void ConsoleMeterDisplay::update(float wall_dt, float ros_dt) +{ + (void)wall_dt; + (void)ros_dt; + + double linear_x = 0; + { + std::lock_guard message_lock(mutex_); + if (!last_msg_ptr_) { + return; + } + linear_x = last_msg_ptr_->longitudinal_velocity; + } + + QColor background_color; + background_color.setAlpha(0); + jsk_rviz_plugins::ScopedPixelBuffer buffer = overlay_->getBuffer(); + QImage hud = buffer.getQImage(*overlay_); + hud.fill(background_color); + + QPainter painter(&hud); + painter.setRenderHint(QPainter::Antialiasing, true); + + const int w = overlay_->getTextureWidth() - line_width_; + const int h = overlay_->getTextureHeight() - line_width_; + + // meter + QColor white_color(Qt::white); + white_color.setAlpha(255); + const float velocity_ratio = std::min( + std::max(std::fabs(linear_x) - meter_min_velocity_, 0.0) / + (meter_max_velocity_ - meter_min_velocity_), + 1.0); + const float theta = + (velocity_ratio * (meter_max_angle_ - meter_min_angle_)) + meter_min_angle_ + M_PI_2; + + painter.setPen(QPen(white_color, hand_width_, Qt::SolidLine)); + painter.drawLine( + w * 0.5, h * 0.5, + (w * 0.5) + + (static_cast(w) * 0.5 - (static_cast(hand_width_) * 0.5)) * std::cos(theta), + (h * 0.5) + + (static_cast(h) * 0.5 - (static_cast(hand_width_) * 0.5)) * std::sin(theta)); + + painter.setPen(QPen(white_color, line_width_, Qt::SolidLine)); + painter.drawLine(min_range_line_.x0, min_range_line_.y0, min_range_line_.x1, min_range_line_.y1); + painter.drawLine(max_range_line_.x0, max_range_line_.y0, max_range_line_.x1, max_range_line_.y1); + painter.drawArc( + outer_arc_.x0, outer_arc_.y0, outer_arc_.x1, outer_arc_.y1, outer_arc_.start_angle * 16, + outer_arc_.end_angle * 16); + painter.drawArc( + inner_arc_.x0, inner_arc_.y0, inner_arc_.x1, inner_arc_.y1, inner_arc_.start_angle * 16, + inner_arc_.end_angle * 16); + + // text + QColor text_color(property_text_color_->getColor()); + text_color.setAlpha(255); + painter.setPen(QPen(text_color, static_cast(2), Qt::SolidLine)); + QFont font = painter.font(); + font.setPixelSize( + std::max(static_cast(static_cast(w) * property_value_scale_->getFloat()), 1)); + font.setBold(true); + painter.setFont(font); + std::ostringstream velocity_ss; + velocity_ss << std::fixed << std::setprecision(2) << linear_x * 3.6 << "km/h"; + painter.drawText( + 0, std::min(property_value_height_offset_->getInt(), h - 1), w, + std::max(h - property_value_height_offset_->getInt(), 1), Qt::AlignCenter | Qt::AlignVCenter, + velocity_ss.str().c_str()); + painter.end(); + updateVisualization(); +} + +void ConsoleMeterDisplay::processMessage( + const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr msg_ptr) +{ + if (!isEnabled()) { + return; + } + + { + std::lock_guard message_lock(mutex_); + last_msg_ptr_ = msg_ptr; + } + + queueRender(); +} + +void ConsoleMeterDisplay::updateVisualization() +{ + overlay_->updateTextureSize(property_length_->getInt(), property_length_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); + const float min_range_theta = meter_max_angle_ + M_PI_2; + const float max_range_theta = meter_min_angle_ + M_PI_2; + const int w = overlay_->getTextureWidth() - line_width_; + const int h = overlay_->getTextureHeight() - line_width_; + + min_range_line_.x0 = + (w / 2.0) + line_width_ / 2.0 + (static_cast(w) / 8.0) * std::cos(min_range_theta); + min_range_line_.y0 = + (h / 2.0) + line_width_ / 2.0 + (static_cast(h) / 8.0) * std::sin(min_range_theta); + min_range_line_.x1 = + (w / 2.0) + line_width_ / 2.0 + + (static_cast(w) / 2.0 - (line_width_ / 2.0)) * std::cos(min_range_theta); + min_range_line_.y1 = + (h / 2.0) + line_width_ / 2.0 + + (static_cast(h) / 2.0 - (line_width_ / 2.0)) * std::sin(min_range_theta); + max_range_line_.x0 = + (w / 2.0) + line_width_ / 2.0 + (static_cast(w) / 8.0) * std::cos(max_range_theta); + max_range_line_.y0 = + (h / 2.0) + line_width_ / 2.0 + (static_cast(h) / 8.0) * std::sin(max_range_theta); + max_range_line_.x1 = + (w * 0.5) + line_width_ * 0.5 + + (static_cast(w) / 2.0 - (line_width_ * 0.5)) * std::cos(max_range_theta); + max_range_line_.y1 = + (h * 0.5) + line_width_ * 0.5 + + (static_cast(h) / 2.0 - (line_width_ * 0.5)) * std::sin(max_range_theta); + inner_arc_.x0 = line_width_ / 2.0; + inner_arc_.y0 = line_width_ / 2.0; + inner_arc_.x1 = w; + inner_arc_.y1 = h; + inner_arc_.start_angle = autoware_utils::rad2deg(min_range_theta - M_PI); + inner_arc_.end_angle = autoware_utils::rad2deg(max_range_theta - min_range_theta); + outer_arc_.x0 = w * 3 / 8; + outer_arc_.y0 = h * 3 / 8; + outer_arc_.x1 = w / 4; + outer_arc_.y1 = h / 4; + outer_arc_.start_angle = autoware_utils::rad2deg(min_range_theta - M_PI); + outer_arc_.end_angle = autoware_utils::rad2deg(max_range_theta - min_range_theta); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::ConsoleMeterDisplay, rviz_common::Display) diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/console_meter.hpp b/common/autoware_vehicle_rviz_plugin/src/tools/console_meter.hpp new file mode 100644 index 0000000000000..7847a5725274f --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/console_meter.hpp @@ -0,0 +1,93 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TOOLS__CONSOLE_METER_HPP_ +#define TOOLS__CONSOLE_METER_HPP_ + +#include +#include + +#ifndef Q_MOC_RUN +#include "jsk_overlay_utils.hpp" + +#include +#include +#include +#include +#include + +#include +#endif + +namespace rviz_plugins +{ +class ConsoleMeterDisplay +: public rviz_common::RosTopicDisplay +{ + Q_OBJECT + +public: + ConsoleMeterDisplay(); + ~ConsoleMeterDisplay() override; + + void onInitialize() override; + void onDisable() override; + void onEnable() override; + +private Q_SLOTS: + void updateVisualization(); + +protected: + void update(float wall_dt, float ros_dt) override; + void processMessage( + const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr msg_ptr) override; + jsk_rviz_plugins::OverlayObject::Ptr overlay_; + rviz_common::properties::ColorProperty * property_text_color_; + rviz_common::properties::IntProperty * property_left_; + rviz_common::properties::IntProperty * property_top_; + rviz_common::properties::IntProperty * property_length_; + rviz_common::properties::IntProperty * property_value_height_offset_; + rviz_common::properties::FloatProperty * property_value_scale_; + // QImage hud_; + +private: + static constexpr float meter_min_velocity_ = autoware_utils::kmph2mps(0.f); + static constexpr float meter_max_velocity_ = autoware_utils::kmph2mps(60.f); + static constexpr float meter_min_angle_ = autoware_utils::deg2rad(40.f); + static constexpr float meter_max_angle_ = autoware_utils::deg2rad(320.f); + static constexpr int line_width_ = 2; + static constexpr int hand_width_ = 4; + struct Line // for drawLine + { + int x0, y0; + int x1, y1; + }; + Line min_range_line_; + Line max_range_line_; + struct Arc // for drawArc + { + int x0, y0; + int x1, y1; + float start_angle, end_angle; + }; + Arc inner_arc_; + Arc outer_arc_; + + std::mutex mutex_; + autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr last_msg_ptr_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__CONSOLE_METER_HPP_ diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.cpp b/common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.cpp new file mode 100644 index 0000000000000..54e8583dc457c --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.cpp @@ -0,0 +1,190 @@ +// Copyright (c) 2014, JSK Lab +// All rights reserved. +// +// Software License Agreement (BSD License 2.0) +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of {copyright_holder} nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE.S SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#include "jsk_overlay_utils.hpp" + +#include + +namespace jsk_rviz_plugins +{ +ScopedPixelBuffer::ScopedPixelBuffer(Ogre::HardwarePixelBufferSharedPtr pixel_buffer) +: pixel_buffer_(pixel_buffer) +{ + pixel_buffer_->lock(Ogre::HardwareBuffer::HBL_NORMAL); +} + +ScopedPixelBuffer::~ScopedPixelBuffer() { pixel_buffer_->unlock(); } + +Ogre::HardwarePixelBufferSharedPtr ScopedPixelBuffer::getPixelBuffer() { return pixel_buffer_; } + +QImage ScopedPixelBuffer::getQImage(unsigned int width, unsigned int height) +{ + const Ogre::PixelBox & pixelBox = pixel_buffer_->getCurrentLock(); + Ogre::uint8 * pDest = static_cast(pixelBox.data); + memset(pDest, 0, width * height); + return QImage(pDest, width, height, QImage::Format_ARGB32); +} + +QImage ScopedPixelBuffer::getQImage(unsigned int width, unsigned int height, QColor & bg_color) +{ + QImage Hud = getQImage(width, height); + for (unsigned int i = 0; i < width; i++) { + for (unsigned int j = 0; j < height; j++) { + Hud.setPixel(i, j, bg_color.rgba()); + } + } + return Hud; +} + +QImage ScopedPixelBuffer::getQImage(OverlayObject & overlay) +{ + return getQImage(overlay.getTextureWidth(), overlay.getTextureHeight()); +} + +QImage ScopedPixelBuffer::getQImage(OverlayObject & overlay, QColor & bg_color) +{ + return getQImage(overlay.getTextureWidth(), overlay.getTextureHeight(), bg_color); +} + +OverlayObject::OverlayObject(const std::string & name) : name_(name) +{ + std::string material_name = name_ + "Material"; + Ogre::OverlayManager * mOverlayMgr = Ogre::OverlayManager::getSingletonPtr(); + overlay_ = mOverlayMgr->create(name_); + panel_ = static_cast( + mOverlayMgr->createOverlayElement("Panel", name_ + "Panel")); + panel_->setMetricsMode(Ogre::GMM_PIXELS); + + panel_material_ = Ogre::MaterialManager::getSingleton().create( + material_name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + panel_->setMaterialName(panel_material_->getName()); + overlay_->add2D(panel_); +} + +OverlayObject::~OverlayObject() +{ + hide(); + panel_material_->unload(); + Ogre::MaterialManager::getSingleton().remove(panel_material_->getName()); + // Ogre::OverlayManager* mOverlayMgr = Ogre::OverlayManager::getSingletonPtr(); + // mOverlayMgr->destroyOverlayElement(panel_); + // delete panel_; + // delete overlay_; +} + +std::string OverlayObject::getName() { return name_; } + +void OverlayObject::hide() +{ + if (overlay_->isVisible()) { + overlay_->hide(); + } +} + +void OverlayObject::show() +{ + if (!overlay_->isVisible()) { + overlay_->show(); + } +} + +bool OverlayObject::isTextureReady() { return static_cast(texture_); } + +void OverlayObject::updateTextureSize(unsigned int width, unsigned int height) +{ + const std::string texture_name = name_ + "Texture"; + if (width == 0) { + RCLCPP_WARN(rclcpp::get_logger("OverlayObject"), "width=0 is specified as texture size"); + width = 1; + } + if (height == 0) { + RCLCPP_WARN(rclcpp::get_logger("OverlayObject"), "height=0 is specified as texture size"); + height = 1; + } + if (!isTextureReady() || ((width != texture_->getWidth()) || (height != texture_->getHeight()))) { + if (isTextureReady()) { + Ogre::TextureManager::getSingleton().remove(texture_name); + panel_material_->getTechnique(0)->getPass(0)->removeAllTextureUnitStates(); + } + texture_ = Ogre::TextureManager::getSingleton().createManual( + texture_name, // name + Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + Ogre::TEX_TYPE_2D, // type + width, height, // width & height of the render window + 0, // number of mipmaps + Ogre::PF_A8R8G8B8, // pixel format chosen to match a format Qt can use + Ogre::TU_DEFAULT // usage + ); + panel_material_->getTechnique(0)->getPass(0)->createTextureUnitState(texture_name); + + panel_material_->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + } +} + +ScopedPixelBuffer OverlayObject::getBuffer() +{ + if (isTextureReady()) { + return ScopedPixelBuffer(texture_->getBuffer()); + } else { + return ScopedPixelBuffer(Ogre::HardwarePixelBufferSharedPtr()); + } +} + +void OverlayObject::setPosition(double left, double top) { panel_->setPosition(left, top); } + +void OverlayObject::setDimensions(double width, double height) +{ + panel_->setDimensions(width, height); +} + +bool OverlayObject::isVisible() { return overlay_->isVisible(); } + +unsigned int OverlayObject::getTextureWidth() +{ + if (isTextureReady()) { + return texture_->getWidth(); + } else { + return 0; + } +} + +unsigned int OverlayObject::getTextureHeight() +{ + if (isTextureReady()) { + return texture_->getHeight(); + } else { + return 0; + } +} + +} // namespace jsk_rviz_plugins diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.hpp b/common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.hpp new file mode 100644 index 0000000000000..374e126b0f24d --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/jsk_overlay_utils.hpp @@ -0,0 +1,124 @@ +// Copyright (c) 2014, JSK Lab +// All rights reserved. +// +// Software License Agreement (BSD License 2.0) +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of {copyright_holder} nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE.S SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#ifndef TOOLS__JSK_OVERLAY_UTILS_HPP_ +#define TOOLS__JSK_OVERLAY_UTILS_HPP_ + +#include +#include +#include +#include +#include + +#include +#include +// see OGRE/OgrePrerequisites.h +// #define OGRE_VERSION +// ((OGRE_VERSION_MAJOR << 16) | (OGRE_VERSION_MINOR << 8) | OGRE_VERSION_PATCH) +#if OGRE_VERSION < ((1 << 16) | (9 << 8) | 0) +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#endif + +#include +#include +#include + +namespace jsk_rviz_plugins +{ +class OverlayObject; + +class ScopedPixelBuffer +{ +public: + explicit ScopedPixelBuffer(Ogre::HardwarePixelBufferSharedPtr pixel_buffer); + virtual ~ScopedPixelBuffer(); + virtual Ogre::HardwarePixelBufferSharedPtr getPixelBuffer(); + virtual QImage getQImage(unsigned int width, unsigned int height); + virtual QImage getQImage(OverlayObject & overlay); + virtual QImage getQImage(unsigned int width, unsigned int height, QColor & bg_color); + virtual QImage getQImage(OverlayObject & overlay, QColor & bg_color); + +protected: + Ogre::HardwarePixelBufferSharedPtr pixel_buffer_; + +private: +}; + +// this is a class for put overlay object on rviz 3D panel. +// This class suppose to be instantiated in onInitialize method +// of rviz::Display class. +class OverlayObject +{ +public: + typedef std::shared_ptr Ptr; + + explicit OverlayObject(const std::string & name); + virtual ~OverlayObject(); + + virtual std::string getName(); + virtual void hide(); + virtual void show(); + virtual bool isTextureReady(); + virtual void updateTextureSize(unsigned int width, unsigned int height); + virtual ScopedPixelBuffer getBuffer(); + virtual void setPosition(double left, double top); + virtual void setDimensions(double width, double height); + virtual bool isVisible(); + virtual unsigned int getTextureWidth(); + virtual unsigned int getTextureHeight(); + +protected: + const std::string name_; + Ogre::Overlay * overlay_; + Ogre::PanelOverlayElement * panel_; + Ogre::MaterialPtr panel_material_; + Ogre::TexturePtr texture_; + +private: +}; + +// Ogre::Overlay* createOverlay(std::string name); +// Ogre::PanelOverlayElement* createOverlayPanel(Ogre::Overlay* overlay); +// Ogre::MaterialPtr createOverlayMaterial(Ogre::Overlay* overlay); +} // namespace jsk_rviz_plugins + +#endif // TOOLS__JSK_OVERLAY_UTILS_HPP_ diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.cpp b/common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.cpp new file mode 100644 index 0000000000000..f09c2c2f14f79 --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.cpp @@ -0,0 +1,181 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "steering_angle.hpp" + +#include +#include +#include + +#include +#include +#include +#include + +namespace rviz_plugins +{ +SteeringAngleDisplay::SteeringAngleDisplay() +: handle_image_(std::string( + ament_index_cpp::get_package_share_directory("autoware_vehicle_rviz_plugin") + + "/images/handle.png") + .c_str()) +{ + property_text_color_ = new rviz_common::properties::ColorProperty( + "Text Color", QColor(25, 255, 240), "text color", this, SLOT(updateVisualization()), this); + property_left_ = new rviz_common::properties::IntProperty( + "Left", 128, "Left of the plotter window", this, SLOT(updateVisualization()), this); + property_left_->setMin(0); + property_top_ = new rviz_common::properties::IntProperty( + "Top", 128, "Top of the plotter window", this, SLOT(updateVisualization())); + property_top_->setMin(0); + + property_length_ = new rviz_common::properties::IntProperty( + "Length", 256, "Length of the plotter window", this, SLOT(updateVisualization()), this); + property_length_->setMin(10); + property_value_height_offset_ = new rviz_common::properties::IntProperty( + "Value height offset", 0, "Height offset of the plotter window", this, + SLOT(updateVisualization())); + property_value_scale_ = new rviz_common::properties::FloatProperty( + "Value Scale", 1.0 / 6.667, "Value scale", this, SLOT(updateVisualization()), this); + property_value_scale_->setMin(0.01); + property_handle_angle_scale_ = new rviz_common::properties::FloatProperty( + "Scale", 3.0, "Scale is steering angle to handle angle ", this, SLOT(updateVisualization()), + this); + property_handle_angle_scale_->setMin(0.1); +} + +SteeringAngleDisplay::~SteeringAngleDisplay() +{ + if (initialized()) { + overlay_->hide(); + } +} + +void SteeringAngleDisplay::onInitialize() +{ + RTDClass::onInitialize(); + static int count = 0; + rviz_common::UniformStringStream ss; + ss << "SteeringAngleDisplayObject" << count++; + overlay_.reset(new jsk_rviz_plugins::OverlayObject(ss.str())); + + overlay_->show(); + + updateVisualization(); +} + +void SteeringAngleDisplay::onEnable() +{ + subscribe(); + overlay_->show(); +} + +void SteeringAngleDisplay::onDisable() +{ + unsubscribe(); + reset(); + overlay_->hide(); +} + +void SteeringAngleDisplay::update(float wall_dt, float ros_dt) +{ + (void)wall_dt; + (void)ros_dt; + + double steering = 0; + { + std::lock_guard message_lock(mutex_); + if (!last_msg_ptr_) { + return; + } + steering = last_msg_ptr_->steering_tire_angle; + } + + QColor background_color; + background_color.setAlpha(0); + jsk_rviz_plugins::ScopedPixelBuffer buffer = overlay_->getBuffer(); + if (!buffer.getPixelBuffer()) { + return; + } + + QImage hud = buffer.getQImage(*overlay_); + hud.fill(background_color); + + QPainter painter(&hud); + painter.setRenderHint(QPainter::Antialiasing, true); + QColor text_color(property_text_color_->getColor()); + text_color.setAlpha(255); + painter.setPen(QPen(text_color, static_cast(2), Qt::SolidLine)); + + const int w = overlay_->getTextureWidth(); + const int h = overlay_->getTextureHeight(); + + QMatrix rotation_matrix; + rotation_matrix.rotate( + std::round(property_handle_angle_scale_->getFloat() * (steering / M_PI) * -180.0)); + + // else + // rotation_matrix.rotate + // ((property_handle_angle_scale_->getFloat() * (msg_ptr->data / M_PI) * -180.0)); + int handle_image_width = handle_image_.width(), handle_image_height = handle_image_.height(); + QPixmap rotate_handle_image; + rotate_handle_image = handle_image_.transformed(rotation_matrix); + rotate_handle_image = rotate_handle_image.copy( + (rotate_handle_image.width() - handle_image_width) / 2, + (rotate_handle_image.height() - handle_image_height) / 2, handle_image_width, + handle_image_height); + painter.drawPixmap( + 0, 0, property_length_->getInt(), property_length_->getInt(), rotate_handle_image); + + QFont font = painter.font(); + font.setPixelSize( + std::max(static_cast((static_cast(w)) * property_value_scale_->getFloat()), 1)); + font.setBold(true); + painter.setFont(font); + std::ostringstream steering_angle_ss; + steering_angle_ss << std::fixed << std::setprecision(1) << steering * 180.0 / M_PI << "deg"; + painter.drawText( + 0, std::min(property_value_height_offset_->getInt(), h - 1), w, + std::max(h - property_value_height_offset_->getInt(), 1), Qt::AlignCenter | Qt::AlignVCenter, + steering_angle_ss.str().c_str()); + + painter.end(); +} + +void SteeringAngleDisplay::processMessage( + const autoware_auto_vehicle_msgs::msg::SteeringReport::ConstSharedPtr msg_ptr) +{ + if (!isEnabled()) { + return; + } + + { + std::lock_guard message_lock(mutex_); + last_msg_ptr_ = msg_ptr; + } + + queueRender(); +} + +void SteeringAngleDisplay::updateVisualization() +{ + overlay_->updateTextureSize(property_length_->getInt(), property_length_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::SteeringAngleDisplay, rviz_common::Display) diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.hpp b/common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.hpp new file mode 100644 index 0000000000000..d56b5a8d742b9 --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/steering_angle.hpp @@ -0,0 +1,73 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TOOLS__STEERING_ANGLE_HPP_ +#define TOOLS__STEERING_ANGLE_HPP_ + +#include +#include + +#ifndef Q_MOC_RUN +#include "jsk_overlay_utils.hpp" + +#include +#include +#include +#include + +#include +#endif + +namespace rviz_plugins +{ +class SteeringAngleDisplay +: public rviz_common::RosTopicDisplay +{ + Q_OBJECT + +public: + SteeringAngleDisplay(); + ~SteeringAngleDisplay() override; + + void onInitialize() override; + void onDisable() override; + void onEnable() override; + +private Q_SLOTS: + void updateVisualization(); + +protected: + void update(float wall_dt, float ros_dt) override; + void processMessage( + const autoware_auto_vehicle_msgs::msg::SteeringReport::ConstSharedPtr msg_ptr) override; + + jsk_rviz_plugins::OverlayObject::Ptr overlay_; + rviz_common::properties::ColorProperty * property_text_color_; + rviz_common::properties::IntProperty * property_left_; + rviz_common::properties::IntProperty * property_top_; + rviz_common::properties::IntProperty * property_length_; + rviz_common::properties::FloatProperty * property_handle_angle_scale_; + rviz_common::properties::IntProperty * property_value_height_offset_; + rviz_common::properties::FloatProperty * property_value_scale_; + QPixmap handle_image_; + // QImage hud_; + +private: + std::mutex mutex_; + autoware_auto_vehicle_msgs::msg::SteeringReport::ConstSharedPtr last_msg_ptr_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__STEERING_ANGLE_HPP_ diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.cpp b/common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.cpp new file mode 100644 index 0000000000000..19e3c8c9e0978 --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.cpp @@ -0,0 +1,185 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "turn_signal.hpp" + +#include +#include +#include + +namespace rviz_plugins +{ +TurnSignalDisplay::TurnSignalDisplay() +{ + property_left_ = new rviz_common::properties::IntProperty( + "Left", 128, "Left of the plotter window", this, SLOT(updateVisualization()), this); + property_left_->setMin(0); + property_top_ = new rviz_common::properties::IntProperty( + "Top", 128, "Top of the plotter window", this, SLOT(updateVisualization())); + property_top_->setMin(0); + + property_width_ = new rviz_common::properties::IntProperty( + "Width", 256, "Width of the plotter window", this, SLOT(updateVisualization()), this); + property_width_->setMin(10); + property_height_ = new rviz_common::properties::IntProperty( + "Height", 256, "Height of the plotter window", this, SLOT(updateVisualization()), this); + property_height_->setMin(10); +} + +TurnSignalDisplay::~TurnSignalDisplay() +{ + if (initialized()) { + overlay_->hide(); + } +} + +void TurnSignalDisplay::onInitialize() +{ + RTDClass::onInitialize(); + static int count = 0; + rviz_common::UniformStringStream ss; + ss << "TurnSignalDisplayObject" << count++; + overlay_.reset(new jsk_rviz_plugins::OverlayObject(ss.str())); + + overlay_->show(); + + overlay_->updateTextureSize(property_width_->getInt(), property_height_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); +} + +void TurnSignalDisplay::onEnable() +{ + subscribe(); + overlay_->show(); +} + +void TurnSignalDisplay::onDisable() +{ + unsubscribe(); + reset(); + overlay_->hide(); +} + +void TurnSignalDisplay::processMessage( + const autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport::ConstSharedPtr msg_ptr) +{ + if (!isEnabled()) { + return; + } + + { + std::lock_guard message_lock(mutex_); + last_msg_ptr_ = msg_ptr; + } + + queueRender(); +} + +void TurnSignalDisplay::update(float wall_dt, float ros_dt) +{ + (void)wall_dt; + (void)ros_dt; + + unsigned int signal_type; + { + std::lock_guard message_lock(mutex_); + if (!last_msg_ptr_) { + return; + } + signal_type = last_msg_ptr_->report; + } + + QColor background_color; + background_color.setAlpha(0); + jsk_rviz_plugins::ScopedPixelBuffer buffer = overlay_->getBuffer(); + QImage hud = buffer.getQImage(*overlay_); + hud.fill(background_color); + + QPainter painter(&hud); + painter.setRenderHint(QPainter::Antialiasing, true); + + // turn signal color + QColor white_color(Qt::white); + white_color.setAlpha(255); + if (signal_type == autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport::ENABLE_RIGHT) { + painter.setPen(QPen(white_color, static_cast(2), Qt::DotLine)); + painter.drawPolygon(left_arrow_polygon_, 7); + painter.setBrush(QBrush(Qt::white, Qt::SolidPattern)); + painter.setPen(QPen(white_color, static_cast(2), Qt::SolidLine)); + painter.drawPolygon(right_arrow_polygon_, 7); + } else if (signal_type == autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport::ENABLE_LEFT) { + painter.setPen(QPen(white_color, static_cast(2), Qt::DotLine)); + painter.drawPolygon(right_arrow_polygon_, 7); + painter.setBrush(QBrush(Qt::white, Qt::SolidPattern)); + painter.setPen(QPen(white_color, static_cast(2), Qt::SolidLine)); + painter.drawPolygon(left_arrow_polygon_, 7); + } else if (signal_type == autoware_auto_vehicle_msgs::msg::HazardLightsReport::ENABLE) { + painter.setBrush(QBrush(Qt::white, Qt::SolidPattern)); + painter.setPen(QPen(white_color, static_cast(2), Qt::SolidLine)); + painter.drawPolygon(right_arrow_polygon_, 7); + painter.drawPolygon(left_arrow_polygon_, 7); + } else { + painter.setPen(QPen(white_color, static_cast(2), Qt::DotLine)); + painter.drawPolygon(right_arrow_polygon_, 7); + painter.drawPolygon(left_arrow_polygon_, 7); + } + painter.end(); + updateVisualization(); +} + +void TurnSignalDisplay::updateVisualization() +{ + overlay_->updateTextureSize(property_width_->getInt(), property_height_->getInt()); + overlay_->setPosition(property_left_->getInt(), property_top_->getInt()); + overlay_->setDimensions(overlay_->getTextureWidth(), overlay_->getTextureHeight()); + + const int w = overlay_->getTextureWidth(); + const int h = overlay_->getTextureHeight(); + + right_arrow_polygon_[0].setX(static_cast(w) * 5.0 / 5.0); + right_arrow_polygon_[0].setY(static_cast(h) * 1.0 / 2.0); + right_arrow_polygon_[1].setX(static_cast(w) * 4.0 / 5.0); + right_arrow_polygon_[1].setY(static_cast(h) * 1.0 / 5.0); + right_arrow_polygon_[2].setX(static_cast(w) * 4.0 / 5.0); + right_arrow_polygon_[2].setY(static_cast(h) * 2.0 / 5.0); + right_arrow_polygon_[3].setX(static_cast(w) * 3.0 / 5.0); + right_arrow_polygon_[3].setY(static_cast(h) * 2.0 / 5.0); + right_arrow_polygon_[4].setX(static_cast(w) * 3.0 / 5.0); + right_arrow_polygon_[4].setY(static_cast(h) * 3.0 / 5.0); + right_arrow_polygon_[5].setX(static_cast(w) * 4.0 / 5.0); + right_arrow_polygon_[5].setY(static_cast(h) * 3.0 / 5.0); + right_arrow_polygon_[6].setX(static_cast(w) * 4.0 / 5.0); + right_arrow_polygon_[6].setY(static_cast(h) * 4.0 / 5.0); + + left_arrow_polygon_[0].setX(static_cast(w) * 0.0 / 5.0); + left_arrow_polygon_[0].setY(static_cast(h) * 1.0 / 2.0); + left_arrow_polygon_[1].setX(static_cast(w) * 1.0 / 5.0); + left_arrow_polygon_[1].setY(static_cast(h) * 1.0 / 5.0); + left_arrow_polygon_[2].setX(static_cast(w) * 1.0 / 5.0); + left_arrow_polygon_[2].setY(static_cast(h) * 2.0 / 5.0); + left_arrow_polygon_[3].setX(static_cast(w) * 2.0 / 5.0); + left_arrow_polygon_[3].setY(static_cast(h) * 2.0 / 5.0); + left_arrow_polygon_[4].setX(static_cast(w) * 2.0 / 5.0); + left_arrow_polygon_[4].setY(static_cast(h) * 3.0 / 5.0); + left_arrow_polygon_[5].setX(static_cast(w) * 1.0 / 5.0); + left_arrow_polygon_[5].setY(static_cast(h) * 3.0 / 5.0); + left_arrow_polygon_[6].setX(static_cast(w) * 1.0 / 5.0); + left_arrow_polygon_[6].setY(static_cast(h) * 4.0 / 5.0); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::TurnSignalDisplay, rviz_common::Display) diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.hpp b/common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.hpp new file mode 100644 index 0000000000000..06a1d2e5f0d54 --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/turn_signal.hpp @@ -0,0 +1,70 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TOOLS__TURN_SIGNAL_HPP_ +#define TOOLS__TURN_SIGNAL_HPP_ + +#include +#include + +#ifndef Q_MOC_RUN +#include "jsk_overlay_utils.hpp" + +#include +#include + +#include +#include +#endif + +namespace rviz_plugins +{ +class TurnSignalDisplay +: public rviz_common::RosTopicDisplay +{ + Q_OBJECT + +public: + TurnSignalDisplay(); + ~TurnSignalDisplay() override; + + void onInitialize() override; + void onDisable() override; + void onEnable() override; + +private Q_SLOTS: + void updateVisualization(); + +protected: + void update(float wall_dt, float ros_dt) override; + void processMessage( + const autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport::ConstSharedPtr msg_ptr) override; + jsk_rviz_plugins::OverlayObject::Ptr overlay_; + rviz_common::properties::IntProperty * property_left_; + rviz_common::properties::IntProperty * property_top_; + rviz_common::properties::IntProperty * property_width_; + rviz_common::properties::IntProperty * property_height_; + // QImage hud_; + +private: + QPointF right_arrow_polygon_[7]; + QPointF left_arrow_polygon_[7]; + + std::mutex mutex_; + autoware_auto_vehicle_msgs::msg::TurnIndicatorsReport::ConstSharedPtr last_msg_ptr_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__TURN_SIGNAL_HPP_ diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.cpp b/common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.cpp new file mode 100644 index 0000000000000..b5db539f437cb --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.cpp @@ -0,0 +1,211 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "velocity_history.hpp" + +#include + +#include +#include +#define EIGEN_MPL2_ONLY +#include + +namespace rviz_plugins +{ +std::unique_ptr VelocityHistoryDisplay::gradation( + const QColor & color_min, const QColor & color_max, const double ratio) +{ + std::unique_ptr color_ptr(new Ogre::ColourValue); + color_ptr->g = color_max.greenF() * ratio + color_min.greenF() * (1.0 - ratio); + color_ptr->r = color_max.redF() * ratio + color_min.redF() * (1.0 - ratio); + color_ptr->b = color_max.blueF() * ratio + color_min.blueF() * (1.0 - ratio); + + return color_ptr; +} + +std::unique_ptr VelocityHistoryDisplay::setColorDependsOnVelocity( + const double vel_max, const double cmd_vel) +{ + const double cmd_vel_abs = std::fabs(cmd_vel); + const double vel_min = 0.0; + + std::unique_ptr color_ptr(new Ogre::ColourValue()); + if (vel_min < cmd_vel_abs && cmd_vel_abs <= (vel_max / 2.0)) { + double ratio = (cmd_vel_abs - vel_min) / (vel_max / 2.0 - vel_min); + color_ptr = gradation(Qt::red, Qt::yellow, ratio); + } else if ((vel_max / 2.0) < cmd_vel_abs && cmd_vel_abs <= vel_max) { + double ratio = (cmd_vel_abs - vel_max / 2.0) / (vel_max - vel_max / 2.0); + color_ptr = gradation(Qt::yellow, Qt::green, ratio); + } else if (vel_max < cmd_vel_abs) { + *color_ptr = Ogre::ColourValue::Green; + } else { + *color_ptr = Ogre::ColourValue::Red; + } + + return color_ptr; +} + +VelocityHistoryDisplay::VelocityHistoryDisplay() +{ + property_velocity_timeout_ = new rviz_common::properties::FloatProperty( + "Timeout", 10.0, "", this, SLOT(updateVisualization()), this); + property_velocity_timeout_->setMin(0.0); + property_velocity_timeout_->setMax(100000.0); + property_velocity_alpha_ = new rviz_common::properties::FloatProperty( + "Alpha", 1.0, "", this, SLOT(updateVisualization()), this); + property_velocity_alpha_->setMin(0.0); + property_velocity_alpha_->setMax(1.0); + property_velocity_scale_ = new rviz_common::properties::FloatProperty( + "Scale", 0.3, "", this, SLOT(updateVisualization()), this); + property_velocity_scale_->setMin(0.1); + property_velocity_scale_->setMax(10.0); + property_velocity_color_view_ = new rviz_common::properties::BoolProperty( + "Constant Color", false, "", this, SLOT(updateVisualization()), this); + property_velocity_color_ = new rviz_common::properties::ColorProperty( + "Color", Qt::black, "", property_velocity_color_view_, SLOT(updateVisualization()), this); + property_vel_max_ = new rviz_common::properties::FloatProperty( + "Color Border Vel Max", 3.0, "[m/s]", this, SLOT(updateVisualization()), this); + property_vel_max_->setMin(0.0); +} + +VelocityHistoryDisplay::~VelocityHistoryDisplay() +{ + if (initialized()) { + scene_manager_->destroyManualObject(velocity_manual_object_); + } +} + +void VelocityHistoryDisplay::onInitialize() +{ + RTDClass::onInitialize(); + + velocity_manual_object_ = scene_manager_->createManualObject(); + velocity_manual_object_->setDynamic(true); + scene_node_->attachObject(velocity_manual_object_); +} + +void VelocityHistoryDisplay::reset() +{ + RTDClass::reset(); + velocity_manual_object_->clear(); +} + +bool VelocityHistoryDisplay::validateFloats( + const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr & msg_ptr) +{ + if (!rviz_common::validateFloats(msg_ptr->longitudinal_velocity)) { + return false; + } + + return true; +} + +void VelocityHistoryDisplay::update(float wall_dt, float ros_dt) +{ + (void)wall_dt; + (void)ros_dt; + + updateVisualization(); +} + +void VelocityHistoryDisplay::processMessage( + const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr msg_ptr) +{ + if (!isEnabled()) { + return; + } + + if (!validateFloats(msg_ptr)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Topic", + "Message contained invalid floating point values (nans or infs)"); + return; + } + + Ogre::Vector3 position; + Ogre::Quaternion orientation; + std_msgs::msg::Header header; + header.stamp = msg_ptr->header.stamp; + header.frame_id = "base_link"; + if (!context_->getFrameManager()->getTransform(header, position, orientation)) { + RCLCPP_DEBUG( + rclcpp::get_logger("VelocityHistoryDisplay"), + "Error transforming from frame '%s' to frame '%s'", header.frame_id.c_str(), + qPrintable(fixed_frame_)); + } + + { + std::lock_guard message_lock(mutex_); + histories_.emplace_back(msg_ptr, position); + } + queueRender(); +} + +void VelocityHistoryDisplay::updateVisualization() +{ + std::lock_guard message_lock(mutex_); + if (histories_.empty()) { + return; + } + velocity_manual_object_->clear(); + + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + rclcpp::Time current_time = rviz_ros_node_.lock()->get_raw_node()->get_clock()->now(); + + while (!histories_.empty()) { + if ( + property_velocity_timeout_->getFloat() < + (current_time - std::get<0>(histories_.front())->header.stamp).seconds()) { + histories_.pop_front(); + } else { + break; + } + } + + // std::cout << __LINE__ << ":" <(histories_.front()) <estimateVertexCount(histories_.size()); + velocity_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_POINT_LIST); + + for (auto & history : histories_) { + Ogre::ColourValue color; + if (property_velocity_color_view_->getBool()) { + color = rviz_common::properties::qtToOgre(property_velocity_color_->getColor()); + } else { + /* color change depending on velocity */ + std::unique_ptr dynamic_color_ptr = setColorDependsOnVelocity( + property_vel_max_->getFloat(), std::get<0>(history)->longitudinal_velocity); + color = *dynamic_color_ptr; + } + color.a = 1.0 - (current_time - std::get<0>(history)->header.stamp).seconds() / + property_velocity_timeout_->getFloat(); + color.a = std::min(std::max(color.a, 0.0f), 1.0f); + // std::cout << __LINE__ << ":" <(histories_.front()) <getFloat(); + velocity_manual_object_->position( + std::get<1>(history).x, std::get<1>(history).y, + std::get<1>(history).z + + std::get<0>(history)->longitudinal_velocity * property_velocity_scale_->getFloat()); + velocity_manual_object_->colour(color); + } + velocity_manual_object_->end(); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::VelocityHistoryDisplay, rviz_common::Display) diff --git a/common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.hpp b/common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.hpp new file mode 100644 index 0000000000000..9b5819df98bef --- /dev/null +++ b/common/autoware_vehicle_rviz_plugin/src/tools/velocity_history.hpp @@ -0,0 +1,80 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TOOLS__VELOCITY_HISTORY_HPP_ +#define TOOLS__VELOCITY_HISTORY_HPP_ + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +namespace rviz_plugins +{ +class VelocityHistoryDisplay +: public rviz_common::RosTopicDisplay +{ + Q_OBJECT + +public: + VelocityHistoryDisplay(); + ~VelocityHistoryDisplay() override; + + void onInitialize() override; + void reset() override; + +private Q_SLOTS: + void updateVisualization(); + +protected: + void update(float wall_dt, float ros_dt) override; + void processMessage( + const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr msg_ptr) override; + std::unique_ptr setColorDependsOnVelocity( + const double vel_max, const double cmd_vel); + std::unique_ptr gradation( + const QColor & color_min, const QColor & color_max, const double ratio); + Ogre::ManualObject * velocity_manual_object_; + rviz_common::properties::FloatProperty * property_velocity_timeout_; + rviz_common::properties::FloatProperty * property_velocity_alpha_; + rviz_common::properties::FloatProperty * property_velocity_scale_; + rviz_common::properties::BoolProperty * property_velocity_color_view_; + rviz_common::properties::ColorProperty * property_velocity_color_; + rviz_common::properties::FloatProperty * property_vel_max_; + +private: + std::deque< + std::tuple> + histories_; + bool validateFloats( + const autoware_auto_vehicle_msgs::msg::VelocityReport::ConstSharedPtr & msg_ptr); + std::mutex mutex_; +}; + +} // namespace rviz_plugins + +#endif // TOOLS__VELOCITY_HISTORY_HPP_ diff --git a/common/polar_grid/CMakeLists.txt b/common/polar_grid/CMakeLists.txt new file mode 100644 index 0000000000000..8d9b69fe0e8c1 --- /dev/null +++ b/common/polar_grid/CMakeLists.txt @@ -0,0 +1,49 @@ +cmake_minimum_required(VERSION 3.5) +project(polar_grid) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) +set(QT_LIBRARIES Qt5::Widgets) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +add_definitions(-DQT_NO_KEYWORDS) + +ament_auto_add_library(polar_grid SHARED + src/polar_grid_display.cpp + src/polar_grid_display.hpp +) + +target_link_libraries(polar_grid + ${QT_LIBRARIES} +) + +install(TARGETS + ${PROJECT_NAME} + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +) + +pluginlib_export_plugin_description_file(rviz_common plugins/plugin_description.xml) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package( + INSTALL_TO_SHARE + icons + plugins +) diff --git a/common/polar_grid/Readme.md b/common/polar_grid/Readme.md new file mode 100644 index 0000000000000..da89bdb458208 --- /dev/null +++ b/common/polar_grid/Readme.md @@ -0,0 +1,17 @@ +# Polar Grid + +## Purpose + +This plugin displays polar grid around ego vehicle in Rviz. + +### Core Parameters + +| Name | Type | Default Value | Explanation | +| --------------- | ----- | ------------- | -------------------------------------- | +| `Max Range` | float | 200.0f | max range for polar grid. [m] | +| `Wave Velocity` | float | 100.0f | wave ring velocity. [m/s] | +| `Delta Range` | float | 10.0f | wave ring distance for polar grid. [m] | + +## Assumptions / Known limits + +TBD. diff --git a/common/polar_grid/icons/classes/PolarGridDisplay.png b/common/polar_grid/icons/classes/PolarGridDisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..6a67573717ae18b6008e00077defb27256415663 GIT binary patch literal 18815 zcmc#)ig}7!VL~0BI3P>4u>jX{5WQyQGE==@gXiZcsv`yJ3)ShVHnpzyIKV zx%UIl!@PCQ*=Oy&*IwtGaAid)9L!gkAP@*gMjEOL0wKly`$K;YTnXsp8Ulf2BxRtY zY95&f%V-`irs2ZJD-E_>W|QJ#$f(lDGUzn9FhfdJ6ls+f7g13tl1h)8=nGVpD&-eU zEXJbkUMvxiN-bt%sdy?0Ws#;2U}Tww$D9k?tJrv3b90N4w6q7mY>Vu>j)cq`Gq>&g ztxVotd7x=_%0QrfCTU6#h!Tqc9R&LG1r-?ts`)>?Y`h5pRS_lWag8OXawfXJHk9@r zwSCxzbPRm-g9n1hq$!Q)8a9)#!i(M_cz&h|6vnpsyKVD7twGSL0-4KL6Q=BD1ZeP- zzfzYzWVM-q+?d)>KwJl;5;rOeaVP-p8?mb$R~c z!r4STVAB1bJ?W`Q1N^wk6a>;QVI%JxOu}Vf{^G|)Co3MGH{(9RMV<;nHU4Za)%KSC z`;I=`QN*K~)?CjlT%q3CJ0d$G%J_7^;$JI4Ms3f{6oyJDbjK_N!4ju2 z&$?3P$rm$WTureE-aq`r%H%qf&xx}1+^E65XE7*U*@ASHv#;8ex#{Xeuo?I&+x*og zCp;~E10-qE582|U!y4K~`SF#B31Gjpj3?LDSx6hf<#=NRr5x>o;P$^l9osYrEfL{WYjQydU9;g?K5#3k=W*FphTCuCHewl5&`Uu9F)(f>MMOxB>pE z88huBN|GrNq|eH~M(ELpl-tdZkMhs%;OV+^2?6{7^3=m>h4(Sn1AF4SLTeDL;O9g! zBWaM6c%X0DechlP8B_BUQ^1_B5ImG0q$&AGba@Q1!Sx#uv;b)FNlKJ%FF!gu4goAi z+jugMiX+lt3%Db%$x}1fa)yh%A&xxGW-Lle9BaRZcr(Jl8YJvmXVoM8b*d?nDn zr>xqjT|4gjOmgjyb!-I_L=1WSO(};jF5)F9(KK9k$6juv0YKyrQRHz_DK~8jI2)+w zm-Yt$QfvYLhOutzxp@d+SUG4qO=vJ%C2^D=7atD;N#3;^c;DQzmR&&!oPfkcBJT}x-4FY#kT02m@DxoqS-{xT|$ z3PAj4Y06h5S$bR{FjZhmf2ImPCOB3Cm{OLqda0jhqvfLSxmZ+?A2<^h+z64sYjMk*OaM^512bTNz1yJX#3oL;p>F~$69vB)J^K&J0kyCuHxo2qc9?N7 zpx^)Vh!`XhEMW3-8hQ#=jbwx3L_Yk3cspR5f1h~;US}c=&En=n$AFqJRa-Trw&}AF z#AgA`>wx2@JWAg4l9l5}1GY|0Z9CNsXNdgw(z**Vj@S4BOp0I}AA5Z|Zl~>Z3kVbj zqQ+>~?`j3P7S~|HAAK#cX8I@4)zn@Yx%DiDRJ@~c4bTC4ySPXJL&So)v8RA@6#{J%M_y$DCRzdd0*FPR zEH--gPG5+|{w5Yegr~;hMSkzb)vYj91mGV5xcRrf*}fIu`8(Gk(oJHQTMWSTlpe3W z7U|f@97Ozui1Pqn>xtK!34&Gp1$<#-lg>4RGs7K!6%!+v&|>f%Vhw^400u&sGY~q5 zJ^R2hK)+x%+?N_ujGMppd5=D@{V_pS_0HC2*7x*eApoKv>S`$MhIW>f zMXBEn^5P16FfqDGOxdOTX$;a&7%;G-28$P)$1&8Il!2^?K;(-9A|F432ZYVYM^|}I z3>OV1q`?mb9wc7}dJzwJ)_0FSe8o7Cm(><8hzS0{vBcWu7VZ9!xVd$!*%0qZqPEJb=%hJ$Z_L zz~Miu9bQOq9)39Df;+w>C4k8SnA^IR``!NH4|SUf61t|;@Y}Cs7L7w2kT8`ufki#> z(|*WcvwwZbRQK{xx%^U^9it@ui(i`PZ(a!{U!?$lf%er!QwQi?Jq@BTnXsQ0^KiZy z)@H)?s!l`=|Lg4jvo;>IFs7CP;9l8V4UpAo>sjIq#`%v=kuRv~Dh zsiW)pz26t!@MhZgf>?_yj35jsQu16~;-8_l{?rj9%$d(V-9L6Mv^t{|GGZ5-C`W&WqNh29e6d|hsvmvzE$*g zQmyMXe|TD_9?2}u%kdXf_x#(4xd=B4sAmzB{R*=+ZDMv*{0=ZZw`U z1zHnRLzGA%_kVvk=&UnLH`*nK6OLz)IZ+1RaP z$_a6)pzGO}t0_(S2EeN@?u0pWGf^QOT;Fy&fIf+061Vv&k6#eQ9E?CJbN7 zR~KK=eS#kf?q9C)BZqF)@T7l`iF(-E2|R4|?91b}4Ez)Kk2FyYsGq$iY-#*_u@~1} zergZr={EWSme9lc1Lvw@G~X6iq*U zJ>6TJJ1l)Wu8Wk+%I_jO@X>ttg#2Gtvr6H&5?wENhU3wfOD|1HK$EE0JWPIo?o%@w7QX>1z=lRIcDYmm^RdaH!J$U0qdKjR{v?Nj@k8=mLg z!QaffX+{G^hFLx>yzv{!{4I7+*?C}Mw;W;Akw&+^oGNB zKbo1D;RxOCe8*HY+Wq2Z{a&$bq>kL0E*5uqV%bZU97(Rgg}axR>R3#V{3&SGo$cMU zo>il+6}(CD_7>Sn+RG>LD*ZH>q}A^P_|jLN;2-ZSZ)e^-CR7g&UCtF)C)#ml2sjLp zna0G_?3W<_14PCTp7u%y`1jJLdPCb;WW==}ZA1fH$8?tCsR>bJF?vJ$I|J{? zlTYZ~d#P!IC7nc5MI zRsbBkP4l%D7PaBB{&6DKt4yR^NwBqPM*lr^I~U=AH?+LJ*&C$ZAXr^~8P$6rvc|OQ z@5*T^JLt$TP5T0t(=wiG^sXg zEd~AVuZVrio-s!T&LrqYTve>D*P81_=>7;qF3oJb%9-_$ zl7tF5{GK`$Y)Po@y_Df6U|SUSg7!xbv_*4yVe!Q#Ebc;ZcwoSK)rHUB2ho1zr!2(h z%dVk7oadz}SQ849EKz@)p|3b8py_+bZq+KNZ|#0KdDLC_ZhWXy#9XXyyOh3&D_KBd$d5r~dZ&@?gHCJhG5mniAQ@R>y{O zFvmlJ?JS~a-%K~9k;T?h@u&=-btl<6W(Mr?#p_#Nvx_0v`ilrR<$^+%&Dej}o4vNPn* z;owRb6rB0y*XFvkd6OhCQqGB6I?r)a!X@j6i&CJJ1K0a?>M~fR$7l@HLqkBtR{DNi z#>_e~=e6CHkiV3$L3^TB!NYiWD6Xr+?LjRJ218fc9?44c9VrfHEASeRf4u5=;4Pz2 zbmAarlXGC+<}+MNXuEB2%{j_j84W=YGt*J6aB$pdMP%f^yA?e@n6EWm{~fLLbbmH# zB#6dX=5Pv<(zsg%*jkAKL5r0knZM%tivqc1CatP(x82cXPdwWwcmjs-W@q|ImYY99 zYwlE~Y-hze~lk`x3mjPB!27mzk`xg^y;8^_L_ahVv6~)|t~mfqeU``w(TZ zxrTjOPssfK`oySR$6>Am1>m)tK+)!_P=0!6FfqlwTf!xubMJn*u$lh(uwJ8c<*Bgn zDIx;XIk9`S^Zs-&ZN{2BW%h21L^x#Hy{t&3#$u%2EIrNNs9uMGjS4;G4WkVIc79S?9<_)}5sGh^o2GGu01pfp6?z7wr_`sf6M}tS@hT zNCXk5MDOIEc)b#>BL5Byp4r;f?uV$qGqs%c8FpR1U>>e-v`u`iQ65*US#Q)pH|_z0GX?kiG%%(LOU!%Ckq@v`f@JK|pfX2{xiK)~<5soB5N zZ^n6hgiX)Z0q$xxBO+$zshAz%JT;G?R^ui!yaQF=CYolEefA_D418x5EBtuv6S_T# zt>8C5ZK^P2{Tk3jP{74C9i5Z*XB90Em|L^1Lp$Ty?ZVFx%zQ38_!1Hlo_wx*Jxm>5 z;cSTnM62^vnW0! zv(<%*u%dQ#ZEdDm`^UPysNb89-plAwdG@K0)y_jBD-qUQUN%)_5(TsN78%{K)f*=5FXVTI-5jC-M0r)_e2{Uu>Io;LFZ)WTSayCh zH$y%7yq?2_WZ>t-lJJ(ErM5;8)CMsVjU&indTZFQ!V%ji9)yN-+O%Xp_zMN?x2c&~ z$h26bQIZIOY$0|Hl-A{A>HW>D%Vl99Us^*}%6q+6(o_lL&Dq|Mo_&23{zG+CyVGoa zZdPuB-3?-rE;hgTQB^{1j%hnpE81vUZxe{q7+r62)9R zQjuMBfm(#Ms?@4Z$;Ik^iw9oWqRW`6isW|}$3~+7uuRp_uSRo5+uoV%o;%fYOqe&( z|2-;yrIE5RJ-g8wo6hVoIj1wlF#nl)eXp0d4XYB-b^eG|Cv?<)1s7iS_r5%WWTvIf z2b#SW2vI-|e@Dud15=%5ScGn5xI-4JpMXeprsukuG_&3pJ9vw|;{D{iSX$ZsyN-QS zIkazCCe z5tjTIqBD|W;A`f4 z(o2%2vBi}U($ZixbedSg2KMZ`WSTOQSc*AmMXpEHQN>d_Ts3UpJGs9*!n#G=T_Pyr zRXRI_^rJ$49%InZRr>IOdrQ?H&qWVYSv0t<)_MjA=@l6!>}m{uAv-nCbu4CkNL1I0 zszx2HgbeMhEPPFWT{;-iq%i3PmyXoFdjD&`g5k23{NZw;w9<>q|Iu^oZgl-bE6dSw z^mlKsUR{#$i%`XX%3&%n7Tqbvr-=iv3Vn!kYG;%8(aknQHmT914|hK(l9+ATj)ON8U+A7k}qtQoh z(o1n!2r2de-qqvX8LPa^T2)TVwotK{{5PUlaF}h}t$?CyJIDXX_j2AsLij`a@Rsi6 zT9`WmSJ@(5~J3(YDA@J|o3An#c=nA#EWWa`laHX*T$SjobapA&u?(UWP+Q{C%@7Q}QA^ zJNv{`cm#_$-9Pc`0QTcIA;7WaQ;?NPKQ)wA2wg2XAF*`a%1+DL{Ei|8qxs#0>_+qE zIygdQ6ZJGXrnY0=Ug)~OeO>jx(RvJib8E2<`5+hRj<=UQ`XSK&;bJyBjKUK-vv>=H zGCKa(@!Sj)ME<{YC-0A1b(Bqx63NF8LaQ+pwr7++?Y;83W-@6>tv_S?kk#VM|MVs2LY-DySvyPfa--K5g8|I^)y zxR)i5=c%cxpXe{y&Af@{;>*~{b02i&{aB_$54p;>&#@87qjme%iw$;g@1y3hdBV!k zZH`JGW7Tng^Ak~%}#;Q-2Kv@J$5 zPoiIQ%EmkU-JkTeJJ;0SF{mVKykranq(ebDsHb&e)<5FL`@L~x6=ryQdf$-7vCQ0< zVKw1(9v>zMv~Hr4MzS?k%k=W&z-eNFmOLHeG{ZZM>d@B7MqQoA_xwa^NGPaDE9_=G zqs6AdhWYsONzd@+OaTr-8XOBq(wvBuPJ?Raqs7jrj-Q(vB?55luOh~nXxNd`{VH~I zM;8yWZJr7r(}dDk^xNhxwsalXR!sA1N(T6xx8%3 z9i?;He4?%(U&RqXs^zm7y_}z_XZ`rKJWdqi+!lDPbqjFCc03mCyq$|H4*?12d18Xu zsc9-IL6-9k#5yU9z|37?M|bFc*A_tKQa1XE*M2$dVt-b%RtQm5BcL!+`EtBIz{=SB z>EVhR7s6-iy&6K2n(c0w;sbP}fDO(N@z^>W*1LXDq9TP$lSj^&IGFi{KpGIP-++mV zR2tI$TwO=$)6FcJ+Rs%5-rd7wzS5;BWefCwh}pkOiJM7&g&1R6o^Ft!tBsfjK$~LV zchl!;(BZ>dy(Cy;~wVJ*0yFzq6!EcXR5$rY?4gI54mUi2JbS2$QJGSQ5Xyxt;M>AF4Sv@28`bN@} zlqwK4bFtGi`_*QHwN9+3#N)ub$|i36r9T2zdP63$?>Q-i9luzG2$gB(w!3~+Q&2P3 ztg~7hwvPLAu**HR*1BKO`siW+cbQb!0_qL(aGzg2%;p*MKf-C??dsxN<>Sk(?%vrz zzc_PV+EeGDFeZ;i84*ZtW=H3=#2j|W^|ND<(N6Ys^vYL`H`p!um`KLX43QJ|#XvZ& z5VNDI>gv4*nZ&heTY8$rMpSG1;mfQ=IFry0%W*2X;r!dHgLxC(0(fUSoX7 zwNjEXD0t!s_`m5$=5BFW$;8yBAcYLBacVr_p>vrk2KwkD((ynWWJf^m6M0>Rs^j&K zcuG{Bb;k~FsXL?edF#}7S zHZDLmq@^Y_Y4fI*ecn|MwalQipJKC!`&+AEi=Oxumg^tYvS0s6v}&dED>#4Eap zAJNq9yf;-G>9>swxt+fKLmkVyKVy>_Z%8^@94F5{sE|(%yu=RF} zU|f+?>1X;0!Jp9#;p0r9dszlE)NBFz%Xb>g4B!|F;iIe%Rte_9u|W9MNnz3b-6obM zRP{c^sD1ZD1@8DThqDat@NK>7r_aG&(BpD|3!JTXho#kHn#b%IMn={-%208He(I{j z8s5K{sLB<8*d9?YNvdlAkE1Xq4M&^5V`}zED!eajyno=M;-hVhny2RT;+R}Z9r4hs zHg0|z%N0-eaMaHz%=Q`>bdt9ENtBg7zrZD9*0FRwt#|ss^{%z@XNh|0y-*Iz&V$F+ z5b1tlj^6+i1CSkW24b4a6t9GRb-61JetIWG3TakcE8lU{iJ1*WfY zhT3M?F_AEMwx8^2o>J9?B73d2M-Ao0yblIV=w|pGk7+ zChG0Dy~rHOK1Z}(>0iZDOF^?7HV2aYQZklSUv5SgTzl!7E#o4p(rOC24ScRx|^VD=~3JdRynp4w?)W(5A0 z)_C3;5w{#ut;AeK9af+D3$6?#Btje>?{BQL*L-vD2I8Ik7Vg!@QnLe zppa1pgsr!=`wq1_mTHZ}C3xl@K9Vf_gQQRAD_36GdaZ87H=x1+REu&}7i5gjPv`MP z?=NN3^VvFySA4Is?wUDmnv~`eOyF%d=CNUipe$ZOJ}FZgXz3+QW*Yt>xpMko-JL05 zks6_=q<8Zb!SRc%GSdhvd#^TbuH?h6Nef0sA3Wjvs`Q+zGw6AI#HO>wHLBBX;iyJI zFZ5A$b~Ji_KEX=v=l0q7@oKkklDfM5JEnZw<(BE1>)c*>-8TRsJgfKBDNYu#C!HGU zbLvbP6<#?=;4iU0T&Pb*LBnMo{A)%V&E)8oVNDoVfNMGIGqDC~Tscy8s*HW5h(C^+ zG%$nRO&>=ccGarn_c)}SF|TH0#$7Cx8+pN%20+veAhSU?RF1MOcSo&5t!{_L=^j!S zwpKQodunYpRvLi#(OCA4LtJoKXSCHK;j8k9qyr5?e~KQ|t>1+SXe) z>)&;E*Mlsb=gfL7YJkKP1nqI#dXEOw6i8@(OKrTvK3jR+J9~Xn-iY+EwA~bLWlsRR z23NE2O*dU)=1+e<1VW`GQj_6h3MbAnyDHL5QY*f|gl9W++|d2#xN2PS<3Ii9G|AA= zOQyQ5g5I}YLVzr($N9aHm+H&mo*)(pv+|j@cP5Nnz1nAZ%$JsKX2hLXNhUIS$$QnG z1AL<~%s^invTXLbb=gI`FD6^i`_j_7{ay3FG_nui=Feq_SET$RM11j`*GRQ*M5-@2 zd2E<{+liz^%K)8H_K-`#W19`%J018J8$M5t{XUL%67!Kv?T5Y6%HoSPfj9xo@SRNA zO&i%cnz)EbdPRxH)73v%VP9f)rk1ApgoAeZVYB+))9p8Bqd4&bBR~*`oNY>09O~N2 z!Rp>7KnHX=U8>;-697~ZJ_sN<+Irs|Hl_`;G1z694OixT`*V|Cz_YBGLc(tM@Kohm z>JD&MYd3Xf+B|B;lk$xwEPD9_~%=V(vx(C@a6Y-H$#=bfVOn57$&>rkwrVs4#bi zIXh7e(IM6w&y9tw+~I(;y6HV5=yM_(oXxC~r9=|;e>##2d}?n{dgmZtm$kdn2_X2$ zZn1&1c*eQwvMIIRLX^A-fxxJ(8WBPe?||LSuy z{t{iR`A!>-41uqe*4_8|FWHQLq|ffyeq*aJzDYNo!z||t!@KwR;k$ICGOlv)`wp!Q zFe7=&V)-C1g>f{5f5E>X@5^pc*;|x_)H3t0Wj(Hdf}t6f7dj;Lm3y|b61$Fgis3HI zZZTE=iadp@o=Y|={({-`cL3Mp!SitW{cQ0t++xA?d#mq<7jHsy-_FH#^te&BG6e9=TM4K?yE4$gLtJB{QzeetB zryUa6*x1vKi=Ur?^*FjI-@8jse%C$IlbLGM)=y!06b)*c>gqrMkCt)IoHxxwf;h>K zI$ZxUI0Qd&(@HM3+nD1SE<}@A-dyZ1FM9v|iBvCi@E-ah@k7-!4x7-5u`g+?MqO*l zm)P-Zzu$iR6iAlY+w9>D6kT>tx3it8Zf2XNw7OwQn=-dqz_;&l(OUI~)JrvPrtJfn zwVGJjkAIYJ@iHeSyf)eOw~G0ZJld2UGPIIZu3h{4455%Qbz6lZW74FexmYeYM;8aI z$K-h3Y^GFFCuw>-YX)_9?Ig^9A4wx1xQ2#eYVG!-LK}|bv$R8@eqlJgC_fD*}q9KhIE1f_i#O7_ zT)%x`)T#K2OJP6!v6Vb?t~cc+MQq6?;as!glC6mA<(e z<%lFRX`h0@1C67z0NHWh|ZjuVZ|V8t@FP@kIUYdtPp)2I9s3B_BXeBp}-ZP z5|l~AJ-|-~e7adHXKm6rZHQ~nBqb!qRwUhuE_?tsh^Kl=Hlz{jJv5 z%a`iA?S8PdtMf0~>M^6t2;7z3^z?rn(s|R}N+Jo!JO1-*rxQyqqw0F6X>RM!ACLOT zz2%2LmeJ%LT4#%}#EGCHI_{2UWy@EDyhONJs|(RvT?Z?St5 zJe~uJKn9oH8ehO#Qs>h$z{xbsOPOK-DR@vG_GmD%r#DqpIINVFeAg~=yeiV@S@ycUgHP|m(|5vgek*ZEH4RdwK{d$6jL>+4X z`4ChMuWjS9nJF{!ij95ygn<6)v21l;z0gZ@UjZab`9s9KK++(ZU}hS#jlPp@YHsdX+N+j<%}bAm_k9)T8@LAgyH4JzSyw>)>XO5eYZ-f(KZq4CZ8KAE}&p33a#nAw#ZL!zhkYZa0_fy&Jh12UfTAj4W?< z)O2(X-CC!M1+7n}8-n0j-m&cbyUhc#29lDYkyrH{#~wfcNz*@%?SyYHR3jK#qYkg` zfOxt;Xp>!NetI3?-j2$*c6E0peFJ1k0qtRyN~0J}eb0QIcI)6yPMaCaqc?e?=5%L0 z!wWTLgHwtNdLFYf->C5f&&TSGJKKO9egTz|q7H=dL_|bSuP9CLa~>76 znCtPqJkWLkR->ldp7iOcx({hE83#s3x$hnxA+ElF{8rgnRi*qnM5H$vfR4=(~l-hR-WQi)59iT6|TZNDzuRd5R$FCqNF)uguYRz#H!g{_d46@8|;6d)C31g+?wwl9UWUN!_7@iU(y8@`IP%@=plBH%=02yJ&ynGhwto!JlUOX z4ZlnR=UHTX(m73bJ`MY1G35^fepmv;GCh*P+1Gq7e{QeWW1q~jSlc~K9=z&1x!R5Sw+>Pg|4d7B*QMP1eov^xZ{boH28L>~l{Zhb#6){LZ zm@6K(L>wtG?EU!}!s|J9nZo{zoX5(&q`-6B*F~kgn1RWbz(S1+KjtWyba%eqCgn)S zFN@z*^(@_A3M$`75z6`%5E_kQVPm~8vUW(0-)Xpgi@MOw2BBVq0JDHsQp!G~mGIp` zt+g8jO^5Tn$1Dr}bH1cx#Vy}6vXegp0~5m=T_@{(WO?uY<)bNy2_cW;Z}e~9$_)RA z&R+=3N)8DzIPSQK_PD=ZR~&XP^$^GwPJke6@_WV`6v&1R5CO#>3rm*Q23Pe8MP7zS zN4FFUff1Z$-rRg+ zUOSJkl&izPHIn6>?4GZlL7(#}f01PSSIocavf%MkVJQEWW_pySvMFl!k06}^LD&vwY0rFM7Sdo{5 z!^6JOK>wyp&Wqx=>r``x(>dQU>14zTUKY_wnmZX{if`ugWtEtf5;FbfaR!RPMaJd=iiHkN)+{o zw=7_sEj@pbvWiNnS(}3oHAP5B$P(ALz1hl~T>aEY-XZhaZD8r8xs7nX)xEONDCjv; zOUTNmo&)Iqji8`liKzLOKAgKFJ{IZWuJ!WaoUryyAsQa}xqK??8(ZCEx7KBV%c+g} zKb}#TJ3DI#oj_gNy)Lv4->#&&w<8@3lV0qv{JbmRz6E=*>$kXAjlB;|IzAm_X;uCB zv75{DlZUCPX_L_PUzBOWE8nZ-zMA|iD#R`FU!}FRHDgRnO#Q#U-C^A-YHAzgg4T%^ zfT5UUrP9zgG!1;~y?UlKy%*}N2#Hw+^T|{6+|stQd7Vod9abu&XJ-I|3zTY{NPshIIhMP4(e)?%0Uv@SDj|pppr_Jb?SU%^oes09s*d=hLG% ze`5g7Pg|}#S=k6d+Fsg@%%xAxPEJlx7nk#=$7MiN?f*(I2$fs2BE8qna6zlDpw#AvWn%g%t!02^>Yj~m`Jc$>iH%XJ+e zZKMxoZxEm;V0$ox2?Us2H~)s3I>H<)HIzL9C2*B2%2% zuoz$qGG)~AC_jk0_89l)-w}Kjrep=sU*p1KA%bo<^)Jj!7x@I^8msO> z4>V)boi5cC6{?m%cYKi1zpQXO7Sj9MjcR~0ZwA;qj*h|~Zix)e+JeBwbFm_`UgUBj zgZ3CD_k(a;jH;dGQ*p3Bd%O`FzipXyFXu?vx-t zRRt(cFcEnGVV%fzDOH|TTM%e0EhS#yS{w_?&t<&+7NqhCIwh;+O2Q)sTsc~YfC3bU zq)x}416#3Ue7ioXI|D~PEaz~kUWr15fPZx;b=F9Tzwr0+<&|tGXq@ z-!p+0U!6Y(5C2L=UkFUuSvc=t6~zQS+H_VW)Q7oK9zW$`$z@cCY7+mxgHfQ2uQhZ-Bg6F)mmEz|j=0p4I}11k?as_b+mA%#j1I8iXEwQXk2s&yQGt+}5bJPGb zYs;@L`=D=*mVrBcjz(@?+%AG&0^6ZbXHPVwwQtYzgjukZEJ2bVC7?Lfli&RQ%4ql> zZ3Bjstq?yQBdHTP-^B*^9^)d5i0V_-08a5k6bqU|cZ>@XF)H;$15M;U%QGN@6}Z0a%$-dB3&%`n1N7*~lrtIJ9})K!Z&`SKbd?mA;INup)SGh_}|FuM4}K3U^9Fb8+f3I)=dOLQaPRBqE3YvwXIT1%t;9*xKkQh>Kn}+ z;Q<4<$i;f+^O`#E1n{wLZ`^)rpKs3y{DkQ8RNlH1vu<1qB`m4Ar|D>VgG6BuM+f>~Dm_|t=53>L+p^5?Ap9utF zppJ$KnZyZs@R1KmMUXW&i^`seS3FLP#h)k*_YGfPxP+Lf^-x z_sPQj+kVNDcrI(6;l2Q!R|cD$^7tp7bf7;!t@&f~h=LG73c#aHVNd&EsO|JDJ9OOx z4GDygnsW{dr3{vF5xpd#k62wqCZIlHJHXZfU5XlU_yV<>Rk0;H^GfkD(N zC8;^cd!U6lfJ^KX0@2Cm4 zd=8d)ev_63t*c7*w-JRN1{3v+Dme+gIiEr$x928QNy2pGAlduak_Nks{AB%r4d$fH zGhrW1qRbq8d%BIF&*L}E-fw%oD&cP&m%}Rqb%t5mz_v?@_2O7|JOgdKNWi}S@&06z zP{QC}7)~36DkZQSelp`cI3;!}dXmDmA1C4Sk2IJkXca2?Rq1CeU5pr=Z$Eb|MA79r zy57rE7PN*8KqGRYA39>(eT2c|(NGsfr{%mU54|>P>rf=dU$a zVl0M^67U>rcEgp*DN>+P_xfhO3&BA|ja^IR9nZ)3c|`h+cLeVW#xuq+3uv}nG%A6$ z#JM=Sf#pn?8f_ORN$Xqfs`b>*IN!zY+eSWe1i~INHf-G~8xDL(&1R?cv=sOgWv}k5 zvteF@Dw-i34yuxg_Ahk2WZ_t?;YIDiHl87$aT0m1go-04L)r0u>_1x^n=umxKkx@T zXKB)YVqzl*IYMPkmI~jo$xVn-{?=xiJ8`YE6AE&DmVLZJomVQhqu;I!nEhjZSW}A& z9aUJDnK_|~5?EL>2L>l;*|=qJIbzC{IPFmO%Mz2JRMpR3A?xzA_EP8?g@56F6FM$q zslHsKdNUki-|0=HpNsVPE(Hds%j;8TT#?q*MZ~(-<~C%b_A2|X}`fHdwvLeljj~n5@a2L|D4uGt&g#XQX&30uL+(&sRQi{`=)W|ELz*%Z{nK;cEHSxzI zsrA`<4Rz6Z8InRbWPpDMuP7)CHtM(&gT2jMVmcA6EvW4pd-}Qk^8M1f ztkSjGqJ~jOXiyi^+0T{nVA#S8`(S%RprmWLq)G}RWd2UQ3q_lH)oTEP+*uVvg!LsN zp4D^TqM1J4uq;@HeYBs!V3ZI;JIi2~d7$Bqe6W{zYP=5{*J{>)N}3r95vhNZ5{>PP zuI(%1IF+xoU4$(JU!{WLTR0_#*HMh#ml-ls=i#wjLt?A2l@z+gU?w4~g&W3HA^s`4 z4F}UB7IHlO-A+nWfeRdy@gjRdiHelQl{X=Mi%^&FKd0*<@l5nI+3Vc#h{rC$Kmoe- zvpZ3bMn*|-qZj5396y5q;CzC9kn7s`b9To2s502|i^nLOu-LIIk#*-sAS;X19xv|T z{0*ls}liCZmq|f?Z;8zxgGkM?Er0=gxe!}5B)Cfts%zx+KRG~>%xK$^Qwgd zxLTF&cv9bZ<-o^?!iTp33(@-}y0vl_)2I~G)HF}92jl3v=#<)O=E7Rmdy2oglf|Hk z9aQ(|WOUn)IJ?Ev)&Fx6bF6)kaLn)DLr)thofgM!&@~!rT^O7bt@e5Or7|3fA$%9Z zdcgKVh^j?@4Sr`l^A=M|1^Pj?Yjm{L@U2TTmvgF?=HwY>`I&p}76Dqk08?8TUT-A< znh@%m4Kr8Z2eAG|xkt@vbVWTWWo?7J*w`48u>8$6i$5I*42V{tPKX%OlI`)B z()!3ib)k>8#b55^e=w>k^6=B1ZbJ{JnSv5WmCH4hd6f6{<7;|@XRLCWiDm99yGhA{}Wd_r0D9El$(X5~ZD@6Yeq%JJ_WnN-%QoT_^& zls{`|J%9EnfAEk~Gyx};)G-ocS*iS3?;B@s#A40HNR)|D9E{SnkxmA^FH@JMsvova zX8&ayT=lAu;Am_z@Z2<%$ z6{BjEfS{w}t2VXwOJOAH%tlL96JNh1#=Wf*>*+C=wXQ*vNIs(oaU1*ElJg~AWBoz3 zYsEM6%XU&tu#eu|7g)PJi(C|&tXR}Xn&hnaxd#gx>+j>0Lv??-YpZnq{-}DCX85D* z_dAPe6Sn6vuwUIAo->ylZ}KI6nQVFL;mT@J6n=}jh-Pjuf%pEv++Pdkdj*Zwp7DBP zrhTtVw6{gZP)&6$66l-|HJ4w8%;eg~^EPs4nrqIew2C|SrN%S*vk{KJr_g;`Y{qKK za@>)WYnnH1$Y7g~H208STe0$q*DizuUr(^Zw@=B+o)Nq~aS$e4yGfT@>daH^DKIsz z)cwow6@MRvpi+T4eltCU8Nd3QQI$>-+ zFgW?Ai;?m(M6`3~3t0MUNoj|7dB1(@$eb{5jiAiUXxRcsX%N7syb8a-?5DbXQY&dt z%QtBuucYrm*1Dmz5?dn{A0>WU5x4YjETQ|M(8cAmSNvkb`2Ku7q`f}>zYyO<$8g@x zUzs*Gk#M%Gr7AVQ9ITO)uwuolOW^S4&Y0P4a>%SIVE2Gjj|O|=mQu{^v#Iu?g_u(5R=+V-wf&8^chyn4kgY80C{bYAldhLKCoo`h9f)w_=Um8!5STwbwF{_U3Tizp{AyHC84h8bs|GATle zy3F*$Rqlvr6MURu^<;ctoJ-C-Z#8oO_$tvow?$;EY1DOi-(^S-2TIzlGbRuwb&;-U z7yZw0dus6-cg1D}!{`%wA1C;jA;~pKJ=T-XVnJJKHRncn?@V?ZaEO-)De!(_{cb?PQZM`vF>be}<$+yB>x!n%iMG>Ka&r0;UkQJwE7Mk z$`Z}Z4DInTXYHvlPzHtdM7q)!O@~4(CDCwL6=&P!6H8`ZIu8IG){ebnFOOsgJi5#J zo*23$q%3OfclD3VJx10L$%S6mR#0O{Z-fm;yH{W~(%~1?#@9nDw|X-FV4WFNNE?u= zNsUpZB9>X39R6ko>B{E@palselu!fi@;2{*99+kw!vd7==a0k1U~mtD?VxZfC+5?F zS*Nm{8|Z%mvGF+lu?k#)zW_q@WO_h`!~-H-wk-C(55!&CS9;0~tCO{qo!|0Ld`A4R z!?{Ezel$sA7!Q>QFASC6a)j3Q9elimCP?JOd_Bc7+iW%D38BRl_}=XI4MruG!$~Y! z)#3G0Ing0FLqmnq)N|04xKy0c__kp$%3zYQ=jbnv1!pZF??**9r5!AA6QQz8HaBac z-)DvlmLg^;&QlPoDNzVPj2csI+Sp_GZ>Y~5tTw?OOsB`~G>Igi6#!z}vZxRn z_mZ3%^Wj5E=1-Gbo9g3YL(lz--KY}z4P9;Rev`lWf1j9yQ{VAp+Sf5=7Hy=={c`2yJadWY-BAQd=Lk{ z_R5BjK&)=KT9B)gLV{1>rb2!28ThgAIW#%qO5B*yF`N0*A1srvHd0v*yWIk#^?)Ts zM5jSs*i*xFz2D7|(i500ZVx1J5^<9kp}e$hGHAC2LutRtBH%ytYf07!h%N|p$O_p@ zM76*Ze2pGv`4>e77PC@W+j}V~VvZ$pJA7_u0J6SUt6#Bso7y)~k6x^LN|Y_7g&3t~ zc23kDyJ8C;xg3Hmb~#>n;^|83;U1180$1Uh7VPe5U0Yj3=xI`|HIDic);1 z%Zx)#tB~cm_w^{1mrymqhd`i6ceMi`P*4dL1i~7qi~&@l{y)Y0VJg~EDlzW{YoEjk QxT*u><#`b=z=h}h2b9~@i2wiq literal 0 HcmV?d00001 diff --git a/common/polar_grid/package.xml b/common/polar_grid/package.xml new file mode 100644 index 0000000000000..c11858c4dcc98 --- /dev/null +++ b/common/polar_grid/package.xml @@ -0,0 +1,28 @@ + + + polar_grid + 0.1.0 + The polar_grid package + + Yukihiro Saito + Apache License 2.0 + + ament_cmake_auto + + libqt5-core + libqt5-gui + libqt5-widgets + qtbase5-dev + rviz_common + rviz_default_plugins + rviz_ogre_vendor + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + + + diff --git a/common/polar_grid/plugins/plugin_description.xml b/common/polar_grid/plugins/plugin_description.xml new file mode 100644 index 0000000000000..1ccaf8725d4de --- /dev/null +++ b/common/polar_grid/plugins/plugin_description.xml @@ -0,0 +1,6 @@ + + + + diff --git a/common/polar_grid/src/polar_grid_display.cpp b/common/polar_grid/src/polar_grid_display.cpp new file mode 100644 index 0000000000000..b397a21eb0d5f --- /dev/null +++ b/common/polar_grid/src/polar_grid_display.cpp @@ -0,0 +1,240 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Copyright (c) 2008, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "polar_grid_display.hpp" + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +namespace rviz_plugins +{ +PolarGridDisplay::PolarGridDisplay() : Display(), wave_range_(0.0) +{ + frame_property_ = new rviz_common::properties::TfFrameProperty( + "Reference Frame", rviz_common::properties::TfFrameProperty::FIXED_FRAME_STRING, + "The TF frame this grid will use for its origin.", this, 0, true); + + color_property_ = new rviz_common::properties::ColorProperty( + "Color", Qt::white, "The color of the grid lines.", this, SLOT(updatePlane())); + + d_range_property_ = new rviz_common::properties::FloatProperty( + "Delta Range", 10.0f, "Delta Range[m].", this, SLOT(updatePlane())); + d_range_property_->setMin(0.1f); + d_range_property_->setMax(100.0f); + + max_range_property_ = new rviz_common::properties::FloatProperty( + "Max Range", 200.0f, "Max Range[m].", this, SLOT(updatePlane())); + max_range_property_->setMin(0.0f); + max_range_property_->setMax(500.0f); + max_alpha_property_ = new rviz_common::properties::FloatProperty( + "Max Alpha", 1.0f, "The amount of transparency to apply to the grid lines.", this, + SLOT(updatePlane())); + max_alpha_property_->setMin(0.0f); + max_alpha_property_->setMax(1.0f); + min_alpha_property_ = new rviz_common::properties::FloatProperty( + "Min Alpha", 0.2f, "The amount of transparency to apply to the grid lines.", this, + SLOT(updatePlane())); + min_alpha_property_->setMin(0.0f); + min_alpha_property_->setMax(1.0f); + wave_velocity_property_ = new rviz_common::properties::FloatProperty( + "Wave Velocity", 100.0f, "Wave Velocity [m/s]", this, SLOT(updatePlane())); + wave_velocity_property_->setMin(0.0f); + wave_color_property_ = new rviz_common::properties::ColorProperty( + "Wave Color", Qt::white, "The color of the grid lines.", this, SLOT(updatePlane())); + + max_wave_alpha_property_ = new rviz_common::properties::FloatProperty( + "Max Wave Alpha", 1.0f, "The amount of transparency to apply to the grid lines.", this, + SLOT(updatePlane())); + max_wave_alpha_property_->setMin(0.0f); + max_wave_alpha_property_->setMax(1.0f); + min_wave_alpha_property_ = new rviz_common::properties::FloatProperty( + "Min Wave Alpha", 0.2f, "The amount of transparency to apply to the grid lines.", this, + SLOT(updatePlane())); + min_wave_alpha_property_->setMin(0.0f); + min_wave_alpha_property_->setMax(1.0f); +} + +PolarGridDisplay::~PolarGridDisplay() +{ + if (initialized()) { + scene_manager_->destroyManualObject(rings_manual_object_); + scene_manager_->destroyManualObject(wave_manual_object_); + } +} + +void PolarGridDisplay::onInitialize() +{ + rings_manual_object_ = scene_manager_->createManualObject(); + rings_manual_object_->setDynamic(true); + scene_node_->attachObject(rings_manual_object_); + wave_manual_object_ = scene_manager_->createManualObject(); + wave_manual_object_->setDynamic(true); + scene_node_->attachObject(wave_manual_object_); + + frame_property_->setFrameManager(context_->getFrameManager()); + updatePlane(); +} + +void PolarGridDisplay::reset() +{ + rings_manual_object_->clear(); + wave_manual_object_->clear(); +} + +void PolarGridDisplay::update(float /*dt*/, float ros_dt) +{ + QString qframe = frame_property_->getFrame(); + std::string frame = qframe.toStdString(); + + Ogre::Vector3 position; + Ogre::Quaternion orientation; + if (context_->getFrameManager()->getTransform( + frame, rclcpp::Time(0, 0, context_->getClock()->get_clock_type()), position, orientation)) { + scene_node_->setPosition(position); + scene_node_->setOrientation(orientation); + setStatus(rviz_common::properties::StatusProperty::Ok, "Transform", "Transform OK"); + } else { + std::string error; + if (context_->getFrameManager()->transformHasProblems( + frame, rclcpp::Time(0, 0, context_->getClock()->get_clock_type()), error)) { + setStatus( + rviz_common::properties::StatusProperty::Error, "Transform", QString::fromStdString(error)); + } else { + setStatus( + rviz_common::properties::StatusProperty::Error, "Transform", + "Could not transform from [" + qframe + "] to [" + fixed_frame_ + "]"); + } + } + wave_range_ += ros_dt / 1e9 /* sec */ * wave_velocity_property_->getFloat(); + wave_range_ = std::fmod(wave_range_, max_range_property_->getFloat()); + wave_manual_object_->clear(); + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + const float d_theta = 3.6 * M_PI / 180.0; + const float d_alpha = std::min( + std::max( + static_cast(max_wave_alpha_property_->getFloat()) - + static_cast(min_wave_alpha_property_->getFloat()), + 0.0f), + 1.0f); + Ogre::ColourValue color; + color = rviz_common::properties::qtToOgre(wave_color_property_->getColor()); + color.a = max_wave_alpha_property_->getFloat(); + wave_manual_object_->estimateVertexCount(static_cast(2 * M_PI / d_theta)); + wave_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP); + + color.a = d_alpha * (1.0 - (wave_range_ / max_range_property_->getFloat())) + + min_wave_alpha_property_->getFloat(); + color.a = std::max(color.a, min_wave_alpha_property_->getFloat()); + for (float theta = 0.0; theta < 2.0 * M_PI + d_theta; theta += d_theta) { + wave_manual_object_->position( + wave_range_ * static_cast(std::cos(theta)), + wave_range_ * static_cast(std::sin(theta)), 0.0); + wave_manual_object_->colour(color); + } + wave_manual_object_->end(); + + context_->queueRender(); +} + +void PolarGridDisplay::updatePlane() +{ + rings_manual_object_->clear(); + + Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName( + "BaseWhiteNoLighting", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA); + material->setDepthWriteEnabled(false); + + const float d_theta = 3.6 * M_PI / 180.0; + const float d_range = d_range_property_->getFloat(); + const float d_alpha = std::min( + std::max( + static_cast(max_alpha_property_->getFloat()) - + static_cast(min_alpha_property_->getFloat()), + 0.0f), + 1.0f); + const float epsilon = 0.001; + const float max_range = max_range_property_->getFloat() + epsilon; + Ogre::ColourValue color; + color = rviz_common::properties::qtToOgre(color_property_->getColor()); + color.a = max_alpha_property_->getFloat(); + rings_manual_object_->estimateVertexCount( + static_cast(max_range / d_range) + static_cast(2.0f * M_PI / d_theta)); + rings_manual_object_->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST); + for (int r = d_range; r <= max_range; r += d_range) { + for (float theta = 0.0; theta < 2 * M_PI; theta += d_theta) { + { + rings_manual_object_->position( + static_cast(r) * std::cos(theta), static_cast(r) * std::sin(theta), 0.0); + rings_manual_object_->colour(color); + rings_manual_object_->position( + static_cast(r) * std::cos(theta + d_theta), + static_cast(r) * std::sin(theta + d_theta), 0.0); + rings_manual_object_->colour(color); + } + } + color.a -= d_alpha / (max_range / d_range); + color.a = std::max(color.a, min_alpha_property_->getFloat()); + } + + rings_manual_object_->end(); + + context_->queueRender(); +} + +} // namespace rviz_plugins + +#include +PLUGINLIB_EXPORT_CLASS(rviz_plugins::PolarGridDisplay, rviz_common::Display) diff --git a/common/polar_grid/src/polar_grid_display.hpp b/common/polar_grid/src/polar_grid_display.hpp new file mode 100644 index 0000000000000..b42cc42a810e3 --- /dev/null +++ b/common/polar_grid/src/polar_grid_display.hpp @@ -0,0 +1,103 @@ +// Copyright 2020 Tier IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +/* + * Copyright (c) 2008, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef POLAR_GRID_DISPLAY_HPP_ +#define POLAR_GRID_DISPLAY_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +namespace rviz_plugins +{ +/** + * \class PolarGridDisplay + * \brief Displays a grid in either the XY, YZ, or XZ plane. + * + * For more information see Grid + */ +class PolarGridDisplay : public rviz_common::Display +{ + Q_OBJECT + +public: + PolarGridDisplay(); + virtual ~PolarGridDisplay(); + + // Overrides from Display + virtual void onInitialize(); + virtual void update(float dt, float ros_dt); + void reset() override; + +private Q_SLOTS: + void updatePlane(); + +private: + Ogre::ManualObject * rings_manual_object_; + Ogre::ManualObject * wave_manual_object_; + float wave_range_; + + rviz_common::properties::TfFrameProperty * frame_property_; + rviz_common::properties::FloatProperty * d_range_property_; + rviz_common::properties::FloatProperty * max_range_property_; + rviz_common::properties::FloatProperty * max_alpha_property_; + rviz_common::properties::FloatProperty * min_alpha_property_; + rviz_common::properties::ColorProperty * color_property_; + rviz_common::properties::FloatProperty * wave_velocity_property_; + rviz_common::properties::ColorProperty * wave_color_property_; + rviz_common::properties::FloatProperty * max_wave_alpha_property_; + rviz_common::properties::FloatProperty * min_wave_alpha_property_; +}; + +} // namespace rviz_plugins + +#endif // POLAR_GRID_DISPLAY_HPP_