├── .gitignore ├── .log ├── compile_commands.json ├── compile_commands.sh ├── images ├── clfh3-s8ty4.gif └── dataminco.png ├── readme.md └── src ├── CMakeLists.txt ├── DecompROS ├── DecompUtil │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── data │ │ ├── example1.png │ │ ├── example2.png │ │ ├── example3.png │ │ ├── example4.png │ │ └── obstacles.txt │ ├── docs │ │ ├── annotated.html │ │ ├── arrowdown.png │ │ ├── arrowright.png │ │ ├── bc_s.png │ │ ├── bdwn.png │ │ ├── classDecompBase-members.html │ │ ├── classDecompBase.html │ │ ├── classDecompBase.png │ │ ├── classEllipsoidDecomp-members.html │ │ ├── classEllipsoidDecomp.html │ │ ├── classEllipsoidDecomp.png │ │ ├── classIterativeDecomp-members.html │ │ ├── classIterativeDecomp.html │ │ ├── classIterativeDecomp.png │ │ ├── classLineSegment-members.html │ │ ├── classLineSegment.html │ │ ├── classLineSegment.png │ │ ├── classSeedDecomp-members.html │ │ ├── classSeedDecomp.html │ │ ├── classSeedDecomp.png │ │ ├── classes.html │ │ ├── closed.png │ │ ├── data__type_8h.html │ │ ├── data__type_8h_source.html │ │ ├── data__utils_8h.html │ │ ├── data__utils_8h_source.html │ │ ├── decomp__base_8h.html │ │ ├── decomp__base_8h_source.html │ │ ├── dir_0156596343f07f423e58f27e9acfceb9.html │ │ ├── dir_0ea7c0ecff050f14fbfcb8a22f95278f.html │ │ ├── dir_13e138d54eb8818da29c3992edef070a.html │ │ ├── dir_2c1ec4cfaf5ed43ec260b4f91f837847.html │ │ ├── dir_4fef79e7177ba769987a8da36c892c5f.html │ │ ├── dir_63772b626f2709090f0bdca0f40827b4.html │ │ ├── dir_75993fee8576b97e3d9a8476c1772d17.html │ │ ├── dir_a41afb44cd77021f04ef0298981be91e.html │ │ ├── dir_a573004c1aa1ac4f8bc48460229ea7de.html │ │ ├── dir_d44c64559bbebec7f509842c48db8b23.html │ │ ├── doc.png │ │ ├── doxygen.css │ │ ├── doxygen.png │ │ ├── dynsections.js │ │ ├── ellipsoid_8h.html │ │ ├── ellipsoid_8h_source.html │ │ ├── ellipsoid__decomp_8h.html │ │ ├── ellipsoid__decomp_8h_source.html │ │ ├── files.html │ │ ├── folderclosed.png │ │ ├── folderopen.png │ │ ├── form_0.png │ │ ├── form_1.png │ │ ├── form_2.png │ │ ├── formula.repository │ │ ├── functions.html │ │ ├── functions_func.html │ │ ├── functions_vars.html │ │ ├── geometric__utils_8h.html │ │ ├── geometric__utils_8h_source.html │ │ ├── globals.html │ │ ├── globals_defs.html │ │ ├── globals_func.html │ │ ├── globals_type.html │ │ ├── globals_vars.html │ │ ├── hierarchy.html │ │ ├── index.html │ │ ├── iterative__decomp_8h.html │ │ ├── iterative__decomp_8h_source.html │ │ ├── jquery.js │ │ ├── line__segment_8h.html │ │ ├── line__segment_8h_source.html │ │ ├── nav_f.png │ │ ├── nav_g.png │ │ ├── nav_h.png │ │ ├── open.png │ │ ├── polyhedron_8h_source.html │ │ ├── search │ │ │ ├── all_0.html │ │ │ ├── all_0.js │ │ │ ├── all_1.html │ │ │ ├── all_1.js │ │ │ ├── all_10.html │ │ │ ├── all_10.js │ │ │ ├── all_2.html │ │ │ ├── all_2.js │ │ │ ├── all_3.html │ │ │ ├── all_3.js │ │ │ ├── all_4.html │ │ │ ├── all_4.js │ │ │ ├── all_5.html │ │ │ ├── all_5.js │ │ │ ├── all_6.html │ │ │ ├── all_6.js │ │ │ ├── all_7.html │ │ │ ├── all_7.js │ │ │ ├── all_8.html │ │ │ ├── all_8.js │ │ │ ├── all_9.html │ │ │ ├── all_9.js │ │ │ ├── all_a.html │ │ │ ├── all_a.js │ │ │ ├── all_b.html │ │ │ ├── all_b.js │ │ │ ├── all_c.html │ │ │ ├── all_c.js │ │ │ ├── all_d.html │ │ │ ├── all_d.js │ │ │ ├── all_e.html │ │ │ ├── all_e.js │ │ │ ├── all_f.html │ │ │ ├── all_f.js │ │ │ ├── classes_0.html │ │ │ ├── classes_0.js │ │ │ ├── classes_1.html │ │ │ ├── classes_1.js │ │ │ ├── classes_2.html │ │ │ ├── classes_2.js │ │ │ ├── classes_3.html │ │ │ ├── classes_3.js │ │ │ ├── classes_4.html │ │ │ ├── classes_4.js │ │ │ ├── classes_5.html │ │ │ ├── classes_5.js │ │ │ ├── classes_6.html │ │ │ ├── classes_6.js │ │ │ ├── close.png │ │ │ ├── defines_0.html │ │ │ ├── defines_0.js │ │ │ ├── defines_1.html │ │ │ ├── defines_1.js │ │ │ ├── files_0.html │ │ │ ├── files_0.js │ │ │ ├── files_1.html │ │ │ ├── files_1.js │ │ │ ├── files_2.html │ │ │ ├── files_2.js │ │ │ ├── files_3.html │ │ │ ├── files_3.js │ │ │ ├── files_4.html │ │ │ ├── files_4.js │ │ │ ├── files_5.html │ │ │ ├── files_5.js │ │ │ ├── functions_0.html │ │ │ ├── functions_0.js │ │ │ ├── functions_1.html │ │ │ ├── functions_1.js │ │ │ ├── functions_2.html │ │ │ ├── functions_2.js │ │ │ ├── functions_3.html │ │ │ ├── functions_3.js │ │ │ ├── functions_4.html │ │ │ ├── functions_4.js │ │ │ ├── functions_5.html │ │ │ ├── functions_5.js │ │ │ ├── functions_6.html │ │ │ ├── functions_6.js │ │ │ ├── functions_7.html │ │ │ ├── functions_7.js │ │ │ ├── functions_8.html │ │ │ ├── functions_8.js │ │ │ ├── functions_9.html │ │ │ ├── functions_9.js │ │ │ ├── functions_a.html │ │ │ ├── functions_a.js │ │ │ ├── functions_b.html │ │ │ ├── functions_b.js │ │ │ ├── functions_c.html │ │ │ ├── functions_c.js │ │ │ ├── mag_sel.png │ │ │ ├── nomatches.html │ │ │ ├── pages_0.html │ │ │ ├── pages_0.js │ │ │ ├── search.css │ │ │ ├── search.js │ │ │ ├── search_l.png │ │ │ ├── search_m.png │ │ │ ├── search_r.png │ │ │ ├── searchdata.js │ │ │ ├── typedefs_0.html │ │ │ ├── typedefs_0.js │ │ │ ├── typedefs_1.html │ │ │ ├── typedefs_1.js │ │ │ ├── typedefs_2.html │ │ │ ├── typedefs_2.js │ │ │ ├── typedefs_3.html │ │ │ ├── typedefs_3.js │ │ │ ├── typedefs_4.html │ │ │ ├── typedefs_4.js │ │ │ ├── variables_0.html │ │ │ ├── variables_0.js │ │ │ ├── variables_1.html │ │ │ ├── variables_1.js │ │ │ ├── variables_2.html │ │ │ ├── variables_2.js │ │ │ ├── variables_3.html │ │ │ ├── variables_3.js │ │ │ ├── variables_4.html │ │ │ ├── variables_4.js │ │ │ ├── variables_5.html │ │ │ └── variables_5.js │ │ ├── seed__decomp_8h.html │ │ ├── seed__decomp_8h_source.html │ │ ├── splitbar.png │ │ ├── structEllipsoid-members.html │ │ ├── structEllipsoid.html │ │ ├── structHyperplane-members.html │ │ ├── structHyperplane.html │ │ ├── structLinearConstraint-members.html │ │ ├── structLinearConstraint.html │ │ ├── structPolyhedron-members.html │ │ ├── structPolyhedron.html │ │ ├── sync_off.png │ │ ├── sync_on.png │ │ ├── tab_a.png │ │ ├── tab_b.png │ │ ├── tab_h.png │ │ ├── tab_s.png │ │ ├── tabs.css │ │ └── txt__reader_8hpp_source.html │ ├── include │ │ ├── decomp_basis │ │ │ ├── data_type.h │ │ │ └── data_utils.h │ │ ├── decomp_geometry │ │ │ ├── ellipsoid.h │ │ │ ├── geometric_utils.h │ │ │ └── polyhedron.h │ │ └── decomp_util │ │ │ ├── decomp_base.h │ │ │ ├── ellipsoid_decomp.h │ │ │ ├── iterative_decomp.h │ │ │ ├── line_segment.h │ │ │ └── seed_decomp.h │ ├── package.xml │ └── test │ │ ├── test_ellipsoid_decomp.cpp │ │ ├── test_iterative_decomp.cpp │ │ ├── test_line_segment.cpp │ │ ├── test_seed_decomp.cpp │ │ └── txt_reader.hpp ├── LICENSE ├── decomp_ros_msgs │ ├── CMakeLists.txt │ ├── msg │ │ ├── Ellipsoid.msg │ │ ├── EllipsoidArray.msg │ │ ├── Polyhedron.msg │ │ └── PolyhedronArray.msg │ └── package.xml └── decomp_ros_utils │ ├── CMakeLists.txt │ ├── icons │ └── classes │ │ ├── EllipsoidArray.png │ │ └── PolyhedronArray.png │ ├── include │ └── decomp_ros_utils │ │ └── data_ros_utils.h │ ├── package.xml │ ├── plugin_description.xml │ └── src │ ├── bound_visual.cpp │ ├── bound_visual.h │ ├── ellipsoid_array_display.cpp │ ├── ellipsoid_array_display.h │ ├── ellipsoid_array_visual.cpp │ ├── ellipsoid_array_visual.h │ ├── mesh_visual.cpp │ ├── mesh_visual.h │ ├── polyhedron_array_display.cpp │ ├── polyhedron_array_display.h │ ├── vector_visual.cpp │ └── vector_visual.h └── minco_curve ├── CMakeLists.txt ├── include ├── stc_gen.hpp ├── traj_optmizer.hpp └── utils │ ├── lbfgs.hpp │ ├── map_interface.h │ ├── minco.hpp │ ├── root_finder.hpp │ └── trajectory.hpp ├── launch └── simple_move_base.launch ├── maps ├── map.yaml └── slow.pgm ├── package.xml ├── rviz └── display.rviz └── src └── test_node.cpp /.gitignore: -------------------------------------------------------------------------------- 1 | minco_curve.zip 2 | minco_curve2.zip 3 | minco_curve3.zip 4 | .catkin_tools/ 5 | .vscode/ 6 | build/ 7 | devel/ 8 | logs/ 9 | ompl/ 10 | .catkin_workspace 11 | .log/ 12 | -------------------------------------------------------------------------------- /compile_commands.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | rm compile_commands.json 3 | touch compile_commands.json 4 | 5 | cat ./build/*/compile_commands.json >> compile_commands.json 6 | sed -i 's/]\[/,/g' compile_commands.json -------------------------------------------------------------------------------- /images/clfh3-s8ty4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/images/clfh3-s8ty4.gif -------------------------------------------------------------------------------- /images/dataminco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/images/dataminco.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # FlowCore​​ 2 | A GlobalPlanner Based on Minco Curve 3 | 4 | * Obstacle avoidance within safe corridor 5 | * Satisfy curvature constraints (kappa) 6 | 7 | ## Updates 8 | * April 5,2025 9 | 10 | ## Dependencies 11 | * Eigen3 12 | * ompl 1.6.0 13 | 14 | ## Examples 15 | ![](./images/clfh3-s8ty4.gif) 16 | 17 | ## Reference 18 | > [1] Z. Wang, X. Zhou, C. Xu and F. Gao, "Geometrically Constrained Trajectory Optimization for Multicopters," in IEEE Transactions on Robotics, vol. 38, no. 5, pp. 3259-3278, Oct. 2022, doi: 10.1109/TRO.2022.3160022. 19 | > [2] Z. Han et al., "An Efficient Spatial-Temporal Trajectory Planner for Autonomous Vehicles in Unstructured Environments," in IEEE Transactions on Intelligent Transportation Systems, vol. 25, no. 2, pp. 1797-1814, Feb. 2024, doi: 10.1109/TITS.2023.3315320. 20 | > [3] S. Liu, M. Watterson, K. Mohta, K. Sun, S. Bhattacharya, C.J. Taylor and V. Kumar. Planning Dynamically Feasible Trajectories for Quadrotors using Safe Flight Corridors in 3-D Complex Environments. ICRA 2017. 21 | -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | /opt/ros/noetic/share/catkin/cmake/toplevel.cmake -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.0) 2 | project(decomp_util) 3 | set(CMAKE_EXPORT_COMPILE_COMMANDS True) 4 | 5 | # set default build type 6 | # set(CMAKE_BUILD_TYPE Debug) 7 | set(CMAKE_BUILD_TYPE Release) 8 | 9 | set(BUILD_SHARED_LIBS ON) 10 | 11 | find_package(Eigen3 REQUIRED) 12 | find_package(Boost REQUIRED) 13 | include_directories(${EIGEN3_INCLUDE_DIRS} include) 14 | find_package(catkin REQUIRED) 15 | 16 | catkin_package( 17 | INCLUDE_DIRS include ${EIGEN3_INCLUDE_DIRS} ${Boost_LIBRARIES} 18 | ) 19 | 20 | add_executable(test_seed_decomp test/test_seed_decomp.cpp) 21 | target_link_libraries(test_seed_decomp ${Boost_LIBRARIES}) 22 | add_test(test_seed_decomp test_seed_decomp) 23 | 24 | add_executable(test_line_segment test/test_line_segment.cpp) 25 | target_link_libraries(test_line_segment ${Boost_LIBRARIES}) 26 | add_test(test_line_segment test_line_segment ${CMAKE_SOURCE_DIR}/data/obstacles.txt) 27 | 28 | add_executable(test_ellipsoid_decomp test/test_ellipsoid_decomp.cpp) 29 | target_link_libraries(test_ellipsoid_decomp ${Boost_LIBRARIES}) 30 | add_test(test_ellipsoid_decomp test_ellipsoid_decomp ${CMAKE_SOURCE_DIR}/data/obstacles.txt) 31 | 32 | add_executable(test_iterative_decomp test/test_iterative_decomp.cpp) 33 | target_link_libraries(test_iterative_decomp ${Boost_LIBRARIES}) 34 | add_test(test_iterative_decomp test_iterative_decomp ${CMAKE_SOURCE_DIR}/data/obstacles.txt) 35 | 36 | install(FILES "${PROJECT_NAME}Config.cmake" "${PROJECT_NAME}ConfigVersion.cmake" 37 | DESTINATION "share/${PROJECT_NAME}/cmake") 38 | 39 | install(TARGETS 40 | RUNTIME DESTINATION bin 41 | LIBRARY DESTINATION lib 42 | ARCHIVE DESTINATION lib) 43 | 44 | install(DIRECTORY include/decomp_basis include/decomp_geometry include/decomp_util 45 | DESTINATION include) 46 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2017, sikang 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/README.md: -------------------------------------------------------------------------------- 1 | # MRSL Decomputil Library v1.0 2 | [![wercker status](https://app.wercker.com/status/89a66f8c94c00db95dc056bae099adb3/s/master "wercker status")](https://app.wercker.com/project/byKey/89a66f8c94c00db95dc056bae099adb3) 3 | - - - 4 | A header only c++ library for fast convex decomposition. In the basic pipeline, it implements ellipsoid based regional inflation to model free space from a given path inside a point cloud. 5 | Detials of the algorithm is proposed in ["S. Liu, M. Watterson, K. Mohta, K. Sun, S. Bhattacharya, C.J. Taylor and V. Kumar. Planning Dynamically Feasible Trajectories for Quadrotors using Safe Flight Corridors in 3-D Complex Environments. ICRA 2017"](http://ieeexplore.ieee.org/document/7839930/). 6 | 7 | ## Installation 8 | DecompUtil is a header only library, several test nodes are compiled during the 9 | installation. 10 | #### A) Simple cmake 11 | ```bash 12 | $ mkdir build && cd build && cmake .. && make 13 | ``` 14 | 15 | #### B) Using CATKIN (not recognizable by catkin\_make) 16 | ```bash 17 | $ cd mv decomp_util ~/catkin_ws/src 18 | $ cd ~/catkin_ws & catkin_make_isolated -DCMAKE_BUILD_TYPE=Release 19 | ``` 20 | 21 | #### CTest 22 | To check if everything is installed properlly: 23 | ```bash 24 | $ make test 25 | ``` 26 | 27 | #### Include in other projects: 28 | To link this lib properly, add following in the `CMakeLists.txt` 29 | ``` 30 | find_package(decomp_util REQUIRED) 31 | include_directories(${DECOMP_UTIL_INCLUDE_DIRS}) 32 | ``` 33 | 34 | ## Examples 35 | The examples of using `SeedDecomp2D`, `LineSegment2D`, `EllipsoidDecomp2D` and 36 | `IterativeDecomp2D` are plotted as followings: 37 | 38 | SeedDecomp2D | LineSegment2D | EllipsoidDecomp2D | IterativeDecomp2D 39 | :----------- | :------------ | :---------------- | :---------------- 40 | | | | 41 | 42 | 43 | The corresponding code for testing can be found in the `test` folder. 44 | 45 | ## Doxygen 46 | For more details, please refer to https://sikang.github.io/DecompUtil/index.html 47 | 48 | ## ROS 49 | The ROS wrapper for easier use of this package can be found in [`DecompROS`](https://github.com/sikang/DecompROS.git). 50 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/data/example1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example1.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/data/example2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example2.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/data/example3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example3.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/data/example4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example4.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/data/obstacles.txt: -------------------------------------------------------------------------------- 1 | -0.2 1.5 2 | 0 1.5 3 | 0 1 4 | 1 0 5 | 1.8 0 6 | 0.8 -1 7 | -0.5 -0.5 8 | -0.75 -0.5 9 | -1 -0.5 10 | -1 0.8 11 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/arrowdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/arrowdown.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/arrowright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/arrowright.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/bc_s.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/bdwn.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/classDecompBase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classDecompBase.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/classEllipsoidDecomp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classEllipsoidDecomp.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/classIterativeDecomp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classIterativeDecomp.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/classLineSegment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classLineSegment.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/classSeedDecomp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classSeedDecomp.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/closed.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/dir_13e138d54eb8818da29c3992edef070a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | MRSL DecompUtil Library: test Directory Reference 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 |
21 |
22 | 23 | 24 | 25 | 31 | 32 | 33 |
26 |
MRSL DecompUtil Library 27 |  0.1 28 |
29 |
An implementaion of convex decomposition over point cloud
30 |
34 |
35 | 36 | 37 | 40 | 63 | 69 | 70 |
74 |
75 | 76 | 77 |
78 | 81 |
82 | 83 | 87 |
88 |
89 |
90 |
test Directory Reference
91 |
92 |
93 | 94 | 96 |

95 | Files

97 |
98 | 99 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/dir_d44c64559bbebec7f509842c48db8b23.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | MRSL DecompUtil Library: include Directory Reference 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 |
21 |
22 | 23 | 24 | 25 | 31 | 32 | 33 |
26 |
MRSL DecompUtil Library 27 |  0.1 28 |
29 |
An implementaion of convex decomposition over point cloud
30 |
34 |
35 | 36 | 37 | 40 | 63 | 69 | 70 |
74 |
75 | 76 | 77 |
78 | 81 |
82 | 83 | 87 |
88 |
89 |
90 |
include Directory Reference
91 |
92 |
93 | 94 | 96 |

95 | Directories

97 |
98 | 99 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/doc.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/doxygen.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/dynsections.js: -------------------------------------------------------------------------------- 1 | function toggleVisibility(linkObj) 2 | { 3 | var base = $(linkObj).attr('id'); 4 | var summary = $('#'+base+'-summary'); 5 | var content = $('#'+base+'-content'); 6 | var trigger = $('#'+base+'-trigger'); 7 | var src=$(trigger).attr('src'); 8 | if (content.is(':visible')===true) { 9 | content.hide(); 10 | summary.show(); 11 | $(linkObj).addClass('closed').removeClass('opened'); 12 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 13 | } else { 14 | content.show(); 15 | summary.hide(); 16 | $(linkObj).removeClass('closed').addClass('opened'); 17 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 18 | } 19 | return false; 20 | } 21 | 22 | function updateStripes() 23 | { 24 | $('table.directory tr'). 25 | removeClass('even').filter(':visible:even').addClass('even'); 26 | } 27 | 28 | function toggleLevel(level) 29 | { 30 | $('table.directory tr').each(function() { 31 | var l = this.id.split('_').length-1; 32 | var i = $('#img'+this.id.substring(3)); 33 | var a = $('#arr'+this.id.substring(3)); 34 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['add',['add',['../structPolyhedron.html#a1efa5c7b822945d37c93a38667f8d04d',1,'Polyhedron']]], 4 | ['add_5flocal_5fbbox',['add_local_bbox',['../classLineSegment.html#ac572aa41bea2d3c706d3dd6a1bb24e57',1,'LineSegment::add_local_bbox()'],['../classSeedDecomp.html#a0de774b2c94a41f84a6e73a8eefd8e8b',1,'SeedDecomp::add_local_bbox()']]], 5 | ['aff2f',['Aff2f',['../data__type_8h.html#a3b95b3d43bb8590852e0e74abaff3c6a',1,'data_type.h']]], 6 | ['aff3f',['Aff3f',['../data__type_8h.html#a99980a710976449f0a9d3d2ae8b8be87',1,'data_type.h']]], 7 | ['ansi_5fcolor_5fblue',['ANSI_COLOR_BLUE',['../data__type_8h.html#aca16e6a49eb51333c5fd3eee19487315',1,'data_type.h']]], 8 | ['ansi_5fcolor_5fcyan',['ANSI_COLOR_CYAN',['../data__type_8h.html#a8d0b0043e152438bb39b918a1f98c65f',1,'data_type.h']]], 9 | ['ansi_5fcolor_5fgreen',['ANSI_COLOR_GREEN',['../data__type_8h.html#a966c72d8d733c7734c6c784753d894c7',1,'data_type.h']]], 10 | ['ansi_5fcolor_5fmagenta',['ANSI_COLOR_MAGENTA',['../data__type_8h.html#acb30614ba1535da5b9d0c490b3c10515',1,'data_type.h']]], 11 | ['ansi_5fcolor_5fred',['ANSI_COLOR_RED',['../data__type_8h.html#a34995b955465f6bbb37c359173d50477',1,'data_type.h']]], 12 | ['ansi_5fcolor_5freset',['ANSI_COLOR_RESET',['../data__type_8h.html#a92a364c2b863dde1a024a77eac2a5b3b',1,'data_type.h']]], 13 | ['ansi_5fcolor_5fyellow',['ANSI_COLOR_YELLOW',['../data__type_8h.html#a5a123b382640b3aa65dd5db386002fbc',1,'data_type.h']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['c',['C',['../structEllipsoid.html#a512359754637b8048a49b291ad7be957',1,'Ellipsoid']]], 4 | ['cal_5fclosest_5fdist',['cal_closest_dist',['../classIterativeDecomp.html#a6df4c75ba768e0b0866ab0de79955639',1,'IterativeDecomp']]], 5 | ['cal_5fnormals',['cal_normals',['../structPolyhedron.html#aaf89b0bd80d59b3ff4c7f40b3872e2f3',1,'Polyhedron']]], 6 | ['cal_5fvertices',['cal_vertices',['../geometric__utils_8h.html#a8b4b27d3fcc8d4035d9b61a26215fd59',1,'geometric_utils.h']]], 7 | ['closest_5fhyperplane',['closest_hyperplane',['../structEllipsoid.html#a7dcd9a92214baad9750c8d8909e22ffc',1,'Ellipsoid']]], 8 | ['closest_5fpoint',['closest_point',['../structEllipsoid.html#ad2c7ee812c96ff94a1a44ddc6a7044b8',1,'Ellipsoid']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2_5fto_5frotation',['vec2_to_rotation',['../geometric__utils_8h.html#aa91b5d566f48c28dff0d9aa08b4abdc2',1,'geometric_utils.h']]], 4 | ['vec2f',['Vec2f',['../data__type_8h.html#a135c596de9b80bec15985876ebd5036e',1,'data_type.h']]], 5 | ['vec2i',['Vec2i',['../data__type_8h.html#a08412347a26b00366a9d576672cce68d',1,'data_type.h']]], 6 | ['vec3f',['Vec3f',['../data__type_8h.html#afd53e073786661e24985c48b4ef92fcb',1,'data_type.h']]], 7 | ['vec3i',['Vec3i',['../data__type_8h.html#a27cc7cd350b4919c77a6803461feb516',1,'data_type.h']]], 8 | ['vec4f',['Vec4f',['../data__type_8h.html#a885809dc84c0c55d44fe4836f5cfa39b',1,'data_type.h']]], 9 | ['vec6f',['Vec6f',['../data__type_8h.html#a940b1af907878e3cb6d2f7694730ee01',1,'data_type.h']]], 10 | ['vec_5fe',['vec_E',['../data__type_8h.html#a30c607180de5bc1b7c30f5cbaf9b188b',1,'data_type.h']]], 11 | ['vec_5fvec2f',['vec_Vec2f',['../data__type_8h.html#af640446aaa0ada84a270bd5639b36a7d',1,'data_type.h']]], 12 | ['vec_5fvec2i',['vec_Vec2i',['../data__type_8h.html#a79168c9f029798876a1093e0e53bc36b',1,'data_type.h']]], 13 | ['vec_5fvec3f',['vec_Vec3f',['../data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b',1,'data_type.h']]], 14 | ['vec_5fvec3i',['vec_Vec3i',['../data__type_8h.html#aab99928bb9e8a58f0aeaf5d31c4866e4',1,'data_type.h']]], 15 | ['vec_5fvecf',['vec_Vecf',['../data__type_8h.html#a74599b2a677a5186ef71a2a690c6171d',1,'data_type.h']]], 16 | ['vec_5fveci',['vec_Veci',['../data__type_8h.html#ab0b0b0b007b0ba902fb040a70b3744e6',1,'data_type.h']]], 17 | ['vecdf',['VecDf',['../data__type_8h.html#af9c7300efe3567726a373210d4dbc046',1,'data_type.h']]], 18 | ['vecf',['Vecf',['../data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575',1,'data_type.h']]], 19 | ['veci',['Veci',['../data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede',1,'data_type.h']]], 20 | ['volume',['volume',['../structEllipsoid.html#a5c61a69a58ca6c09cc02267df6848633',1,'Ellipsoid']]], 21 | ['vs_5f',['vs_',['../structPolyhedron.html#ad65ac3518e69a9f99ba41d23f943034b',1,'Polyhedron']]] 22 | ]; 23 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['d',['d',['../structEllipsoid.html#a2cf6b4b66f08415c042be3064d54d6e3',1,'Ellipsoid']]], 4 | ['data_5ftype_2eh',['data_type.h',['../data__type_8h.html',1,'']]], 5 | ['data_5futils_2eh',['data_utils.h',['../data__utils_8h.html',1,'']]], 6 | ['decimal_5ft',['decimal_t',['../data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266',1,'data_type.h']]], 7 | ['decomp_5fbase_2eh',['decomp_base.h',['../decomp__base_8h.html',1,'']]], 8 | ['decompbase',['DecompBase',['../classDecompBase.html',1,'DecompBase< Dim >'],['../classDecompBase.html#a4fdc315275a421b40a84aeffacab4a5a',1,'DecompBase::DecompBase()']]], 9 | ['dilate',['dilate',['../classDecompBase.html#a8075ef9c927b23309ca1a3d4144250e5',1,'DecompBase::dilate()'],['../classEllipsoidDecomp.html#aaf4731df44249fe6ed026efa12d6bf63',1,'EllipsoidDecomp::dilate()'],['../classLineSegment.html#a3479e2467a33468749971e12aa15c46f',1,'LineSegment::dilate()'],['../classSeedDecomp.html#a94db31b5d02e4ca19f32c3a5bacc25a2',1,'SeedDecomp::dilate()']]], 10 | ['dilate_5fiter',['dilate_iter',['../classIterativeDecomp.html#ad735b75d676b2f4ee3b8f2015f95559c',1,'IterativeDecomp']]], 11 | ['dist',['dist',['../structEllipsoid.html#aa0d3bfad48b3bedb87dbc308d36f45a3',1,'Ellipsoid::dist()'],['../structHyperplane.html#add0b2123e1bb1923e25cddfb7dd62804',1,'Hyperplane::dist()']]], 12 | ['downsample',['downsample',['../classIterativeDecomp.html#a359ab6e36450d30ea16a6ad885f27648',1,'IterativeDecomp']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['eigen_5fvalue',['eigen_value',['../geometric__utils_8h.html#a0ce1d8245227b22ff06fe09915db19c5',1,'geometric_utils.h']]], 4 | ['ellipsoid',['Ellipsoid',['../structEllipsoid.html',1,'']]], 5 | ['ellipsoid_2eh',['ellipsoid.h',['../ellipsoid_8h.html',1,'']]], 6 | ['ellipsoid_5f',['ellipsoid_',['../classDecompBase.html#a58c41c590f6c92d9fa0886d4d735d7a1',1,'DecompBase']]], 7 | ['ellipsoid_5fdecomp_2eh',['ellipsoid_decomp.h',['../ellipsoid__decomp_8h.html',1,'']]], 8 | ['ellipsoiddecomp',['EllipsoidDecomp',['../classEllipsoidDecomp.html',1,'EllipsoidDecomp< Dim >'],['../classEllipsoidDecomp.html#ac6e757930647fb499d1f1ffeef01b6a4',1,'EllipsoidDecomp::EllipsoidDecomp()'],['../classEllipsoidDecomp.html#a4c9617e1e2d94ead1ec921e9af7951d0',1,'EllipsoidDecomp::EllipsoidDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]], 9 | ['epsilon_5f',['epsilon_',['../data__type_8h.html#a81ebeac2c4a6e9be147beb487779e9b5',1,'data_type.h']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['find_5fellipsoid',['find_ellipsoid',['../classLineSegment.html#a0f2e7b18d162be0481f4e5be1cea5363',1,'LineSegment::find_ellipsoid(double offset_x)'],['../classLineSegment.html#a9f97fdceff2bb935c290fb7767e3a696',1,'LineSegment::find_ellipsoid(double offset_x)']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['geometric_5futils_2eh',['geometric_utils.h',['../geometric__utils_8h.html',1,'']]], 4 | ['get_5fconstraints',['get_constraints',['../classEllipsoidDecomp.html#aa43d19fea353dfd9466f729c0c38c581',1,'EllipsoidDecomp']]], 5 | ['get_5fellipsoid',['get_ellipsoid',['../classDecompBase.html#afd3d14a14667f86456f60384df9d81fb',1,'DecompBase']]], 6 | ['get_5fellipsoids',['get_ellipsoids',['../classEllipsoidDecomp.html#a3c8bf3ede2d7be93d74239cae76495e6',1,'EllipsoidDecomp']]], 7 | ['get_5fline_5fsegment',['get_line_segment',['../classLineSegment.html#ac2de795a258c1ee25544188033ecc269',1,'LineSegment']]], 8 | ['get_5fobs',['get_obs',['../classDecompBase.html#a617f05e12b3f8dbc3b67012f5edbc577',1,'DecompBase']]], 9 | ['get_5fpath',['get_path',['../classEllipsoidDecomp.html#ad880fd3bbaa9b5ccefcbc4317bbc68a5',1,'EllipsoidDecomp']]], 10 | ['get_5fpolyhedron',['get_polyhedron',['../classDecompBase.html#a2828493d375ef02f3711942f66f399d4',1,'DecompBase']]], 11 | ['get_5fpolyhedrons',['get_polyhedrons',['../classEllipsoidDecomp.html#a111a2f74f8cc807d15e70e121bf03f7c',1,'EllipsoidDecomp']]], 12 | ['get_5fseed',['get_seed',['../classSeedDecomp.html#a06743828a81c150c7368587ee7924e98',1,'SeedDecomp']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hyperplane',['Hyperplane',['../structHyperplane.html',1,'']]], 4 | ['hyperplanes',['hyperplanes',['../structPolyhedron.html#a92118114a7bce0e799ff1c587fff04a4',1,'Polyhedron']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['inside',['inside',['../structEllipsoid.html#a6795795ed44656c324b68bf11111ab8c',1,'Ellipsoid::inside()'],['../structPolyhedron.html#a28e5b0eebab18fb8d54fb021333363ce',1,'Polyhedron::inside()'],['../structLinearConstraint.html#a23779a58e2a1094971cdcceeac3f7f74',1,'LinearConstraint::inside()']]], 4 | ['iterative_5fdecomp_2eh',['iterative_decomp.h',['../iterative__decomp_8h.html',1,'']]], 5 | ['iterativedecomp',['IterativeDecomp',['../classIterativeDecomp.html',1,'IterativeDecomp< Dim >'],['../classIterativeDecomp.html#af2649785ec5548cdf0f59e96486a2181',1,'IterativeDecomp::IterativeDecomp()'],['../classIterativeDecomp.html#a7438eb4550b447e1e5422bb99359a39d',1,'IterativeDecomp::IterativeDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['line_5fintersect',['line_intersect',['../geometric__utils_8h.html#a79027aaed3d36e00b00eb58e55d95f16',1,'geometric_utils.h']]], 4 | ['line_5fintersects',['line_intersects',['../geometric__utils_8h.html#a34493497e7d12d4a99e6b9b7cef007f8',1,'geometric_utils.h']]], 5 | ['line_5fsegment_2eh',['line_segment.h',['../line__segment_8h.html',1,'']]], 6 | ['linearconstraint',['LinearConstraint',['../structLinearConstraint.html',1,'LinearConstraint< Dim >'],['../structLinearConstraint.html#ad089df15de12c20098e34f8497212ed9',1,'LinearConstraint::LinearConstraint()'],['../structLinearConstraint.html#aa05fed6e3ac2a531078ec96c174595c7',1,'LinearConstraint::LinearConstraint(const MatDNf< Dim > &A, const VecDf &b)'],['../structLinearConstraint.html#a81d1602ce0df605f5cb3746ad56c91fd',1,'LinearConstraint::LinearConstraint(const Vecf< Dim > p0, const vec_E< Hyperplane< Dim >> &vs)']]], 7 | ['linesegment',['LineSegment',['../classLineSegment.html',1,'LineSegment< Dim >'],['../classLineSegment.html#a88f0a13c753958dcfc0040d412dcd92a',1,'LineSegment::LineSegment()'],['../classLineSegment.html#a20e5627453b54a1642bac236b41bfb60',1,'LineSegment::LineSegment(const Vecf< Dim > &p1, const Vecf< Dim > &p2)']]], 8 | ['local_5fbbox_5f',['local_bbox_',['../classDecompBase.html#a8af5e7a5c407102df57089253b35c44a',1,'DecompBase']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mrsl_20decomputil_20library_20v1_2e0',['MRSL Decomputil Library v1.0',['../index.html',1,'']]], 4 | ['mat2f',['Mat2f',['../data__type_8h.html#a5503e9ed3faaa114b9611829fb322981',1,'data_type.h']]], 5 | ['mat3f',['Mat3f',['../data__type_8h.html#a231e0258efbae239a7cdfbd52442f06e',1,'data_type.h']]], 6 | ['mat4f',['Mat4f',['../data__type_8h.html#ad2b84927631f460dbf9862f63d624e09',1,'data_type.h']]], 7 | ['mat6f',['Mat6f',['../data__type_8h.html#a09f49eaed626a21b73aaee4c33e6fa45',1,'data_type.h']]], 8 | ['matd2f',['MatD2f',['../data__type_8h.html#a2de422e2e68d8cecbfb1814e07e9a292',1,'data_type.h']]], 9 | ['matd3f',['MatD3f',['../data__type_8h.html#a9c901cc0e1d9f03aab4aa4ea587517da',1,'data_type.h']]], 10 | ['matdf',['MatDf',['../data__type_8h.html#ab13729f7d29cc8284965c7c42129a45f',1,'data_type.h']]], 11 | ['matdnf',['MatDNf',['../data__type_8h.html#a44c975fba9ebd61e295d78215b6569c3',1,'data_type.h']]], 12 | ['matf',['Matf',['../data__type_8h.html#a1eeda0bad4efd3be8cb2da1941982410',1,'data_type.h']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['n_5f',['n_',['../structHyperplane.html#a6d2871b9f869a49794b72ff433247030',1,'Hyperplane']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['obs_5f',['obs_',['../classDecompBase.html#af3afcc5ba0baa24fa1a52a08138fb67b',1,'DecompBase']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['p1_5f',['p1_',['../classLineSegment.html#a6c5b5bfafd4b8fd717578f53202a936c',1,'LineSegment']]], 4 | ['p2_5f',['p2_',['../classLineSegment.html#a7fb44056def6884bdb046629c25818b6',1,'LineSegment']]], 5 | ['p_5f',['p_',['../structHyperplane.html#afec3414bc825315a9fd3af4001ee5933',1,'Hyperplane::p_()'],['../classSeedDecomp.html#af9c8208721464dc53b7c2f1c1020c0a9',1,'SeedDecomp::p_()']]], 6 | ['points_5finside',['points_inside',['../structEllipsoid.html#a70e2f50e23092af77fdc1766efa17c53',1,'Ellipsoid::points_inside()'],['../structPolyhedron.html#ac91f6e4f56758d09dd36b139249ae566',1,'Polyhedron::points_inside()']]], 7 | ['polyhedron',['Polyhedron',['../structPolyhedron.html',1,'Polyhedron< Dim >'],['../structPolyhedron.html#a8b9a5d2d44059c016486be3e3e05ddeb',1,'Polyhedron::Polyhedron()'],['../structPolyhedron.html#a54b2d009a7392830934f04f5226fc591',1,'Polyhedron::Polyhedron(const vec_E< Hyperplane< Dim >> &vs)']]], 8 | ['polyhedron_5f',['polyhedron_',['../classDecompBase.html#a21a9039cefecfe2166dc5faf8ba86a68',1,'DecompBase']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['quatf',['Quatf',['../data__type_8h.html#a4857a8f36ec316f647bfc006d4799e9a',1,'data_type.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sample',['sample',['../structEllipsoid.html#a4e7533e61f95e20a0d503e5c665eac07',1,'Ellipsoid']]], 4 | ['seed_5fdecomp_2eh',['seed_decomp.h',['../seed__decomp_8h.html',1,'']]], 5 | ['seeddecomp',['SeedDecomp',['../classSeedDecomp.html',1,'SeedDecomp< Dim >'],['../classSeedDecomp.html#ac4cb38597f35ff4b1e27a225436d54dd',1,'SeedDecomp::SeedDecomp()'],['../classSeedDecomp.html#a4e0d038e09633d1892f0a184a439c4ba',1,'SeedDecomp::SeedDecomp(const Vecf< Dim > &p)']]], 6 | ['set_5flocal_5fbbox',['set_local_bbox',['../classDecompBase.html#a43a9d473dfbcdcc3a45d21917186663b',1,'DecompBase::set_local_bbox()'],['../classEllipsoidDecomp.html#a3a98cbbe53c7d641b12bc9bb5916d8d6',1,'EllipsoidDecomp::set_local_bbox()']]], 7 | ['set_5fobs',['set_obs',['../classDecompBase.html#a53cb01307a94dc941f40f1234b676a3b',1,'DecompBase::set_obs()'],['../classEllipsoidDecomp.html#aa3ea99617acd7f626ac7e731be9bea9f',1,'EllipsoidDecomp::set_obs()']]], 8 | ['shrink',['shrink',['../classDecompBase.html#a683f4c7d5b2cc03ac736f224e9cbca2c',1,'DecompBase']]], 9 | ['signed_5fdist',['signed_dist',['../structHyperplane.html#aa25c61b6fd4a9cdf8987324897f43939',1,'Hyperplane']]], 10 | ['simplify',['simplify',['../classIterativeDecomp.html#a26f2e63081817fd284c38181bd09a3d8',1,'IterativeDecomp']]], 11 | ['sort_5fpts',['sort_pts',['../geometric__utils_8h.html#af844038aa7029551d36f807327590005',1,'geometric_utils.h']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/all_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['total_5fdistance',['total_distance',['../data__utils_8h.html#a3f82ae87bcf143405fd986be6ca44a68',1,'data_utils.h']]], 4 | ['total_5fdistance3f',['total_distance3f',['../data__utils_8h.html#a188bab5f6177f4853e7bff0d5c61cfe6',1,'data_utils.h']]], 5 | ['total_5fdistance3i',['total_distance3i',['../data__utils_8h.html#aca4035bd3287a21e2e0a8e7a5a0357f5',1,'data_utils.h']]], 6 | ['transform_5fvec',['transform_vec',['../data__utils_8h.html#ac3745ddcc3002193bbcd5caab64cd1df',1,'data_utils.h']]], 7 | ['transform_5fvec3',['transform_vec3',['../data__utils_8h.html#a79960a9e7c7bad6ec5641ed1729ad8d0',1,'data_utils.h']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['decompbase',['DecompBase',['../classDecompBase.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ellipsoid',['Ellipsoid',['../structEllipsoid.html',1,'']]], 4 | ['ellipsoiddecomp',['EllipsoidDecomp',['../classEllipsoidDecomp.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hyperplane',['Hyperplane',['../structHyperplane.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['iterativedecomp',['IterativeDecomp',['../classIterativeDecomp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['linearconstraint',['LinearConstraint',['../structLinearConstraint.html',1,'']]], 4 | ['linesegment',['LineSegment',['../classLineSegment.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['polyhedron',['Polyhedron',['../structPolyhedron.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/classes_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seeddecomp',['SeedDecomp',['../classSeedDecomp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/close.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ansi_5fcolor_5fblue',['ANSI_COLOR_BLUE',['../data__type_8h.html#aca16e6a49eb51333c5fd3eee19487315',1,'data_type.h']]], 4 | ['ansi_5fcolor_5fcyan',['ANSI_COLOR_CYAN',['../data__type_8h.html#a8d0b0043e152438bb39b918a1f98c65f',1,'data_type.h']]], 5 | ['ansi_5fcolor_5fgreen',['ANSI_COLOR_GREEN',['../data__type_8h.html#a966c72d8d733c7734c6c784753d894c7',1,'data_type.h']]], 6 | ['ansi_5fcolor_5fmagenta',['ANSI_COLOR_MAGENTA',['../data__type_8h.html#acb30614ba1535da5b9d0c490b3c10515',1,'data_type.h']]], 7 | ['ansi_5fcolor_5fred',['ANSI_COLOR_RED',['../data__type_8h.html#a34995b955465f6bbb37c359173d50477',1,'data_type.h']]], 8 | ['ansi_5fcolor_5freset',['ANSI_COLOR_RESET',['../data__type_8h.html#a92a364c2b863dde1a024a77eac2a5b3b',1,'data_type.h']]], 9 | ['ansi_5fcolor_5fyellow',['ANSI_COLOR_YELLOW',['../data__type_8h.html#a5a123b382640b3aa65dd5db386002fbc',1,'data_type.h']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/defines_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/defines_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['total_5fdistance3f',['total_distance3f',['../data__utils_8h.html#a188bab5f6177f4853e7bff0d5c61cfe6',1,'data_utils.h']]], 4 | ['total_5fdistance3i',['total_distance3i',['../data__utils_8h.html#aca4035bd3287a21e2e0a8e7a5a0357f5',1,'data_utils.h']]], 5 | ['transform_5fvec3',['transform_vec3',['../data__utils_8h.html#a79960a9e7c7bad6ec5641ed1729ad8d0',1,'data_utils.h']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['data_5ftype_2eh',['data_type.h',['../data__type_8h.html',1,'']]], 4 | ['data_5futils_2eh',['data_utils.h',['../data__utils_8h.html',1,'']]], 5 | ['decomp_5fbase_2eh',['decomp_base.h',['../decomp__base_8h.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ellipsoid_2eh',['ellipsoid.h',['../ellipsoid_8h.html',1,'']]], 4 | ['ellipsoid_5fdecomp_2eh',['ellipsoid_decomp.h',['../ellipsoid__decomp_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['geometric_5futils_2eh',['geometric_utils.h',['../geometric__utils_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['iterative_5fdecomp_2eh',['iterative_decomp.h',['../iterative__decomp_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['line_5fsegment_2eh',['line_segment.h',['../line__segment_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/files_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seed_5fdecomp_2eh',['seed_decomp.h',['../seed__decomp_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['add',['add',['../structPolyhedron.html#a1efa5c7b822945d37c93a38667f8d04d',1,'Polyhedron']]], 4 | ['add_5flocal_5fbbox',['add_local_bbox',['../classLineSegment.html#ac572aa41bea2d3c706d3dd6a1bb24e57',1,'LineSegment::add_local_bbox()'],['../classSeedDecomp.html#a0de774b2c94a41f84a6e73a8eefd8e8b',1,'SeedDecomp::add_local_bbox()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['c',['C',['../structEllipsoid.html#a512359754637b8048a49b291ad7be957',1,'Ellipsoid']]], 4 | ['cal_5fclosest_5fdist',['cal_closest_dist',['../classIterativeDecomp.html#a6df4c75ba768e0b0866ab0de79955639',1,'IterativeDecomp']]], 5 | ['cal_5fnormals',['cal_normals',['../structPolyhedron.html#aaf89b0bd80d59b3ff4c7f40b3872e2f3',1,'Polyhedron']]], 6 | ['cal_5fvertices',['cal_vertices',['../geometric__utils_8h.html#a8b4b27d3fcc8d4035d9b61a26215fd59',1,'geometric_utils.h']]], 7 | ['closest_5fhyperplane',['closest_hyperplane',['../structEllipsoid.html#a7dcd9a92214baad9750c8d8909e22ffc',1,'Ellipsoid']]], 8 | ['closest_5fpoint',['closest_point',['../structEllipsoid.html#ad2c7ee812c96ff94a1a44ddc6a7044b8',1,'Ellipsoid']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['d',['d',['../structEllipsoid.html#a2cf6b4b66f08415c042be3064d54d6e3',1,'Ellipsoid']]], 4 | ['decompbase',['DecompBase',['../classDecompBase.html#a4fdc315275a421b40a84aeffacab4a5a',1,'DecompBase']]], 5 | ['dilate',['dilate',['../classDecompBase.html#a8075ef9c927b23309ca1a3d4144250e5',1,'DecompBase::dilate()'],['../classEllipsoidDecomp.html#aaf4731df44249fe6ed026efa12d6bf63',1,'EllipsoidDecomp::dilate()'],['../classLineSegment.html#a3479e2467a33468749971e12aa15c46f',1,'LineSegment::dilate()'],['../classSeedDecomp.html#a94db31b5d02e4ca19f32c3a5bacc25a2',1,'SeedDecomp::dilate()']]], 6 | ['dilate_5fiter',['dilate_iter',['../classIterativeDecomp.html#ad735b75d676b2f4ee3b8f2015f95559c',1,'IterativeDecomp']]], 7 | ['dist',['dist',['../structEllipsoid.html#aa0d3bfad48b3bedb87dbc308d36f45a3',1,'Ellipsoid::dist()'],['../structHyperplane.html#add0b2123e1bb1923e25cddfb7dd62804',1,'Hyperplane::dist()']]], 8 | ['downsample',['downsample',['../classIterativeDecomp.html#a359ab6e36450d30ea16a6ad885f27648',1,'IterativeDecomp']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['eigen_5fvalue',['eigen_value',['../geometric__utils_8h.html#a0ce1d8245227b22ff06fe09915db19c5',1,'geometric_utils.h']]], 4 | ['ellipsoiddecomp',['EllipsoidDecomp',['../classEllipsoidDecomp.html#ac6e757930647fb499d1f1ffeef01b6a4',1,'EllipsoidDecomp::EllipsoidDecomp()'],['../classEllipsoidDecomp.html#a4c9617e1e2d94ead1ec921e9af7951d0',1,'EllipsoidDecomp::EllipsoidDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['find_5fellipsoid',['find_ellipsoid',['../classLineSegment.html#a0f2e7b18d162be0481f4e5be1cea5363',1,'LineSegment::find_ellipsoid(double offset_x)'],['../classLineSegment.html#a9f97fdceff2bb935c290fb7767e3a696',1,'LineSegment::find_ellipsoid(double offset_x)']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['get_5fconstraints',['get_constraints',['../classEllipsoidDecomp.html#aa43d19fea353dfd9466f729c0c38c581',1,'EllipsoidDecomp']]], 4 | ['get_5fellipsoid',['get_ellipsoid',['../classDecompBase.html#afd3d14a14667f86456f60384df9d81fb',1,'DecompBase']]], 5 | ['get_5fellipsoids',['get_ellipsoids',['../classEllipsoidDecomp.html#a3c8bf3ede2d7be93d74239cae76495e6',1,'EllipsoidDecomp']]], 6 | ['get_5fline_5fsegment',['get_line_segment',['../classLineSegment.html#ac2de795a258c1ee25544188033ecc269',1,'LineSegment']]], 7 | ['get_5fobs',['get_obs',['../classDecompBase.html#a617f05e12b3f8dbc3b67012f5edbc577',1,'DecompBase']]], 8 | ['get_5fpath',['get_path',['../classEllipsoidDecomp.html#ad880fd3bbaa9b5ccefcbc4317bbc68a5',1,'EllipsoidDecomp']]], 9 | ['get_5fpolyhedron',['get_polyhedron',['../classDecompBase.html#a2828493d375ef02f3711942f66f399d4',1,'DecompBase']]], 10 | ['get_5fpolyhedrons',['get_polyhedrons',['../classEllipsoidDecomp.html#a111a2f74f8cc807d15e70e121bf03f7c',1,'EllipsoidDecomp']]], 11 | ['get_5fseed',['get_seed',['../classSeedDecomp.html#a06743828a81c150c7368587ee7924e98',1,'SeedDecomp']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hyperplanes',['hyperplanes',['../structPolyhedron.html#a92118114a7bce0e799ff1c587fff04a4',1,'Polyhedron']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['inside',['inside',['../structEllipsoid.html#a6795795ed44656c324b68bf11111ab8c',1,'Ellipsoid::inside()'],['../structPolyhedron.html#a28e5b0eebab18fb8d54fb021333363ce',1,'Polyhedron::inside()'],['../structLinearConstraint.html#a23779a58e2a1094971cdcceeac3f7f74',1,'LinearConstraint::inside()']]], 4 | ['iterativedecomp',['IterativeDecomp',['../classIterativeDecomp.html#af2649785ec5548cdf0f59e96486a2181',1,'IterativeDecomp::IterativeDecomp()'],['../classIterativeDecomp.html#a7438eb4550b447e1e5422bb99359a39d',1,'IterativeDecomp::IterativeDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['line_5fintersect',['line_intersect',['../geometric__utils_8h.html#a79027aaed3d36e00b00eb58e55d95f16',1,'geometric_utils.h']]], 4 | ['line_5fintersects',['line_intersects',['../geometric__utils_8h.html#a34493497e7d12d4a99e6b9b7cef007f8',1,'geometric_utils.h']]], 5 | ['linearconstraint',['LinearConstraint',['../structLinearConstraint.html#ad089df15de12c20098e34f8497212ed9',1,'LinearConstraint::LinearConstraint()'],['../structLinearConstraint.html#aa05fed6e3ac2a531078ec96c174595c7',1,'LinearConstraint::LinearConstraint(const MatDNf< Dim > &A, const VecDf &b)'],['../structLinearConstraint.html#a81d1602ce0df605f5cb3746ad56c91fd',1,'LinearConstraint::LinearConstraint(const Vecf< Dim > p0, const vec_E< Hyperplane< Dim >> &vs)']]], 6 | ['linesegment',['LineSegment',['../classLineSegment.html#a88f0a13c753958dcfc0040d412dcd92a',1,'LineSegment::LineSegment()'],['../classLineSegment.html#a20e5627453b54a1642bac236b41bfb60',1,'LineSegment::LineSegment(const Vecf< Dim > &p1, const Vecf< Dim > &p2)']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['points_5finside',['points_inside',['../structEllipsoid.html#a70e2f50e23092af77fdc1766efa17c53',1,'Ellipsoid::points_inside()'],['../structPolyhedron.html#ac91f6e4f56758d09dd36b139249ae566',1,'Polyhedron::points_inside()']]], 4 | ['polyhedron',['Polyhedron',['../structPolyhedron.html#a8b9a5d2d44059c016486be3e3e05ddeb',1,'Polyhedron::Polyhedron()'],['../structPolyhedron.html#a54b2d009a7392830934f04f5226fc591',1,'Polyhedron::Polyhedron(const vec_E< Hyperplane< Dim >> &vs)']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sample',['sample',['../structEllipsoid.html#a4e7533e61f95e20a0d503e5c665eac07',1,'Ellipsoid']]], 4 | ['seeddecomp',['SeedDecomp',['../classSeedDecomp.html#ac4cb38597f35ff4b1e27a225436d54dd',1,'SeedDecomp::SeedDecomp()'],['../classSeedDecomp.html#a4e0d038e09633d1892f0a184a439c4ba',1,'SeedDecomp::SeedDecomp(const Vecf< Dim > &p)']]], 5 | ['set_5flocal_5fbbox',['set_local_bbox',['../classDecompBase.html#a43a9d473dfbcdcc3a45d21917186663b',1,'DecompBase::set_local_bbox()'],['../classEllipsoidDecomp.html#a3a98cbbe53c7d641b12bc9bb5916d8d6',1,'EllipsoidDecomp::set_local_bbox()']]], 6 | ['set_5fobs',['set_obs',['../classDecompBase.html#a53cb01307a94dc941f40f1234b676a3b',1,'DecompBase::set_obs()'],['../classEllipsoidDecomp.html#aa3ea99617acd7f626ac7e731be9bea9f',1,'EllipsoidDecomp::set_obs()']]], 7 | ['shrink',['shrink',['../classDecompBase.html#a683f4c7d5b2cc03ac736f224e9cbca2c',1,'DecompBase']]], 8 | ['signed_5fdist',['signed_dist',['../structHyperplane.html#aa25c61b6fd4a9cdf8987324897f43939',1,'Hyperplane']]], 9 | ['simplify',['simplify',['../classIterativeDecomp.html#a26f2e63081817fd284c38181bd09a3d8',1,'IterativeDecomp']]], 10 | ['sort_5fpts',['sort_pts',['../geometric__utils_8h.html#af844038aa7029551d36f807327590005',1,'geometric_utils.h']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['total_5fdistance',['total_distance',['../data__utils_8h.html#a3f82ae87bcf143405fd986be6ca44a68',1,'data_utils.h']]], 4 | ['transform_5fvec',['transform_vec',['../data__utils_8h.html#ac3745ddcc3002193bbcd5caab64cd1df',1,'data_utils.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/functions_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2_5fto_5frotation',['vec2_to_rotation',['../geometric__utils_8h.html#aa91b5d566f48c28dff0d9aa08b4abdc2',1,'geometric_utils.h']]], 4 | ['volume',['volume',['../structEllipsoid.html#a5c61a69a58ca6c09cc02267df6848633',1,'Ellipsoid']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/mag_sel.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
No Matches
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mrsl_20decomputil_20library_20v1_2e0',['MRSL Decomputil Library v1.0',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/search_l.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/search_m.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/search_r.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "acdefghilmnopqstv", 4 | 1: "dehilps", 5 | 2: "degils", 6 | 3: "acdefghilpstv", 7 | 4: "elnopv", 8 | 5: "admqv", 9 | 6: "at", 10 | 7: "m" 11 | }; 12 | 13 | var indexSectionNames = 14 | { 15 | 0: "all", 16 | 1: "classes", 17 | 2: "files", 18 | 3: "functions", 19 | 4: "variables", 20 | 5: "typedefs", 21 | 6: "defines", 22 | 7: "pages" 23 | }; 24 | 25 | var indexSectionLabels = 26 | { 27 | 0: "All", 28 | 1: "Classes", 29 | 2: "Files", 30 | 3: "Functions", 31 | 4: "Variables", 32 | 5: "Typedefs", 33 | 6: "Macros", 34 | 7: "Pages" 35 | }; 36 | 37 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['aff2f',['Aff2f',['../data__type_8h.html#a3b95b3d43bb8590852e0e74abaff3c6a',1,'data_type.h']]], 4 | ['aff3f',['Aff3f',['../data__type_8h.html#a99980a710976449f0a9d3d2ae8b8be87',1,'data_type.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['decimal_5ft',['decimal_t',['../data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266',1,'data_type.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mat2f',['Mat2f',['../data__type_8h.html#a5503e9ed3faaa114b9611829fb322981',1,'data_type.h']]], 4 | ['mat3f',['Mat3f',['../data__type_8h.html#a231e0258efbae239a7cdfbd52442f06e',1,'data_type.h']]], 5 | ['mat4f',['Mat4f',['../data__type_8h.html#ad2b84927631f460dbf9862f63d624e09',1,'data_type.h']]], 6 | ['mat6f',['Mat6f',['../data__type_8h.html#a09f49eaed626a21b73aaee4c33e6fa45',1,'data_type.h']]], 7 | ['matd2f',['MatD2f',['../data__type_8h.html#a2de422e2e68d8cecbfb1814e07e9a292',1,'data_type.h']]], 8 | ['matd3f',['MatD3f',['../data__type_8h.html#a9c901cc0e1d9f03aab4aa4ea587517da',1,'data_type.h']]], 9 | ['matdf',['MatDf',['../data__type_8h.html#ab13729f7d29cc8284965c7c42129a45f',1,'data_type.h']]], 10 | ['matdnf',['MatDNf',['../data__type_8h.html#a44c975fba9ebd61e295d78215b6569c3',1,'data_type.h']]], 11 | ['matf',['Matf',['../data__type_8h.html#a1eeda0bad4efd3be8cb2da1941982410',1,'data_type.h']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['quatf',['Quatf',['../data__type_8h.html#a4857a8f36ec316f647bfc006d4799e9a',1,'data_type.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/typedefs_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2f',['Vec2f',['../data__type_8h.html#a135c596de9b80bec15985876ebd5036e',1,'data_type.h']]], 4 | ['vec2i',['Vec2i',['../data__type_8h.html#a08412347a26b00366a9d576672cce68d',1,'data_type.h']]], 5 | ['vec3f',['Vec3f',['../data__type_8h.html#afd53e073786661e24985c48b4ef92fcb',1,'data_type.h']]], 6 | ['vec3i',['Vec3i',['../data__type_8h.html#a27cc7cd350b4919c77a6803461feb516',1,'data_type.h']]], 7 | ['vec4f',['Vec4f',['../data__type_8h.html#a885809dc84c0c55d44fe4836f5cfa39b',1,'data_type.h']]], 8 | ['vec6f',['Vec6f',['../data__type_8h.html#a940b1af907878e3cb6d2f7694730ee01',1,'data_type.h']]], 9 | ['vec_5fe',['vec_E',['../data__type_8h.html#a30c607180de5bc1b7c30f5cbaf9b188b',1,'data_type.h']]], 10 | ['vec_5fvec2f',['vec_Vec2f',['../data__type_8h.html#af640446aaa0ada84a270bd5639b36a7d',1,'data_type.h']]], 11 | ['vec_5fvec2i',['vec_Vec2i',['../data__type_8h.html#a79168c9f029798876a1093e0e53bc36b',1,'data_type.h']]], 12 | ['vec_5fvec3f',['vec_Vec3f',['../data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b',1,'data_type.h']]], 13 | ['vec_5fvec3i',['vec_Vec3i',['../data__type_8h.html#aab99928bb9e8a58f0aeaf5d31c4866e4',1,'data_type.h']]], 14 | ['vec_5fvecf',['vec_Vecf',['../data__type_8h.html#a74599b2a677a5186ef71a2a690c6171d',1,'data_type.h']]], 15 | ['vec_5fveci',['vec_Veci',['../data__type_8h.html#ab0b0b0b007b0ba902fb040a70b3744e6',1,'data_type.h']]], 16 | ['vecdf',['VecDf',['../data__type_8h.html#af9c7300efe3567726a373210d4dbc046',1,'data_type.h']]], 17 | ['vecf',['Vecf',['../data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575',1,'data_type.h']]], 18 | ['veci',['Veci',['../data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede',1,'data_type.h']]] 19 | ]; 20 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ellipsoid_5f',['ellipsoid_',['../classDecompBase.html#a58c41c590f6c92d9fa0886d4d735d7a1',1,'DecompBase']]], 4 | ['epsilon_5f',['epsilon_',['../data__type_8h.html#a81ebeac2c4a6e9be147beb487779e9b5',1,'data_type.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['local_5fbbox_5f',['local_bbox_',['../classDecompBase.html#a8af5e7a5c407102df57089253b35c44a',1,'DecompBase']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['n_5f',['n_',['../structHyperplane.html#a6d2871b9f869a49794b72ff433247030',1,'Hyperplane']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['obs_5f',['obs_',['../classDecompBase.html#af3afcc5ba0baa24fa1a52a08138fb67b',1,'DecompBase']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['p1_5f',['p1_',['../classLineSegment.html#a6c5b5bfafd4b8fd717578f53202a936c',1,'LineSegment']]], 4 | ['p2_5f',['p2_',['../classLineSegment.html#a7fb44056def6884bdb046629c25818b6',1,'LineSegment']]], 5 | ['p_5f',['p_',['../structHyperplane.html#afec3414bc825315a9fd3af4001ee5933',1,'Hyperplane::p_()'],['../classSeedDecomp.html#af9c8208721464dc53b7c2f1c1020c0a9',1,'SeedDecomp::p_()']]], 6 | ['polyhedron_5f',['polyhedron_',['../classDecompBase.html#a21a9039cefecfe2166dc5faf8ba86a68',1,'DecompBase']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vs_5f',['vs_',['../structPolyhedron.html#ad65ac3518e69a9f99ba41d23f943034b',1,'Polyhedron']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/splitbar.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/sync_off.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/sync_on.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_a.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_b.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_h.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_s.png -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/docs/tabs.css: -------------------------------------------------------------------------------- 1 | .tabs, .tabs2, .tabs3 { 2 | background-image: url('tab_b.png'); 3 | width: 100%; 4 | z-index: 101; 5 | font-size: 13px; 6 | font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 7 | } 8 | 9 | .tabs2 { 10 | font-size: 10px; 11 | } 12 | .tabs3 { 13 | font-size: 9px; 14 | } 15 | 16 | .tablist { 17 | margin: 0; 18 | padding: 0; 19 | display: table; 20 | } 21 | 22 | .tablist li { 23 | float: left; 24 | display: table-cell; 25 | background-image: url('tab_b.png'); 26 | line-height: 36px; 27 | list-style: none; 28 | } 29 | 30 | .tablist a { 31 | display: block; 32 | padding: 0 20px; 33 | font-weight: bold; 34 | background-image:url('tab_s.png'); 35 | background-repeat:no-repeat; 36 | background-position:right; 37 | color: #283A5D; 38 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); 39 | text-decoration: none; 40 | outline: none; 41 | } 42 | 43 | .tabs3 .tablist a { 44 | padding: 0 10px; 45 | } 46 | 47 | .tablist a:hover { 48 | background-image: url('tab_h.png'); 49 | background-repeat:repeat-x; 50 | color: #fff; 51 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 52 | text-decoration: none; 53 | } 54 | 55 | .tablist li.current a { 56 | background-image: url('tab_a.png'); 57 | background-repeat:repeat-x; 58 | color: #fff; 59 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 60 | } 61 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_basis/data_type.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file data_type.h 3 | * @brief Defines all data types used in this lib 4 | 5 | * Mostly alias from Eigen Library. 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | ///Set red font in printf funtion 16 | #ifndef ANSI_COLOR_RED 17 | #define ANSI_COLOR_RED "\x1b[1;31m" 18 | #endif 19 | ///Set green font in printf funtion 20 | #ifndef ANSI_COLOR_GREEN 21 | #define ANSI_COLOR_GREEN "\x1b[1;32m" 22 | #endif 23 | ///Set yellow font in printf funtion 24 | #ifndef ANSI_COLOR_YELLOW 25 | #define ANSI_COLOR_YELLOW "\x1b[1;33m" 26 | #endif 27 | ///Set blue font in printf funtion 28 | #ifndef ANSI_COLOR_BLUE 29 | #define ANSI_COLOR_BLUE "\x1b[1;34m" 30 | #endif 31 | ///Set magenta font in printf funtion 32 | #ifndef ANSI_COLOR_MAGENTA 33 | #define ANSI_COLOR_MAGENTA "\x1b[1;35m" 34 | #endif 35 | ///Set cyan font in printf funtion 36 | #ifndef ANSI_COLOR_CYAN 37 | #define ANSI_COLOR_CYAN "\x1b[1;36m" 38 | #endif 39 | ///Reset font color in printf funtion 40 | #ifndef ANSI_COLOR_RESET 41 | #define ANSI_COLOR_RESET "\x1b[0m" 42 | #endif 43 | 44 | #ifndef DATA_TYPE_H 45 | #define DATA_TYPE_H 46 | /*! \brief Rename the float type used in lib 47 | 48 | Default is set to be double, but user can change it to float. 49 | */ 50 | typedef double decimal_t; 51 | 52 | ///Pre-allocated std::vector for Eigen using vec_E 53 | template 54 | using vec_E = std::vector>; 55 | ///Eigen 1D float vector 56 | template 57 | using Vecf = Eigen::Matrix; 58 | ///Eigen 1D int vector 59 | template 60 | using Veci = Eigen::Matrix; 61 | ///MxN Eigen matrix 62 | template 63 | using Matf = Eigen::Matrix; 64 | ///MxN Eigen matrix with M unknown 65 | template 66 | using MatDNf = Eigen::Matrix; 67 | ///Vector of Eigen 1D float vector 68 | template 69 | using vec_Vecf = vec_E>; 70 | ///Vector of Eigen 1D int vector 71 | template 72 | using vec_Veci = vec_E>; 73 | 74 | ///Eigen 1D float vector of size 2 75 | typedef Vecf<2> Vec2f; 76 | ///Eigen 1D int vector of size 2 77 | typedef Veci<2> Vec2i; 78 | ///Eigen 1D float vector of size 3 79 | typedef Vecf<3> Vec3f; 80 | ///Eigen 1D int vector of size 3 81 | typedef Veci<3> Vec3i; 82 | ///Eigen 1D float vector of size 4 83 | typedef Vecf<4> Vec4f; 84 | ///Column vector in float of size 6 85 | typedef Vecf<6> Vec6f; 86 | 87 | ///Vector of type Vec2f. 88 | typedef vec_E vec_Vec2f; 89 | ///Vector of type Vec2i. 90 | typedef vec_E vec_Vec2i; 91 | ///Vector of type Vec3f. 92 | typedef vec_E vec_Vec3f; 93 | ///Vector of type Vec3i. 94 | typedef vec_E vec_Vec3i; 95 | 96 | ///2x2 Matrix in float 97 | typedef Matf<2, 2> Mat2f; 98 | ///3x3 Matrix in float 99 | typedef Matf<3, 3> Mat3f; 100 | ///4x4 Matrix in float 101 | typedef Matf<4, 4> Mat4f; 102 | ///6x6 Matrix in float 103 | typedef Matf<6, 6> Mat6f; 104 | 105 | ///Dynamic Nx1 Eigen float vector 106 | typedef Vecf VecDf; 107 | ///Nx2 Eigen float matrix 108 | typedef MatDNf<2> MatD2f; 109 | ///Nx3 Eigen float matrix 110 | typedef MatDNf<3> MatD3f; 111 | ///Dynamic MxN Eigen float matrix 112 | typedef Matf MatDf; 113 | 114 | ///Allias of Eigen::Affine2d 115 | typedef Eigen::Transform Aff2f; 116 | ///Allias of Eigen::Affine3d 117 | typedef Eigen::Transform Aff3f; 118 | #endif 119 | 120 | #ifndef EIGEN_QUAT 121 | #define EIGEN_QUAT 122 | ///Allias of Eigen::Quaterniond 123 | typedef Eigen::Quaternion Quatf; 124 | #endif 125 | 126 | #ifndef EIGEN_EPSILON 127 | #define EIGEN_EPSILON 128 | ///Compensate for numerical error 129 | constexpr decimal_t epsilon_ = 1e-10; // numerical calculation error 130 | #endif 131 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_basis/data_utils.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file data_utils.h 3 | * @brief Provide a few widely used function for basic type 4 | */ 5 | #ifndef DATA_UTILS_H 6 | #define DATA_UTILS_H 7 | 8 | #include 9 | 10 | ///Template for transforming a vector 11 | template 12 | vec_E transform_vec(const vec_E &t, const TF &tf) { 13 | vec_E new_t; 14 | for (const auto &it : t) 15 | new_t.push_back(tf * it); 16 | return new_t; 17 | } 18 | 19 | ///Template for calculating distance 20 | template 21 | decimal_t total_distance(const vec_E& vs){ 22 | decimal_t dist = 0; 23 | for(unsigned int i = 1; i < vs.size(); i++) 24 | dist += (vs[i] - vs[i-1]).norm(); 25 | 26 | return dist; 27 | } 28 | 29 | 30 | ///Transform all entries in a vector using given TF 31 | #define transform_vec3 transform_vec 32 | ///Sum up total distance for Vec3f 33 | #define total_distance3f total_distance 34 | ///Sum up total distance for Vec3i 35 | #define total_distance3i total_distance 36 | #endif 37 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_geometry/ellipsoid.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file ellipsoid.h 3 | * @brief Ellipsoid class 4 | */ 5 | 6 | #ifndef DECOMP_ELLIPSOID_H 7 | #define DECOMP_ELLIPSOID_H 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | template 14 | struct Ellipsoid { 15 | Ellipsoid() {} 16 | Ellipsoid(const Matf& C, const Vecf& d) : C_(C), d_(d) {} 17 | 18 | /// Calculate distance to the center 19 | decimal_t dist(const Vecf& pt) const { 20 | return (C_.inverse() * (pt - d_)).norm(); 21 | } 22 | 23 | /// Check if the point is inside, non-exclusive 24 | bool inside(const Vecf& pt) const { 25 | return dist(pt) <= 1; 26 | } 27 | 28 | /// Calculate points inside ellipsoid, non-exclusive 29 | vec_Vecf points_inside(const vec_Vecf &O) const { 30 | vec_Vecf new_O; 31 | for (const auto &it : O) { 32 | if (inside(it)) 33 | new_O.push_back(it); 34 | } 35 | return new_O; 36 | } 37 | 38 | ///Find the closest point 39 | Vecf closest_point(const vec_Vecf &O) const { 40 | Vecf pt = Vecf::Zero(); 41 | decimal_t min_dist = std::numeric_limits::max(); 42 | for (const auto &it : O) { 43 | decimal_t d = dist(it); 44 | if (d < min_dist) { 45 | min_dist = d; 46 | pt = it; 47 | } 48 | } 49 | return pt; 50 | } 51 | 52 | ///Find the closest hyperplane from the closest point 53 | Hyperplane closest_hyperplane(const vec_Vecf &O) const { 54 | const auto closest_pt = closest_point(O); 55 | const auto n = C_.inverse() * C_.inverse().transpose() * 56 | (closest_pt - d_); 57 | return Hyperplane(closest_pt, n.normalized()); 58 | } 59 | 60 | /// Sample n points along the contour 61 | template 62 | typename std::enable_if>::type 63 | sample(int num) const { 64 | vec_Vecf pts; 65 | decimal_t dyaw = M_PI*2/num; 66 | for(decimal_t yaw = 0; yaw < M_PI*2; yaw+=dyaw) { 67 | Vecf pt; 68 | pt << cos(yaw), sin(yaw); 69 | pts.push_back(C_ * pt + d_); 70 | } 71 | return pts; 72 | } 73 | 74 | void print() const { 75 | std::cout << "C: " << C_ << std::endl; 76 | std::cout << "d: " << d_ << std::endl; 77 | } 78 | 79 | /// Get ellipsoid volume 80 | decimal_t volume() const { 81 | return C_.determinant(); 82 | } 83 | 84 | /// Get C matrix 85 | Matf C() const { 86 | return C_; 87 | } 88 | 89 | /// Get center 90 | Vecf d() const { 91 | return d_; 92 | } 93 | 94 | Matf C_; 95 | Vecf d_; 96 | }; 97 | 98 | typedef Ellipsoid<2> Ellipsoid2D; 99 | 100 | typedef Ellipsoid<3> Ellipsoid3D; 101 | 102 | #endif 103 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_geometry/polyhedron.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file polygon.h 3 | * @brief Polygon class 4 | */ 5 | 6 | #ifndef DECOMP_POLYGON_H 7 | #define DECOMP_POLYGON_H 8 | 9 | #include 10 | 11 | ///Hyperplane class 12 | template 13 | struct Hyperplane { 14 | Hyperplane() {} 15 | Hyperplane(const Vecf& p, const Vecf& n) : p_(p), n_(n) {} 16 | 17 | /// Calculate the signed distance from point 18 | decimal_t signed_dist(const Vecf& pt) const { 19 | return n_.dot(pt - p_); 20 | } 21 | 22 | /// Calculate the distance from point 23 | decimal_t dist(const Vecf& pt) const { 24 | return std::abs(signed_dist(pt)); 25 | } 26 | 27 | /// Point on the plane 28 | Vecf p_; 29 | /// Normal of the plane, directional 30 | Vecf n_; 31 | }; 32 | 33 | ///Hyperplane2D: first is the point on the hyperplane, second is the normal 34 | typedef Hyperplane<2> Hyperplane2D; 35 | ///Hyperplane3D: first is the point on the hyperplane, second is the normal 36 | typedef Hyperplane<3> Hyperplane3D; 37 | 38 | 39 | ///Polyhedron class 40 | template 41 | struct Polyhedron { 42 | ///Null constructor 43 | Polyhedron() {} 44 | ///Construct from Hyperplane array 45 | Polyhedron(const vec_E>& vs) : vs_(vs) {} 46 | 47 | 48 | ///Append Hyperplane 49 | void add(const Hyperplane& v) { 50 | vs_.push_back(v); 51 | } 52 | 53 | /// Check if the point is inside polyhedron, non-exclusive 54 | bool inside(const Vecf& pt) const { 55 | for (const auto& v : vs_) { 56 | if (v.signed_dist(pt) > epsilon_) { 57 | //printf("rejected pt: (%f, %f), d: %f\n",pt(0), pt(1), v.signed_dist(pt)); 58 | return false; 59 | } 60 | } 61 | return true; 62 | } 63 | 64 | /// Calculate points inside polyhedron, non-exclusive 65 | vec_Vecf points_inside(const vec_Vecf &O) const { 66 | vec_Vecf new_O; 67 | for (const auto &it : O) { 68 | if (inside(it)) 69 | new_O.push_back(it); 70 | } 71 | return new_O; 72 | } 73 | 74 | /// Calculate normals, used for visualization 75 | vec_E, Vecf>> cal_normals() const { 76 | vec_E, Vecf>> ns(vs_.size()); 77 | for (size_t i = 0; i < vs_.size(); i++) 78 | ns[i] = std::make_pair(vs_[i].p_, vs_[i].n_); // fist is point, second is normal 79 | return ns; 80 | } 81 | 82 | /// Get the hyperplane array 83 | vec_E> hyperplanes() const { 84 | return vs_; 85 | } 86 | 87 | /// Hyperplane array 88 | vec_E> vs_; // normal must go outside 89 | 90 | }; 91 | 92 | ///Polyhedron2D, consists of 2D hyperplane 93 | typedef Polyhedron<2> Polyhedron2D; 94 | ///Polyhedron3D, consists of 3D hyperplane 95 | typedef Polyhedron<3> Polyhedron3D; 96 | 97 | ///[A, b] for \f$Ax < b\f$ 98 | template 99 | struct LinearConstraint { 100 | ///Null constructor 101 | LinearConstraint() {} 102 | /// Construct from \f$A, b\f$ directly, s.t \f$Ax < b\f$ 103 | LinearConstraint(const MatDNf& A, const VecDf& b) : A_(A), b_(b) {} 104 | /** 105 | * @brief Construct from a inside point and hyperplane array 106 | * @param p0 point that is inside 107 | * @param vs hyperplane array, normal should go outside 108 | */ 109 | LinearConstraint(const Vecf p0, const vec_E>& vs) { 110 | const unsigned int size = vs.size(); 111 | MatDNf A(size, Dim); 112 | VecDf b(size); 113 | 114 | for (unsigned int i = 0; i < size; i++) { 115 | auto n = vs[i].n_; 116 | decimal_t c = vs[i].p_.dot(n); 117 | if (n.dot(p0) - c > 0) { 118 | n = -n; 119 | c = -c; 120 | } 121 | A.row(i) = n; 122 | b(i) = c; 123 | } 124 | 125 | A_ = A; 126 | b_ = b; 127 | } 128 | 129 | /// Check if the point is inside polyhedron using linear constraint 130 | bool inside(const Vecf &pt) { 131 | VecDf d = A_ * pt - b_; 132 | for (unsigned int i = 0; i < d.rows(); i++) { 133 | if (d(i) > 0) 134 | return false; 135 | } 136 | return true; 137 | } 138 | 139 | /// Get \f$A\f$ matrix 140 | MatDNf A() const { return A_; } 141 | 142 | /// Get \f$b\f$ matrix 143 | VecDf b() const { return b_; } 144 | 145 | MatDNf A_; 146 | VecDf b_; 147 | }; 148 | 149 | ///LinearConstraint 2D 150 | typedef LinearConstraint<2> LinearConstraint2D; 151 | ///LinearConstraint 3D 152 | typedef LinearConstraint<3> LinearConstraint3D; 153 | 154 | #endif 155 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_util/decomp_base.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file decomp_base.h 3 | * @brief Decomp Base Class 4 | */ 5 | #ifndef DECOMP_BASE_H 6 | #define DECOMP_BASE_H 7 | 8 | #include 9 | #include 10 | //#include 11 | 12 | /** 13 | * @brief Line Segment Class 14 | * 15 | * The basic element in EllipsoidDecomp 16 | */ 17 | template 18 | class DecompBase { 19 | public: 20 | ///Null constructor 21 | DecompBase() {} 22 | /** 23 | * @brief Adding local bounding box around line seg 24 | * @param Dim Distance in corresponding axis 25 | * 26 | * This virtual bounding box is parallel to the line segment, the x,y,z axes are not w.r.t the world coordinate system, but instead, x-axis is parallel to the line, y-axis is perpendicular to the line and world z-axis, z-axis is perpendiculat to the line and y-axis 27 | */ 28 | void set_local_bbox(const Vecf& bbox) { 29 | local_bbox_ = bbox; 30 | } 31 | 32 | ///Import obstacle points 33 | void set_obs(const vec_Vecf &obs) { 34 | // only consider points inside local bbox 35 | Polyhedron vs; 36 | add_local_bbox(vs); 37 | obs_ = vs.points_inside(obs); 38 | } 39 | 40 | ///Get obstacel points 41 | vec_Vecf get_obs() const { return obs_; } 42 | 43 | ///Get ellipsoid 44 | Ellipsoid get_ellipsoid() const { return ellipsoid_; } 45 | 46 | ///Get polyhedron 47 | Polyhedron get_polyhedron() const { return polyhedron_; } 48 | 49 | /** 50 | * @brief Inflate the line segment 51 | * @param radius the offset added to the long semi-axis 52 | */ 53 | virtual void dilate(decimal_t radius = 0) = 0; 54 | 55 | /** 56 | * @brief Shrink the polyhedron 57 | * @param shrink_distance Shrink distance 58 | */ 59 | virtual void shrink(double shrink_distance) {} 60 | protected: 61 | virtual void add_local_bbox(Polyhedron &Vs) = 0; 62 | 63 | void find_polyhedron() { 64 | //**** find half-space 65 | Polyhedron Vs; 66 | vec_Vecf obs_remain = obs_; 67 | while (!obs_remain.empty()) { 68 | const auto v = ellipsoid_.closest_hyperplane(obs_remain); 69 | Vs.add(v); 70 | vec_Vecf obs_tmp; 71 | for (const auto &it : obs_remain) { 72 | if (v.signed_dist(it) < 0) 73 | obs_tmp.push_back(it); 74 | } 75 | obs_remain = obs_tmp; 76 | /* 77 | std::cout << "a: " << a.transpose() << std::endl; 78 | std::cout << "b: " << b << std::endl; 79 | */ 80 | } 81 | 82 | polyhedron_ = Vs; 83 | } 84 | 85 | /// Obstacles, input 86 | vec_Vecf obs_; 87 | 88 | /// Output ellipsoid 89 | Ellipsoid ellipsoid_; 90 | /// Output polyhedron 91 | Polyhedron polyhedron_; 92 | 93 | /// Local bounding box along the line segment 94 | Vecf local_bbox_{Vecf::Zero()}; 95 | }; 96 | #endif 97 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_util/ellipsoid_decomp.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file ellipsoid_decomp.h 3 | * @brief EllipsoidDecomp Class 4 | */ 5 | #ifndef ELLIPSOID_DECOMP_H 6 | #define ELLIPSOID_DECOMP_H 7 | 8 | #include 9 | #include 10 | 11 | /** 12 | * @brief EllipsoidDecomp Class 13 | * 14 | * EllipsoidDecomp takes input as a given path and find the Safe Flight Corridor around it using Ellipsoids 15 | */ 16 | template 17 | class EllipsoidDecomp { 18 | public: 19 | ///Simple constructor 20 | EllipsoidDecomp() {} 21 | /** 22 | * @brief Basic constructor 23 | * @param origin The origin of the global bounding box 24 | * @param dim The dimension of the global bounding box 25 | */ 26 | EllipsoidDecomp(const Vecf &origin, const Vecf &dim) { 27 | global_bbox_min_ = origin; 28 | global_bbox_max_ = origin + dim; 29 | } 30 | 31 | ///Set obstacle points 32 | void set_obs(const vec_Vecf &obs) { obs_ = &obs; } 33 | 34 | ///Set dimension of bounding box 35 | void set_local_bbox(const Vecf& bbox) { local_bbox_ = bbox; } 36 | 37 | ///Get the path that is used for dilation 38 | vec_Vecf get_path() const { return path_; } 39 | 40 | ///Get the Safe Flight Corridor 41 | vec_E> get_polyhedrons() const { return polyhedrons_; } 42 | 43 | ///Get the ellipsoids 44 | vec_E> get_ellipsoids() const { return ellipsoids_; } 45 | 46 | ///Get the constraints of SFC as \f$Ax\leq b \f$ 47 | vec_E> get_constraints() const { 48 | vec_E> constraints; 49 | constraints.resize(polyhedrons_.size()); 50 | for (unsigned int i = 0; i < polyhedrons_.size(); i++){ 51 | const Vecf pt = (path_[i] + path_[i+1])/2; 52 | constraints[i] = LinearConstraint(pt, polyhedrons_[i].hyperplanes()); 53 | } 54 | return constraints; 55 | } 56 | 57 | /** 58 | * @brief Decomposition thread 59 | * @param path The path to dilate 60 | * @param offset_x offset added to the long semi-axis, default is 0 61 | */ 62 | void dilate(const vec_Vecf &path, double offset_x = 0) { 63 | const unsigned int N = path.size() - 1; 64 | lines_.resize(N); 65 | ellipsoids_.resize(N); 66 | polyhedrons_.resize(N); 67 | 68 | for (unsigned int i = 0; i < N; i++) { 69 | lines_[i] = std::make_shared>(path[i], path[i+1]); 70 | lines_[i]->set_local_bbox(local_bbox_); 71 | lines_[i]->set_obs(*obs_); 72 | lines_[i]->dilate(offset_x); 73 | 74 | ellipsoids_[i] = lines_[i]->get_ellipsoid(); 75 | polyhedrons_[i] = lines_[i]->get_polyhedron(); 76 | } 77 | 78 | 79 | path_ = path; 80 | 81 | if(global_bbox_min_.norm() != 0 || global_bbox_max_.norm() != 0) { 82 | for(auto& it: polyhedrons_) 83 | add_global_bbox(it); 84 | } 85 | 86 | } 87 | 88 | protected: 89 | template 90 | typename std::enable_if::type 91 | add_global_bbox(Polyhedron &Vs) { 92 | //**** add bound along X, Y axis 93 | 94 | //*** X 95 | Vs.add(Hyperplane2D(Vec2f(global_bbox_max_(0), 0), Vec2f(1, 0))); 96 | Vs.add(Hyperplane2D(Vec2f(global_bbox_min_(0), 0), Vec2f(-1, 0))); 97 | //*** Y 98 | Vs.add(Hyperplane2D(Vec2f(0, global_bbox_max_(1)), Vec2f(0, 1))); 99 | Vs.add(Hyperplane2D(Vec2f(0, global_bbox_min_(1)), Vec2f(0, -1))); 100 | } 101 | 102 | template 103 | typename std::enable_if::type 104 | add_global_bbox(Polyhedron &Vs) { 105 | //**** add bound along X, Y, Z axis 106 | //*** Z 107 | Vs.add(Hyperplane3D(Vec3f(0, 0, global_bbox_max_(2)), Vec3f(0, 0, 1))); 108 | Vs.add(Hyperplane3D(Vec3f(0, 0, global_bbox_min_(2)), Vec3f(0, 0, -1))); 109 | 110 | //*** X 111 | Vs.add(Hyperplane3D(Vec3f(global_bbox_max_(0), 0, 0), Vec3f(1, 0, 0))); 112 | Vs.add(Hyperplane3D(Vec3f(global_bbox_min_(0), 0, 0), Vec3f(-1, 0, 0))); 113 | //*** Y 114 | Vs.add(Hyperplane3D(Vec3f(0, global_bbox_max_(1), 0), Vec3f(0, 1, 0))); 115 | Vs.add(Hyperplane3D(Vec3f(0, global_bbox_max_(1), 0), Vec3f(0, -1, 0))); 116 | } 117 | 118 | vec_Vecf path_; 119 | const vec_Vecf *obs_; 120 | 121 | vec_E> ellipsoids_; 122 | vec_E> polyhedrons_; 123 | std::vector>> lines_; 124 | 125 | Vecf local_bbox_{Vecf::Zero()}; 126 | Vecf global_bbox_min_{Vecf::Zero()}; // bounding box params 127 | Vecf global_bbox_max_{Vecf::Zero()}; 128 | 129 | }; 130 | 131 | typedef EllipsoidDecomp<2> EllipsoidDecomp2D; 132 | 133 | typedef EllipsoidDecomp<3> EllipsoidDecomp3D; 134 | #endif 135 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_util/iterative_decomp.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file iterative_decomp.h 3 | * @brief IterativeDecomp Class 4 | */ 5 | #ifndef ITERATIVE_DECOMP_H 6 | #define ITERATIVE_DECOMP_H 7 | 8 | #include 9 | 10 | /** 11 | * @brief IterativeDecomp Class 12 | * 13 | * Iteratively calls ElliseDecomp to form a safer Safe Flight Corridor that is away from obstacles 14 | */ 15 | template 16 | class IterativeDecomp : public EllipsoidDecomp 17 | { 18 | public: 19 | ///Simple constructor 20 | IterativeDecomp() {} 21 | /** 22 | * @brief Basic constructor 23 | * @param origin The origin of the global bounding box 24 | * @param dim The dimension of the global bounding box 25 | */ 26 | IterativeDecomp(const Vecf &origin, const Vecf &dim) : 27 | EllipsoidDecomp(origin, dim) {} 28 | /** 29 | * @brief Decomposition thread 30 | * @param path_raw The path to dilate 31 | * @param iter_num Max iteration number 32 | * @param offset_x offset added to the long semi-axis, default is 0 33 | * @param res Resolution to downsample the path 34 | */ 35 | void dilate_iter(const vec_Vecf &path_raw, int iter_num = 5, 36 | decimal_t res = 0, decimal_t offset_x = 0) { 37 | vec_Vecf path = res > 0 ? downsample(path_raw, res) : path_raw; 38 | this->dilate(path, offset_x); 39 | vec_Vecf new_path = simplify(path); 40 | for (int i = 0; i < iter_num; i++) { 41 | if (new_path.size() == path.size()) 42 | break; 43 | else { 44 | path = new_path; 45 | this->dilate(path, offset_x); 46 | new_path = simplify(path); 47 | } 48 | } 49 | } 50 | 51 | protected: 52 | /// Uniformly sample path into many segments 53 | vec_Vecf downsample(const vec_Vecf &ps, decimal_t d) { 54 | // subdivide according to length 55 | if (ps.size() < 2) 56 | return ps; 57 | vec_Vecf path; 58 | for (unsigned int i = 1; i < ps.size(); i++) { 59 | decimal_t dist = (ps[i] - ps[i - 1]).norm(); 60 | int cnt = std::ceil(dist / d); 61 | for (int j = 0; j < cnt; j++) 62 | path.push_back(ps[i - 1] + j * (ps[i] - ps[i - 1]) / cnt); 63 | } 64 | path.push_back(ps.back()); 65 | return path; 66 | } 67 | 68 | /// Get closest distance 69 | decimal_t cal_closest_dist(const Vecf& pt, const Polyhedron& vs){ 70 | decimal_t dist = std::numeric_limits::infinity(); 71 | for(const auto& it: vs.hyperplanes()){ 72 | decimal_t d = std::abs(it.n_.dot(pt - it.p_)); 73 | if(d < dist) 74 | dist = d; 75 | } 76 | return dist; 77 | } 78 | 79 | /// Remove redundant waypoints 80 | vec_Vecf simplify(const vec_Vecf& path) { 81 | if(path.size() <= 2) 82 | return path; 83 | 84 | Vecf ref_pt = path.front(); 85 | vec_Vecf new_path; 86 | new_path.push_back(ref_pt); 87 | 88 | for(size_t i = 2; i < path.size(); i ++){ 89 | if(this->polyhedrons_[i-1].inside(ref_pt) && 90 | cal_closest_dist(ref_pt, this->polyhedrons_[i-1]) > 0.1) { 91 | } 92 | else{ 93 | ref_pt = path[i-1]; 94 | new_path.push_back(ref_pt); 95 | } 96 | } 97 | new_path.push_back(path.back()); 98 | return new_path; 99 | } 100 | }; 101 | 102 | typedef IterativeDecomp<2> IterativeDecomp2D; 103 | 104 | typedef IterativeDecomp<3> IterativeDecomp3D; 105 | #endif 106 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/include/decomp_util/seed_decomp.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file seed_decomp.h 3 | * @brief SeedDecomp Class 4 | */ 5 | #ifndef SEED_DECOMP_H 6 | #define SEED_DECOMP_H 7 | 8 | #include 9 | 10 | /** 11 | * @brief Seed Decomp Class 12 | * 13 | * Dilate around the given point 14 | */ 15 | template 16 | class SeedDecomp : public DecompBase { 17 | public: 18 | ///Simple constructor 19 | SeedDecomp() {}; 20 | /** 21 | * @brief Basic constructor 22 | * @param p1 One end of the line seg 23 | * @param p2 The other end of the line seg 24 | */ 25 | SeedDecomp(const Vecf &p) : p_(p) {} 26 | /** 27 | * @brief Inflate the seed with a sphere 28 | * @param radius Robot radius 29 | */ 30 | void dilate(decimal_t radius) { 31 | this->ellipsoid_ = Ellipsoid(radius * Matf::Identity(), p_); 32 | this->find_polyhedron(); 33 | add_local_bbox(this->polyhedron_); 34 | } 35 | 36 | /// Get the center 37 | Vecf get_seed() const { 38 | return p_; 39 | } 40 | 41 | protected: 42 | ///Add the bounding box 43 | void add_local_bbox(Polyhedron &Vs) { 44 | if(this->local_bbox_.norm() == 0) 45 | return; 46 | 47 | //**** virtual walls x-y-z 48 | Vecf dir = Vecf::UnitX(); 49 | Vecf dir_h = Vecf::UnitY(); 50 | 51 | Vecf pp1 = p_ + dir_h * this->local_bbox_(1); 52 | Vecf pp2 = p_ - dir_h * this->local_bbox_(1); 53 | Vs.add(Hyperplane(pp1, dir_h)); 54 | Vs.add(Hyperplane(pp2, -dir_h)); 55 | 56 | // along y 57 | Vecf pp3 = p_ + dir * this->local_bbox_(0); 58 | Vecf pp4 = p_ - dir * this->local_bbox_(0); 59 | Vs.add(Hyperplane(pp3, dir)); 60 | Vs.add(Hyperplane(pp4, -dir)); 61 | 62 | // along z 63 | if(Dim > 2) { 64 | Vecf dir_v = Vecf::UnitZ(); 65 | Vecf pp5 = p_ + dir_v * this->local_bbox_(2); 66 | Vecf pp6 = p_ - dir_v * this->local_bbox_(2); 67 | Vs.add(Hyperplane(pp5, dir_v)); 68 | Vs.add(Hyperplane(pp6, -dir_v)); 69 | } 70 | } 71 | 72 | ///Seed location 73 | Vecf p_; 74 | }; 75 | 76 | typedef SeedDecomp<2> SeedDecomp2D; 77 | 78 | typedef SeedDecomp<3> SeedDecomp3D; 79 | 80 | #endif 81 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | decomp_util 4 | 1.0.0 5 | The decomp_util package 6 | 7 | sikang 8 | 9 | BSD 3-Clause 10 | 11 | catkin 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/test/test_ellipsoid_decomp.cpp: -------------------------------------------------------------------------------- 1 | #include "txt_reader.hpp" 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | 11 | int main(int argc, char **argv) { 12 | if (argc != 2) { 13 | printf(ANSI_COLOR_RED "Input txt file required!\n" ANSI_COLOR_RESET); 14 | return -1; 15 | } 16 | 17 | // Read obstacles 18 | vec_Vec2f obs; 19 | if(!read_obs<2>(argv[1], obs)) { 20 | printf(ANSI_COLOR_RED "Cannot find input file [%s]!\n" ANSI_COLOR_RESET, 21 | argv[1]); 22 | return -1; 23 | } 24 | 25 | // Set map size 26 | const Vec2f origin(-2, -2); 27 | const Vec2f range(4, 4); 28 | 29 | // Path to dilate 30 | vec_Vec2f path; 31 | path.push_back(Vec2f(1, 1.0)); 32 | path.push_back(Vec2f(0.0, 0.0)); 33 | path.push_back(Vec2f(-1, 1.0)); 34 | 35 | // Initialize SeedDecomp2D 36 | EllipsoidDecomp2D decomp(origin, range); 37 | decomp.set_obs(obs); 38 | decomp.set_local_bbox(Vec2f(2, 2)); 39 | decomp.dilate(path, 0); 40 | 41 | // Plot the result in svg image 42 | typedef boost::geometry::model::d2::point_xy point_2d; 43 | std::ofstream svg("output.svg"); 44 | // Declare a stream and an SVG mapper 45 | boost::geometry::svg_mapper mapper(svg, 1000, 1000); 46 | 47 | // Draw the canvas 4 x 4m 48 | boost::geometry::model::polygon bound; 49 | std::vector points; 50 | points.push_back(point_2d(origin(0), origin(1))); 51 | points.push_back(point_2d(origin(0), origin(1) + range(1))); 52 | points.push_back(point_2d(origin(0) + range(0), origin(1) + range(1))); 53 | points.push_back(point_2d(origin(0) + range(0), origin(1))); 54 | points.push_back(point_2d(origin(0), origin(1))); 55 | boost::geometry::assign_points(bound, points); 56 | boost::geometry::correct(bound); 57 | 58 | mapper.add(bound); 59 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);" 60 | "stroke-width:2"); // White 61 | // Draw obstacles 62 | for(const auto& it: obs) { 63 | point_2d pt; 64 | boost::geometry::assign_values(pt, it(0), it(1)); 65 | mapper.add(pt); 66 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red 67 | } 68 | 69 | // Draw ellispoid 70 | { 71 | for(const auto& E: decomp.get_ellipsoids()) { 72 | int num = 40; // number of points on trajectory to draw 73 | boost::geometry::model::linestring line; 74 | for (const auto& it: E.sample(num)) 75 | line.push_back(point_2d(it(0), it(1))); 76 | line.push_back(line.front()); 77 | mapper.add(line); 78 | mapper.map(line, 79 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5"); 80 | } 81 | } 82 | 83 | // Draw polygon 84 | { 85 | for(const auto& poly: decomp.get_polyhedrons()) { 86 | const auto vertices = cal_vertices(poly); 87 | std::string ss("POLYGON(("); 88 | for (size_t i = 0; i < vertices.size(); i++) { 89 | ss += std::to_string(vertices[i](0)) + " " + 90 | std::to_string(vertices[i](1)); 91 | if(i == vertices.size() - 1) 92 | ss += "))"; 93 | else 94 | ss += ","; 95 | } 96 | 97 | boost::geometry::model::polygon p; 98 | boost::geometry::read_wkt(ss, p); 99 | mapper.add(p); 100 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"); 101 | } 102 | } 103 | 104 | // Draw path 105 | { 106 | boost::geometry::model::linestring line; 107 | for(const auto& it: path) 108 | line.push_back(point_2d(it(0), it(1))); 109 | mapper.add(line); 110 | mapper.map(line, 111 | "opacity:0.8;fill:none;stroke:rgb(255,0,0);stroke-width:5"); 112 | } 113 | 114 | 115 | // Write title at the lower right corner on canvas 116 | mapper.text(point_2d(1.0, -1.8), "test_ellipsoid_decomp", 117 | "fill-opacity:1.0;fill:rgb(10,10,250);"); 118 | 119 | return 0; 120 | } 121 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/test/test_iterative_decomp.cpp: -------------------------------------------------------------------------------- 1 | #include "txt_reader.hpp" 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | 11 | int main(int argc, char **argv) { 12 | if (argc != 2) { 13 | printf(ANSI_COLOR_RED "Input txt file required!\n" ANSI_COLOR_RESET); 14 | return -1; 15 | } 16 | 17 | // Read obstacles 18 | vec_Vec2f obs; 19 | if(!read_obs<2>(argv[1], obs)) { 20 | printf(ANSI_COLOR_RED "Cannot find input file [%s]!\n" ANSI_COLOR_RESET, 21 | argv[1]); 22 | return -1; 23 | } 24 | 25 | // Set map size 26 | const Vec2f origin(-2, -2); 27 | const Vec2f range(4, 4); 28 | 29 | // Path to dilate 30 | vec_Vec2f path; 31 | path.push_back(Vec2f(-1.5, 0.0)); 32 | path.push_back(Vec2f(1.5, 0.3)); 33 | 34 | // Initialize SeedDecomp2D 35 | IterativeDecomp2D decomp(origin, range); 36 | decomp.set_obs(obs); 37 | decomp.set_local_bbox(Vec2f(2, 2)); 38 | decomp.dilate_iter(path, 5, 0.3, 0.0); 39 | 40 | // Plot the result in svg image 41 | typedef boost::geometry::model::d2::point_xy point_2d; 42 | std::ofstream svg("output.svg"); 43 | // Declare a stream and an SVG mapper 44 | boost::geometry::svg_mapper mapper(svg, 1000, 1000); 45 | 46 | // Draw the canvas 4 x 4m 47 | boost::geometry::model::polygon bound; 48 | std::vector points; 49 | points.push_back(point_2d(origin(0), origin(1))); 50 | points.push_back(point_2d(origin(0), origin(1) + range(1))); 51 | points.push_back(point_2d(origin(0) + range(0), origin(1) + range(1))); 52 | points.push_back(point_2d(origin(0) + range(0), origin(1))); 53 | points.push_back(point_2d(origin(0), origin(1))); 54 | boost::geometry::assign_points(bound, points); 55 | boost::geometry::correct(bound); 56 | 57 | mapper.add(bound); 58 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);" 59 | "stroke-width:2"); // White 60 | // Draw obstacles 61 | for(const auto& it: obs) { 62 | point_2d pt; 63 | boost::geometry::assign_values(pt, it(0), it(1)); 64 | mapper.add(pt); 65 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red 66 | } 67 | 68 | // Draw ellispoid 69 | { 70 | for(const auto& E: decomp.get_ellipsoids()) { 71 | int num = 40; // number of points on trajectory to draw 72 | boost::geometry::model::linestring line; 73 | for (const auto& it: E.sample(num)) 74 | line.push_back(point_2d(it(0), it(1))); 75 | line.push_back(line.front()); 76 | mapper.add(line); 77 | mapper.map(line, 78 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5"); 79 | } 80 | } 81 | 82 | // Draw polygon 83 | { 84 | for(const auto& poly: decomp.get_polyhedrons()) { 85 | const auto vertices = cal_vertices(poly); 86 | std::string ss("POLYGON(("); 87 | for (size_t i = 0; i < vertices.size(); i++) { 88 | ss += std::to_string(vertices[i](0)) + " " + 89 | std::to_string(vertices[i](1)); 90 | if(i == vertices.size() - 1) 91 | ss += "))"; 92 | else 93 | ss += ","; 94 | } 95 | 96 | boost::geometry::model::polygon p; 97 | boost::geometry::read_wkt(ss, p); 98 | mapper.add(p); 99 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"); 100 | } 101 | } 102 | 103 | // Draw path 104 | { 105 | boost::geometry::model::linestring line; 106 | for(const auto& it: path) 107 | line.push_back(point_2d(it(0), it(1))); 108 | mapper.add(line); 109 | mapper.map(line, 110 | "opacity:0.8;fill:none;stroke:rgb(255,0,0);stroke-width:5"); 111 | } 112 | 113 | 114 | // Write title at the lower right corner on canvas 115 | mapper.text(point_2d(1.0, -1.8), "test_iterative_decomp", 116 | "fill-opacity:1.0;fill:rgb(10,10,250);"); 117 | 118 | return 0; 119 | } 120 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/test/test_line_segment.cpp: -------------------------------------------------------------------------------- 1 | #include "txt_reader.hpp" 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | 11 | int main(int argc, char **argv) { 12 | if (argc != 2) { 13 | printf(ANSI_COLOR_RED "Input txt file required!\n" ANSI_COLOR_RESET); 14 | return -1; 15 | } 16 | 17 | // Read obstacles 18 | vec_Vec2f obs; 19 | if(!read_obs<2>(argv[1], obs)) { 20 | printf(ANSI_COLOR_RED "Cannot find input file [%s]!\n" ANSI_COLOR_RESET, 21 | argv[1]); 22 | return -1; 23 | } 24 | 25 | 26 | // Seed 27 | const Vec2f pos1(-1.5, 0.0); 28 | const Vec2f pos2(1.5, 0.3); 29 | 30 | // Initialize SeedDecomp2D 31 | LineSegment2D decomp(pos1, pos2); 32 | decomp.set_obs(obs); 33 | decomp.set_local_bbox(Vec2f(2, 2)); 34 | decomp.dilate(0); 35 | 36 | // Plot the result in svg image 37 | typedef boost::geometry::model::d2::point_xy point_2d; 38 | std::ofstream svg("output.svg"); 39 | // Declare a stream and an SVG mapper 40 | boost::geometry::svg_mapper mapper(svg, 1000, 1000); 41 | 42 | 43 | // Draw the canvas 4 x 4m 44 | boost::geometry::model::polygon bound; 45 | const double origin_x = -2; 46 | const double origin_y = -2; 47 | const double range_x = 4; 48 | const double range_y = 4; 49 | std::vector points; 50 | points.push_back(point_2d(origin_x, origin_y)); 51 | points.push_back(point_2d(origin_x, origin_y + range_y)); 52 | points.push_back(point_2d(origin_x + range_x, origin_y + range_y)); 53 | points.push_back(point_2d(origin_x + range_x, origin_y)); 54 | points.push_back(point_2d(origin_x, origin_y)); 55 | boost::geometry::assign_points(bound, points); 56 | boost::geometry::correct(bound); 57 | 58 | mapper.add(bound); 59 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);" 60 | "stroke-width:2"); // White 61 | // Draw obstacles 62 | for(const auto& it: obs) { 63 | point_2d pt; 64 | boost::geometry::assign_values(pt, it(0), it(1)); 65 | mapper.add(pt); 66 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red 67 | } 68 | 69 | // Draw ellispoid 70 | { 71 | const auto E = decomp.get_ellipsoid(); 72 | int num = 40; // number of points on trajectory to draw 73 | boost::geometry::model::linestring line; 74 | for (const auto& it: E.sample(num)) 75 | line.push_back(point_2d(it(0), it(1))); 76 | line.push_back(line.front()); 77 | mapper.add(line); 78 | mapper.map(line, 79 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5"); 80 | } 81 | 82 | // Draw polygon 83 | { 84 | const auto poly = decomp.get_polyhedron(); 85 | const auto vertices = cal_vertices(poly); 86 | std::string ss("POLYGON(("); 87 | for (size_t i = 0; i < vertices.size(); i++) { 88 | ss += std::to_string(vertices[i](0)) + " " + 89 | std::to_string(vertices[i](1)); 90 | if(i == vertices.size() - 1) 91 | ss += "))"; 92 | else 93 | ss += ","; 94 | } 95 | 96 | boost::geometry::model::polygon p; 97 | boost::geometry::read_wkt(ss, p); 98 | mapper.add(p); 99 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"); 100 | } 101 | 102 | // Draw line segment 103 | { 104 | const auto line_segment = decomp.get_line_segment(); 105 | boost::geometry::model::linestring line; 106 | for(const auto& it: line_segment) 107 | line.push_back(point_2d(it(0), it(1))); 108 | mapper.add(line); 109 | mapper.map(line, 110 | "opacity:0.8;fill:none;stroke:rgb(255,0,0);stroke-width:5"); 111 | } 112 | 113 | 114 | // Write title at the lower right corner on canvas 115 | mapper.text(point_2d(1.0, -1.8), "test_line_segment", 116 | "fill-opacity:1.0;fill:rgb(10,10,250);"); 117 | 118 | return 0; 119 | } 120 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/test/test_seed_decomp.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int main(int argc, char **argv) { 10 | // Obstacles 11 | vec_Vec2f obs; 12 | obs.push_back(Vec2f(-0.2, 1.5)); 13 | obs.push_back(Vec2f(1, 0)); 14 | obs.push_back(Vec2f(0.8, -1)); 15 | obs.push_back(Vec2f(-0.5, -0.5)); 16 | 17 | // Seed 18 | const Vec2f pos(0, 0); 19 | 20 | // Initialize SeedDecomp2D 21 | SeedDecomp2D decomp(pos); 22 | decomp.set_obs(obs); 23 | decomp.set_local_bbox(Vec2f(2, 2)); 24 | decomp.dilate(.1); 25 | 26 | // Plot the result in svg image 27 | typedef boost::geometry::model::d2::point_xy point_2d; 28 | std::ofstream svg("output.svg"); 29 | // Declare a stream and an SVG mapper 30 | boost::geometry::svg_mapper mapper(svg, 1000, 1000); 31 | 32 | 33 | // Draw the canvas 4 x 4m 34 | boost::geometry::model::polygon bound; 35 | const double origin_x = -2; 36 | const double origin_y = -2; 37 | const double range_x = 4; 38 | const double range_y = 4; 39 | std::vector points; 40 | points.push_back(point_2d(origin_x, origin_y)); 41 | points.push_back(point_2d(origin_x, origin_y + range_y)); 42 | points.push_back(point_2d(origin_x + range_x, origin_y + range_y)); 43 | points.push_back(point_2d(origin_x + range_x, origin_y)); 44 | points.push_back(point_2d(origin_x, origin_y)); 45 | boost::geometry::assign_points(bound, points); 46 | boost::geometry::correct(bound); 47 | 48 | mapper.add(bound); 49 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);" 50 | "stroke-width:2"); // White 51 | // Draw obstacles 52 | for(const auto& it: obs) { 53 | point_2d pt; 54 | boost::geometry::assign_values(pt, it(0), it(1)); 55 | mapper.add(pt); 56 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red 57 | } 58 | 59 | // Draw ellispoid 60 | { 61 | const auto E = decomp.get_ellipsoid(); 62 | int num = 40; // number of points on trajectory to draw 63 | boost::geometry::model::linestring line; 64 | for (const auto& it: E.sample(num)) 65 | line.push_back(point_2d(it(0), it(1))); 66 | line.push_back(line.front()); 67 | mapper.add(line); 68 | mapper.map(line, 69 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5"); 70 | } 71 | 72 | // Draw polygon 73 | { 74 | const auto poly = decomp.get_polyhedron(); 75 | const auto vertices = cal_vertices(poly); 76 | std::string ss("POLYGON(("); 77 | for (size_t i = 0; i < vertices.size(); i++) { 78 | ss += std::to_string(vertices[i](0)) + " " + 79 | std::to_string(vertices[i](1)); 80 | if(i == vertices.size() - 1) 81 | ss += "))"; 82 | else 83 | ss += ","; 84 | } 85 | 86 | boost::geometry::model::polygon p; 87 | boost::geometry::read_wkt(ss, p); 88 | //boost::geometry::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", p); 89 | mapper.add(p); 90 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"); 91 | } 92 | 93 | 94 | // Write title at the lower right corner on canvas 95 | mapper.text(point_2d(1.0, -1.8), "test_seed_decomp", 96 | "fill-opacity:1.0;fill:rgb(10,10,250);"); 97 | 98 | return 0; 99 | } 100 | -------------------------------------------------------------------------------- /src/DecompROS/DecompUtil/test/txt_reader.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | template 7 | bool read_obs(std::string file_name, vec_Vecf& obs) { 8 | std::ifstream myfile(file_name); 9 | if (!myfile) { 10 | std::cout << "Unable to open file: " << file_name << std::endl; 11 | return false; 12 | } 13 | 14 | if (myfile.is_open()) { 15 | std::string line; 16 | while ( getline (myfile,line) ) { 17 | ///Seperate the line by single space 18 | std::istringstream buf(line); 19 | std::istream_iterator beg(buf), end; 20 | 21 | std::vector tokens(beg, end); 22 | 23 | if(tokens.size() != Dim) { 24 | std::cout << "Invalid format!" << std::endl; 25 | std::cout << line << '\n'; 26 | return false; 27 | } 28 | 29 | ///Extract the digit value 30 | Vecf pt; 31 | for(int i = 0; i < Dim; i++) 32 | pt(i) = atof(tokens[i].c_str()); 33 | obs.push_back(pt); 34 | } 35 | myfile.close(); 36 | } 37 | 38 | return true; 39 | } 40 | -------------------------------------------------------------------------------- /src/DecompROS/LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018, sikang 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(decomp_ros_msgs) 3 | set(CMAKE_BUILD_TYPE Release) 4 | 5 | 6 | ## Compile as C++11, supported in ROS Kinetic and newer 7 | # add_compile_options(-std=c++11) 8 | 9 | ## Find catkin macros and libraries 10 | ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) 11 | ## is used, also find other catkin packages 12 | find_package(catkin REQUIRED COMPONENTS geometry_msgs message_generation) 13 | 14 | ## System dependencies are found with CMake's conventions 15 | # find_package(Boost REQUIRED COMPONENTS system) 16 | 17 | 18 | ## Uncomment this if the package has a setup.py. This macro ensures 19 | ## modules and global scripts declared therein get installed 20 | ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html 21 | # catkin_python_setup() 22 | 23 | ################################################ 24 | ## Declare ROS messages, services and actions ## 25 | ################################################ 26 | 27 | ## To declare and build messages, services or actions from within this 28 | ## package, follow these steps: 29 | ## * Let MSG_DEP_SET be the set of packages whose message types you use in 30 | ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). 31 | ## * In the file package.xml: 32 | ## * add a build_depend tag for "message_generation" 33 | ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET 34 | ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in 35 | ## but can be declared for certainty nonetheless: 36 | ## * add a exec_depend tag for "message_runtime" 37 | ## * In this file (CMakeLists.txt): 38 | ## * add "message_generation" and every package in MSG_DEP_SET to 39 | ## find_package(catkin REQUIRED COMPONENTS ...) 40 | ## * add "message_runtime" and every package in MSG_DEP_SET to 41 | ## catkin_package(CATKIN_DEPENDS ...) 42 | ## * uncomment the add_*_files sections below as needed 43 | ## and list every .msg/.srv/.action file to be processed 44 | ## * uncomment the generate_messages entry below 45 | ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) 46 | 47 | ## Generate messages in the 'msg' folder 48 | add_message_files( 49 | FILES 50 | Ellipsoid.msg 51 | EllipsoidArray.msg 52 | Polyhedron.msg 53 | PolyhedronArray.msg 54 | ) 55 | 56 | ## Generate services in the 'srv' folder 57 | # add_service_files( 58 | # FILES 59 | # Service1.srv 60 | # Service2.srv 61 | # ) 62 | 63 | ## Generate actions in the 'action' folder 64 | # add_action_files( 65 | # FILES 66 | # Action1.action 67 | # Action2.action 68 | # ) 69 | 70 | ## Generate added messages and services with any dependencies listed here 71 | generate_messages( 72 | DEPENDENCIES 73 | geometry_msgs 74 | ) 75 | 76 | include_directories( 77 | ${catkin_INCLUDE_DIRS} 78 | ) 79 | 80 | catkin_package( 81 | CATKIN_DEPENDS geometry_msgs message_runtime 82 | ) 83 | 84 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_msgs/msg/Ellipsoid.msg: -------------------------------------------------------------------------------- 1 | float64[3] d 2 | float64[9] E 3 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_msgs/msg/EllipsoidArray.msg: -------------------------------------------------------------------------------- 1 | Header header 2 | Ellipsoid[] ellipsoids 3 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_msgs/msg/Polyhedron.msg: -------------------------------------------------------------------------------- 1 | geometry_msgs/Point[] points 2 | geometry_msgs/Point[] normals #norm is an outer vector 3 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_msgs/msg/PolyhedronArray.msg: -------------------------------------------------------------------------------- 1 | Header header 2 | Polyhedron[] polyhedrons 3 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | decomp_ros_msgs 4 | 0.0.0 5 | The decomp_ros_msgs package 6 | 7 | 8 | 9 | 10 | sikang 11 | 12 | TODO 13 | 14 | catkin 15 | geometry_msgs 16 | message_generation 17 | message_runtime 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.0) 2 | project(decomp_ros_utils) 3 | set(CMAKE_EXPORT_COMPILE_COMMANDS True) 4 | # set(CMAKE_BUILD_TYPE Debug) 5 | set(CMAKE_BUILD_TYPE Release) 6 | 7 | set(CMAKE_AUTOMOC ON) 8 | 9 | find_package(catkin REQUIRED COMPONENTS rviz roscpp decomp_util decomp_ros_msgs) 10 | find_package(Eigen3 REQUIRED) 11 | include_directories( 12 | include src 13 | ${EIGEN3_INCLUDE_DIRS} 14 | ${catkin_INCLUDE_DIRS} 15 | ) 16 | 17 | ## We'll use the version that rviz used so they are compatible. 18 | message("Using Qt5 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}") 19 | find_package(Qt5 ${rviz_QT_VERSION} REQUIRED COMPONENTS Core Widgets) 20 | list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::Core) 21 | 22 | catkin_package( 23 | INCLUDE_DIRS include src ${EIGEN3_INCLUDE_DIRS} 24 | LIBRARIES decomp_rviz_plugins 25 | CATKIN_DEPENDS decomp_util decomp_ros_msgs roscpp tf rviz 26 | DEPENDS ${QT_LIBRARIES} 27 | ) 28 | 29 | add_library(decomp_rviz_plugins 30 | src/bound_visual.cpp 31 | src/mesh_visual.cpp 32 | src/vector_visual.cpp 33 | src/ellipsoid_array_visual.cpp 34 | src/ellipsoid_array_display.cpp 35 | src/polyhedron_array_display.cpp 36 | src/bound_visual.h 37 | src/mesh_visual.h 38 | src/vector_visual.h 39 | src/ellipsoid_array_visual.h 40 | src/ellipsoid_array_display.h 41 | src/polyhedron_array_display.h 42 | ) 43 | add_dependencies(decomp_rviz_plugins ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 44 | target_link_libraries(decomp_rviz_plugins ${QT_LIBRARIES} ${catkin_LIBRARIES} ${rviz_DEFAULT_PLUGIN_LIBRARIES}) 45 | 46 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/icons/classes/EllipsoidArray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/decomp_ros_utils/icons/classes/EllipsoidArray.png -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/icons/classes/PolyhedronArray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/decomp_ros_utils/icons/classes/PolyhedronArray.png -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | decomp_ros_utils 4 | 0.0.0 5 | The decomp_ros_utils package 6 | 7 | sikang 8 | 9 | TODO 10 | 11 | catkin 12 | roscpp 13 | rviz 14 | decomp_util 15 | tf 16 | decomp_ros_msgs 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/plugin_description.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | visualize decomp_ros_msgs/EllipsoidArray msg. 7 | 8 | 9 | 10 | 13 | 14 | visualize decomp_ros_msgs/PolyhedronArray msg. 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/bound_visual.cpp: -------------------------------------------------------------------------------- 1 | #include "bound_visual.h" 2 | 3 | namespace decomp_rviz_plugins { 4 | BoundVisual::BoundVisual(Ogre::SceneManager *scene_manager, 5 | Ogre::SceneNode *parent_node) { 6 | scene_manager_ = scene_manager; 7 | frame_node_ = parent_node->createChildSceneNode(); 8 | } 9 | 10 | BoundVisual::~BoundVisual() { scene_manager_->destroySceneNode(frame_node_); } 11 | 12 | void BoundVisual::setMessage(const vec_E& bds) { 13 | objs_.clear(); 14 | 15 | if (bds.empty()) 16 | return; 17 | 18 | size_t num_faces = bds.size(); 19 | objs_.resize(num_faces); 20 | for (auto &it : objs_) 21 | it.reset(new rviz::BillboardLine(scene_manager_, frame_node_)); 22 | 23 | int cnt = 0; 24 | for (const auto &vs : bds) { 25 | for (unsigned int i = 0; i <= vs.size(); i++) { 26 | if (i < vs.size()) { 27 | if(!std::isnan(vs[i](0))) 28 | objs_[cnt]->addPoint(Ogre::Vector3(vs[i](0), vs[i](1), vs[i](2))); 29 | } 30 | else { 31 | if(!std::isnan(vs[0](0))) 32 | objs_[cnt]->addPoint(Ogre::Vector3(vs[0](0), vs[0](1), vs[0](2))); 33 | } 34 | } 35 | cnt++; 36 | } 37 | } 38 | 39 | void BoundVisual::setFramePosition(const Ogre::Vector3 &position) { 40 | frame_node_->setPosition(position); 41 | } 42 | 43 | void BoundVisual::setFrameOrientation(const Ogre::Quaternion &orientation) { 44 | frame_node_->setOrientation(orientation); 45 | } 46 | 47 | void BoundVisual::setColor(float r, float g, float b, float a) { 48 | for (auto &it : objs_) 49 | it->setColor(r, g, b, a); 50 | } 51 | 52 | void BoundVisual::setScale(float s) { 53 | for (auto &it : objs_) 54 | it->setLineWidth(s); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/bound_visual.h: -------------------------------------------------------------------------------- 1 | #ifndef BOUND_VISUAL_H 2 | #define BOUND_VISUAL_H 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | 13 | namespace decomp_rviz_plugins { 14 | class BoundVisual { 15 | public: 16 | BoundVisual(Ogre::SceneManager *scene_manager, Ogre::SceneNode *parent_node); 17 | ~BoundVisual(); 18 | 19 | void setMessage(const vec_E &bds); 20 | void setFramePosition(const Ogre::Vector3 &position); 21 | void setFrameOrientation(const Ogre::Quaternion &orientation); 22 | 23 | void setColor(float r, float g, float b, float a); 24 | void setScale(float s); 25 | 26 | private: 27 | std::vector> objs_; 28 | 29 | Ogre::SceneNode *frame_node_; 30 | 31 | Ogre::SceneManager *scene_manager_; 32 | }; 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/ellipsoid_array_display.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "ellipsoid_array_display.h" 3 | 4 | namespace decomp_rviz_plugins { 5 | 6 | EllipsoidArrayDisplay::EllipsoidArrayDisplay() { 7 | color_property_ = new rviz::ColorProperty("Color", QColor(204, 51, 204), 8 | "Color of ellipsoids.", 9 | this, SLOT(updateColorAndAlpha())); 10 | alpha_property_ = new rviz::FloatProperty( 11 | "Alpha", 0.5, "0 is fully transparent, 1.0 is fully opaque.", this, 12 | SLOT(updateColorAndAlpha())); 13 | 14 | } 15 | 16 | void EllipsoidArrayDisplay::onInitialize() { 17 | MFDClass::onInitialize(); 18 | } 19 | 20 | EllipsoidArrayDisplay::~EllipsoidArrayDisplay() {} 21 | 22 | void EllipsoidArrayDisplay::reset() { 23 | MFDClass::reset(); 24 | visual_ = nullptr; 25 | } 26 | 27 | void EllipsoidArrayDisplay::updateColorAndAlpha() { 28 | float alpha = alpha_property_->getFloat(); 29 | Ogre::ColourValue color = color_property_->getOgreColor(); 30 | 31 | if (visual_) 32 | visual_->setColor(color.r, color.g, color.b, alpha); 33 | } 34 | 35 | void EllipsoidArrayDisplay::processMessage(const decomp_ros_msgs::EllipsoidArray::ConstPtr &msg) { 36 | Ogre::Quaternion orientation; 37 | Ogre::Vector3 position; 38 | if (!context_->getFrameManager()->getTransform( 39 | msg->header.frame_id, msg->header.stamp, position, orientation)) { 40 | ROS_DEBUG("Error transforming from frame '%s' to frame '%s'", 41 | msg->header.frame_id.c_str(), qPrintable(fixed_frame_)); 42 | return; 43 | } 44 | 45 | std::shared_ptr visual; 46 | visual.reset(new EllipsoidArrayVisual(context_->getSceneManager(), scene_node_)); 47 | 48 | visual->setMessage(msg); 49 | visual->setFramePosition(position); 50 | visual->setFrameOrientation(orientation); 51 | 52 | float alpha = alpha_property_->getFloat(); 53 | Ogre::ColourValue color = color_property_->getOgreColor(); 54 | visual->setColor(color.r, color.g, color.b, alpha); 55 | 56 | visual_ = visual; 57 | } 58 | 59 | } 60 | 61 | #include 62 | PLUGINLIB_EXPORT_CLASS(decomp_rviz_plugins::EllipsoidArrayDisplay, rviz::Display) 63 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/ellipsoid_array_display.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | #include 11 | #include 12 | #include "ellipsoid_array_visual.h" 13 | 14 | namespace decomp_rviz_plugins { 15 | 16 | class EllipsoidArrayVisual; 17 | 18 | class EllipsoidArrayDisplay 19 | : public rviz::MessageFilterDisplay { 20 | Q_OBJECT 21 | public: 22 | EllipsoidArrayDisplay(); 23 | ~EllipsoidArrayDisplay(); 24 | 25 | protected: 26 | void onInitialize(); 27 | 28 | void reset(); 29 | 30 | private Q_SLOTS: 31 | void updateColorAndAlpha(); 32 | 33 | private: 34 | void processMessage(const decomp_ros_msgs::EllipsoidArray::ConstPtr &msg); 35 | 36 | std::shared_ptr visual_; 37 | 38 | rviz::ColorProperty *color_property_; 39 | rviz::FloatProperty *alpha_property_; 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/ellipsoid_array_visual.cpp: -------------------------------------------------------------------------------- 1 | #include "ellipsoid_array_visual.h" 2 | 3 | namespace decomp_rviz_plugins { 4 | EllipsoidArrayVisual::EllipsoidArrayVisual(Ogre::SceneManager *scene_manager, 5 | Ogre::SceneNode *parent_node) { 6 | scene_manager_ = scene_manager; 7 | frame_node_ = parent_node->createChildSceneNode(); 8 | } 9 | 10 | EllipsoidArrayVisual::~EllipsoidArrayVisual() { 11 | scene_manager_->destroySceneNode(frame_node_); 12 | } 13 | 14 | void EllipsoidArrayVisual::setMessage(const decomp_ros_msgs::EllipsoidArray::ConstPtr &msg) { 15 | objs_.clear(); 16 | 17 | if (msg->ellipsoids.empty()) 18 | return; 19 | 20 | for (const auto& it: msg->ellipsoids) { 21 | if(std::isnan(it.d[0]) || 22 | std::isnan(it.d[1]) || 23 | std::isnan(it.d[2])) 24 | return; 25 | for (int i = 0; i < 3; i++) 26 | for (int j = 0; j < 3; j++) 27 | if(std::isnan(it.E[3 * i + j])) 28 | return; 29 | } 30 | 31 | objs_.resize(msg->ellipsoids.size()); 32 | 33 | for (auto &it : objs_) 34 | it.reset(new rviz::Shape(rviz::Shape::Type::Sphere, scene_manager_, 35 | frame_node_)); 36 | 37 | int cnt = 0; 38 | for (const auto &it : msg->ellipsoids) { 39 | Mat3f E; 40 | for (int i = 0; i < 3; i++) 41 | for (int j = 0; j < 3; j++) 42 | E(i, j) = it.E[3 * i + j]; 43 | Eigen::SelfAdjointEigenSolver es(E); 44 | 45 | Ogre::Vector3 scale(2 * es.eigenvalues()[0], 2 * es.eigenvalues()[1], 46 | 2 * es.eigenvalues()[2]); 47 | objs_[cnt]->setScale(scale); 48 | 49 | Ogre::Vector3 d(it.d[0], it.d[1], it.d[2]); 50 | objs_[cnt]->setPosition(d); 51 | 52 | Quatf q(es.eigenvectors().determinant() * es.eigenvectors()); 53 | Ogre::Quaternion o(q.w(), q.x(), q.y(), q.z()); 54 | objs_[cnt]->setOrientation(o); 55 | cnt++; 56 | } 57 | } 58 | 59 | void EllipsoidArrayVisual::setFramePosition(const Ogre::Vector3 &position) { 60 | frame_node_->setPosition(position); 61 | } 62 | 63 | void EllipsoidArrayVisual::setFrameOrientation( 64 | const Ogre::Quaternion &orientation) { 65 | frame_node_->setOrientation(orientation); 66 | } 67 | 68 | void EllipsoidArrayVisual::setColor(float r, float g, float b, float a) { 69 | for (auto &it : objs_) 70 | it->setColor(r, g, b, a); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/ellipsoid_array_visual.h: -------------------------------------------------------------------------------- 1 | #ifndef ELLIPSOIDS_VISUAL_H 2 | #define ELLIPSOIDS_VISUAL_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | 14 | namespace decomp_rviz_plugins { 15 | class EllipsoidArrayVisual { 16 | public: 17 | EllipsoidArrayVisual(Ogre::SceneManager *scene_manager, 18 | Ogre::SceneNode *parent_node); 19 | 20 | virtual ~EllipsoidArrayVisual(); 21 | 22 | void setMessage(const decomp_ros_msgs::EllipsoidArray::ConstPtr &msg); 23 | 24 | void setFramePosition(const Ogre::Vector3 &position); 25 | void setFrameOrientation(const Ogre::Quaternion &orientation); 26 | 27 | void setColor(float r, float g, float b, float a); 28 | 29 | private: 30 | std::vector> objs_; 31 | 32 | Ogre::SceneNode *frame_node_; 33 | 34 | Ogre::SceneManager *scene_manager_; 35 | }; 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/mesh_visual.cpp: -------------------------------------------------------------------------------- 1 | #include "mesh_visual.h" 2 | 3 | namespace decomp_rviz_plugins { 4 | MeshVisual::MeshVisual(Ogre::SceneManager *scene_manager, 5 | Ogre::SceneNode *parent_node) { 6 | scene_manager_ = scene_manager; 7 | frame_node_ = parent_node->createChildSceneNode(); 8 | obj_.reset(new rviz::MeshShape(scene_manager_, frame_node_)); 9 | } 10 | 11 | MeshVisual::~MeshVisual() { scene_manager_->destroySceneNode(frame_node_); } 12 | 13 | void MeshVisual::setMessage(const vec_E &bds) { 14 | obj_->clear(); 15 | 16 | if (bds.empty()) 17 | return; 18 | 19 | obj_->beginTriangles(); 20 | int free_cnt = 0; 21 | for (const auto &vs: bds) { 22 | if (vs.size() > 2) { 23 | Vec3f p0 = vs[0]; 24 | Vec3f p1 = vs[1]; 25 | Vec3f p2 = vs[2]; 26 | Vec3f n = (p2-p0).cross(p1-p0); 27 | n = n.normalized(); 28 | if(std::isnan(n(0))) 29 | n = Vec3f(0, 0, -1); 30 | 31 | int ref_cnt = free_cnt; 32 | Ogre::Vector3 normal(n(0), n(1), n(2)); 33 | for (unsigned int i = 0; i < vs.size(); i++) { 34 | obj_->addVertex(Ogre::Vector3(vs[i](0), vs[i](1), vs[i](2)), normal); 35 | if (i > 1 && i < vs.size()) 36 | obj_->addTriangle(ref_cnt, free_cnt - 1, free_cnt); 37 | free_cnt++; 38 | } 39 | } 40 | } 41 | obj_->endTriangles(); 42 | } 43 | 44 | // Position and orientation are passed through to the SceneNode. 45 | void MeshVisual::setFramePosition(const Ogre::Vector3 &position) { 46 | frame_node_->setPosition(position); 47 | } 48 | 49 | void MeshVisual::setFrameOrientation(const Ogre::Quaternion &orientation) { 50 | frame_node_->setOrientation(orientation); 51 | } 52 | 53 | void MeshVisual::setColor(float r, float g, float b, float a) { 54 | obj_->setColor(r, g, b, a); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/mesh_visual.h: -------------------------------------------------------------------------------- 1 | #ifndef MESH_VISUAL_H 2 | #define MESH_VISUAL_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | namespace decomp_rviz_plugins { 14 | class MeshVisual { 15 | public: 16 | MeshVisual(Ogre::SceneManager *scene_manager, Ogre::SceneNode *parent_node); 17 | 18 | virtual ~MeshVisual(); 19 | 20 | void setMessage(const vec_E &bds); 21 | void setFramePosition(const Ogre::Vector3 &position); 22 | void setFrameOrientation(const Ogre::Quaternion &orientation); 23 | 24 | void setColor(float r, float g, float b, float a); 25 | 26 | private: 27 | std::unique_ptr obj_; 28 | 29 | Ogre::SceneNode *frame_node_; 30 | 31 | Ogre::SceneManager *scene_manager_; 32 | }; 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/polyhedron_array_display.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | #include "mesh_visual.h" 16 | #include "bound_visual.h" 17 | #include "vector_visual.h" 18 | #include 19 | #include 20 | 21 | namespace decomp_rviz_plugins { 22 | class PolyhedronArrayDisplay 23 | : public rviz::MessageFilterDisplay { 24 | Q_OBJECT 25 | public: 26 | PolyhedronArrayDisplay(); 27 | virtual ~PolyhedronArrayDisplay(); 28 | 29 | protected: 30 | virtual void onInitialize(); 31 | 32 | virtual void reset(); 33 | 34 | private Q_SLOTS: 35 | void updateMeshColorAndAlpha(); 36 | void updateBoundColorAndAlpha(); 37 | void updateVsColorAndAlpha(); 38 | void updateState(); 39 | void updateScale(); 40 | void updateVsScale(); 41 | 42 | private: 43 | void processMessage(const decomp_ros_msgs::PolyhedronArray::ConstPtr &msg); 44 | void visualizeMessage(int state); 45 | void visualizeMesh(); 46 | void visualizeBound(); 47 | void visualizeVs(); 48 | 49 | std::shared_ptr visual_mesh_; 50 | std::shared_ptr visual_bound_; 51 | std::shared_ptr visual_vector_; 52 | 53 | rviz::ColorProperty *mesh_color_property_; 54 | rviz::ColorProperty *bound_color_property_; 55 | rviz::ColorProperty *vs_color_property_; 56 | rviz::FloatProperty *alpha_property_; 57 | rviz::FloatProperty *scale_property_; 58 | rviz::FloatProperty *vs_scale_property_; 59 | rviz::EnumProperty *state_property_; 60 | 61 | Ogre::Vector3 position_; 62 | Ogre::Quaternion orientation_; 63 | 64 | vec_E vertices_; 65 | vec_E> vs_; 66 | }; 67 | 68 | } 69 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/vector_visual.cpp: -------------------------------------------------------------------------------- 1 | #include "vector_visual.h" 2 | 3 | namespace decomp_rviz_plugins { 4 | VectorVisual::VectorVisual(Ogre::SceneManager *scene_manager, 5 | Ogre::SceneNode *parent_node) { 6 | scene_manager_ = scene_manager; 7 | frame_node_ = parent_node->createChildSceneNode(); 8 | } 9 | 10 | VectorVisual::~VectorVisual() { scene_manager_->destroySceneNode(frame_node_); } 11 | 12 | void VectorVisual::setMessage(const vec_E> &vs) { 13 | objs_.clear(); 14 | vs_ = vs; 15 | if (vs.empty()) 16 | return; 17 | objs_.resize(vs.size()); 18 | for (auto &it : objs_) 19 | it.reset(new rviz::Arrow(scene_manager_, frame_node_)); 20 | 21 | int cnt = 0; 22 | for (const auto &v : vs) { 23 | Vec3f n = v.second.normalized(); 24 | objs_[cnt]->setDirection(Ogre::Vector3(n(0), n(1), n(2))); 25 | objs_[cnt]->setPosition(Ogre::Vector3(v.first(0), v.first(1), v.first(2))); 26 | objs_[cnt]->setScale(s_ * Ogre::Vector3(1.0, 1.0, 1.0)); 27 | 28 | float d = s_ * v.second.norm(); 29 | float shaft_length = 0.7 * d; 30 | float head_length = 0.3 * d; 31 | objs_[cnt]->set(shaft_length, d / 8, head_length, d / 5); 32 | cnt ++; 33 | } 34 | } 35 | 36 | void VectorVisual::setFramePosition(const Ogre::Vector3 &position) { 37 | frame_node_->setPosition(position); 38 | } 39 | 40 | void VectorVisual::setFrameOrientation(const Ogre::Quaternion &orientation) { 41 | frame_node_->setOrientation(orientation); 42 | } 43 | 44 | void VectorVisual::setColor(float r, float g, float b, float a) { 45 | for (auto &it : objs_) 46 | it->setColor(r, g, b, a); 47 | } 48 | 49 | void VectorVisual::setScale(float s) { 50 | s_ = s; 51 | for (unsigned int i = 0; i < objs_.size(); i++){ 52 | float d = s_ * vs_[i].second.norm(); 53 | float shaft_length = 0.7 * d; 54 | float head_length = 0.3 * d; 55 | objs_[i]->set(shaft_length, d / 8, head_length, d / 5); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/DecompROS/decomp_ros_utils/src/vector_visual.h: -------------------------------------------------------------------------------- 1 | #ifndef VECTOR_VISUAL_H 2 | #define VECTOR_VISUAL_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | namespace decomp_rviz_plugins { 11 | class VectorVisual { 12 | public: 13 | VectorVisual(Ogre::SceneManager *scene_manager, Ogre::SceneNode *parent_node); 14 | ~VectorVisual(); 15 | 16 | void setMessage(const vec_E> &vs); 17 | void setFramePosition(const Ogre::Vector3 &position); 18 | void setFrameOrientation(const Ogre::Quaternion &orientation); 19 | 20 | void setColor(float r, float g, float b, float a); 21 | void setScale(float s); 22 | 23 | private: 24 | std::vector> objs_; 25 | 26 | Ogre::SceneNode *frame_node_; 27 | 28 | Ogre::SceneManager *scene_manager_; 29 | 30 | float s_ = 1.0; 31 | vec_E> vs_; 32 | }; 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/minco_curve/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | project(minco_curve) 3 | 4 | set(CMAKE_EXPORT_COMPILE_COMMANDS True) 5 | 6 | set(CMAKE_BUILD_TYPE Release) 7 | 8 | # list(APPEND CMAKE_PREFIX_PATH "/usr/local/share/ompl/cmake") 9 | # Eigen 10 | find_package(Eigen3 REQUIRED) 11 | find_package(ompl 1.6.0 REQUIRED) 12 | 13 | # glog 14 | # include(cmake/glog.cmake) 15 | # include_directories(${GLOG_INCLUDE_DIRS}) 16 | 17 | # catkin 18 | find_package(catkin REQUIRED COMPONENTS 19 | roscpp 20 | nav_msgs 21 | tf 22 | decomp_ros_utils 23 | decomp_ros_msgs 24 | decomp_util 25 | ) 26 | 27 | include_directories( 28 | include 29 | ${catkin_INCLUDE_DIRS} 30 | ${EIGEN3_INCLUDE_DIR} 31 | ) 32 | 33 | catkin_package( 34 | INCLUDE_DIRS include 35 | LIBRARIES PATH_SEARCHER_LIB 36 | CATKIN_DEPENDS nav_msgs roscpp tf decomp_ros_utils decomp_ros_msgs decomp_util 37 | # DEPENDS ${GLOG_LIBRARIES} 38 | ) 39 | 40 | add_executable(test_node src/test_node.cpp) 41 | target_link_libraries(test_node 42 | ${catkin_LIBRARIES} 43 | ompl::ompl 44 | ) 45 | -------------------------------------------------------------------------------- /src/minco_curve/include/utils/map_interface.h: -------------------------------------------------------------------------------- 1 | #ifndef MAP_INTERFACE_H 2 | #define MAP_INTERFACE_H 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | #endif -------------------------------------------------------------------------------- /src/minco_curve/launch/simple_move_base.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ; 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/minco_curve/maps/map.yaml: -------------------------------------------------------------------------------- 1 | image: slow.pgm 2 | mode: trinary 3 | resolution: 0.3 4 | origin: [0.0,0.0,0.0] 5 | negate: 0 6 | occupied_thresh: 0.65 7 | free_thresh: 0.25 -------------------------------------------------------------------------------- /src/minco_curve/maps/slow.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/minco_curve/maps/slow.pgm -------------------------------------------------------------------------------- /src/minco_curve/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | minco_curve 4 | 0.0.0 5 | The hybrid_a_star package 6 | Zhang Zhimeng 7 | BSD 8 | catkin 9 | roscpp 10 | std_msgs 11 | roscpp 12 | std_msgs 13 | roscpp 14 | std_msgs 15 | nav_msgs 16 | tf 17 | tf 18 | tf 19 | decomp_ros_msgs 20 | decomp_ros_utils 21 | decomp_util 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/minco_curve/src/test_node.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "traj_optmizer.hpp" 3 | 4 | int main(int argc, char **argv){ 5 | ros::init(argc, argv, "minco_curve"); 6 | ros::NodeHandle nh; 7 | PathPlannerSim sim(nh,10.0); 8 | ros::spin(); 9 | return 0; 10 | } --------------------------------------------------------------------------------