From 335c1f101586b907a66a900b0e16ab238e6c6020 Mon Sep 17 00:00:00 2001
From: ZbyLGsc <405540572@qq.com>
Date: Sat, 11 Jan 2020 18:03:30 +0800
Subject: [PATCH] release mapping system for local planning
---
.vscode/settings.json | 26 +
README.md | 93 +-
dyn_planner/.vscode/settings.json | 58 -
dyn_planner/bspline_opt/CMakeLists.txt | 40 -
.../include/bspline_opt/bspline_optimizer.h | 104 -
.../include/bspline_opt/non_uniform_bspline.h | 68 -
dyn_planner/bspline_opt/package.xml | 70 -
.../bspline_opt/src/bspline_optimizer.cpp | 364 --
.../bspline_opt/src/non_uniform_bspline.cpp | 714 ----
dyn_planner/log.md | 31 -
dyn_planner/path_searching/CMakeLists.txt | 39 -
.../include/path_searching/astar.h | 173 -
.../path_searching/kinodynamic_astar.h | 186 -
dyn_planner/path_searching/package.xml | 70 -
dyn_planner/path_searching/src/astar.cpp | 339 --
.../path_searching/src/kinodynamic_astar.cpp | 747 ----
dyn_planner/plan_env/CMakeLists.txt | 40 -
.../include/plan_env/edt_environment.h | 49 -
.../plan_env/include/plan_env/sdf_map.h | 105 -
dyn_planner/plan_env/package.xml | 68 -
dyn_planner/plan_env/src/edt_environment.cpp | 63 -
dyn_planner/plan_env/src/sdf_map.cpp | 709 ---
dyn_planner/plan_manage/CMakeLists.txt | 64 -
dyn_planner/plan_manage/README.md | 2 -
dyn_planner/plan_manage/config/traj.rviz | 551 ---
.../include/plan_manage/backward.hpp | 3804 -----------------
.../include/plan_manage/dyn_planner_manager.h | 87 -
.../include/plan_manage/planning_fsm.h | 102 -
dyn_planner/plan_manage/launch/rviz.launch | 3 -
.../plan_manage/launch/simulation.launch | 103 -
dyn_planner/plan_manage/launch/simulator.xml | 79 -
.../plan_manage/launch/test_collision.launch | 51 -
dyn_planner/plan_manage/msg/Bspline.msg | 6 -
dyn_planner/plan_manage/package.xml | 77 -
.../plan_manage/script/polyfit_predict.py | 80 -
dyn_planner/plan_manage/script/traj_opt.py | 78 -
.../plan_manage/src/dyn_planner_manager.cpp | 220 -
.../plan_manage/src/dyn_planner_node.cpp | 29 -
dyn_planner/plan_manage/src/planning_fsm.cpp | 384 --
dyn_planner/plan_manage/src/traj_server.cpp | 243 --
dyn_planner/traj_utils/CMakeLists.txt | 38 -
.../traj_utils/planning_visualization.h | 53 -
dyn_planner/traj_utils/package.xml | 71 -
.../traj_utils/src/planning_visualization.cpp | 79 -
fast_planner | 1 +
files/bib.txt | 10 +
{img => files}/exp1.gif | Bin
{img => files}/exp2.gif | Bin
{img => files}/exp3.gif | Bin
{img => files}/title.png | Bin
uav_simulator/README.md | 2 -
.../odom_visualization/CMakeLists.txt | 0
.../{ => Utils}/odom_visualization/Makefile | 0
.../odom_visualization/bin/odom_visualization | Bin
.../bin/odom_visualization_vicon45 | Bin
.../odom_visualization/build/CATKIN_IGNORE | 0
.../odom_visualization/build/CMakeCache.txt | 0
.../CMakeFiles/2.8.12.2/CMakeCCompiler.cmake | 0
.../2.8.12.2/CMakeCXXCompiler.cmake | 0
.../2.8.12.2/CMakeDetermineCompilerABI_C.bin | Bin
.../CMakeDetermineCompilerABI_CXX.bin | Bin
.../CMakeFiles/2.8.12.2/CMakeSystem.cmake | 0
.../2.8.12.2/CompilerIdC/CMakeCCompilerId.c | 0
.../CMakeFiles/2.8.12.2/CompilerIdC/a.out | Bin
.../CompilerIdCXX/CMakeCXXCompilerId.cpp | 0
.../CMakeFiles/2.8.12.2/CompilerIdCXX/a.out | Bin
.../CMakeDirectoryInformation.cmake | 0
.../build/CMakeFiles/CMakeError.log | 0
.../build/CMakeFiles/CMakeOutput.log | 0
.../build/CMakeFiles/CMakeRuleHashes.txt | 0
.../build/CMakeFiles/Makefile.cmake | 0
.../build/CMakeFiles/Makefile2 | 0
.../ROSBUILD_genmsg_cpp.dir/DependInfo.cmake | 0
.../ROSBUILD_genmsg_cpp.dir/build.make | 0
.../ROSBUILD_genmsg_cpp.dir/cmake_clean.cmake | 0
.../ROSBUILD_genmsg_cpp.dir/progress.make | 0
.../ROSBUILD_genmsg_lisp.dir/DependInfo.cmake | 0
.../ROSBUILD_genmsg_lisp.dir/build.make | 0
.../cmake_clean.cmake | 0
.../ROSBUILD_genmsg_lisp.dir/progress.make | 0
.../ROSBUILD_gensrv_cpp.dir/DependInfo.cmake | 0
.../ROSBUILD_gensrv_cpp.dir/build.make | 0
.../ROSBUILD_gensrv_cpp.dir/cmake_clean.cmake | 0
.../ROSBUILD_gensrv_cpp.dir/progress.make | 0
.../ROSBUILD_gensrv_lisp.dir/DependInfo.cmake | 0
.../ROSBUILD_gensrv_lisp.dir/build.make | 0
.../cmake_clean.cmake | 0
.../ROSBUILD_gensrv_lisp.dir/progress.make | 0
.../build/CMakeFiles/TargetDirectories.txt | 0
.../DependInfo.cmake | 0
.../build.make | 0
.../cmake_clean.cmake | 0
.../progress.make | 0
.../clean_test_results.dir/DependInfo.cmake | 0
.../clean_test_results.dir/build.make | 0
.../clean_test_results.dir/cmake_clean.cmake | 0
.../clean_test_results.dir/progress.make | 0
.../build/CMakeFiles/cmake.check_cache | 0
.../CMakeFiles/doxygen.dir/DependInfo.cmake | 0
.../build/CMakeFiles/doxygen.dir/build.make | 0
.../CMakeFiles/doxygen.dir/cmake_clean.cmake | 0
.../CMakeFiles/doxygen.dir/progress.make | 0
.../odom_visualization.dir/CXX.includecache | 0
.../odom_visualization.dir/DependInfo.cmake | 0
.../odom_visualization.dir/build.make | 0
.../odom_visualization.dir/cmake_clean.cmake | 0
.../odom_visualization.dir/depend.internal | 0
.../odom_visualization.dir/depend.make | 0
.../odom_visualization.dir/flags.make | 0
.../odom_visualization.dir/link.txt | 0
.../odom_visualization.dir/progress.make | 0
.../src/odom_visualization.cpp.o | Bin
.../build/CMakeFiles/progress.marks | 0
.../DependInfo.cmake | 0
.../build.make | 0
.../cmake_clean.cmake | 0
.../progress.make | 0
.../rosbuild_precompile.dir/DependInfo.cmake | 0
.../rosbuild_precompile.dir/build.make | 0
.../rosbuild_precompile.dir/cmake_clean.cmake | 0
.../rosbuild_precompile.dir/depend.internal | 0
.../rosbuild_precompile.dir/depend.make | 0
.../rosbuild_precompile.dir/progress.make | 0
.../DependInfo.cmake | 0
.../rosbuild_premsgsrvgen.dir/build.make | 0
.../cmake_clean.cmake | 0
.../rosbuild_premsgsrvgen.dir/progress.make | 0
.../rospack_genmsg.dir/DependInfo.cmake | 0
.../CMakeFiles/rospack_genmsg.dir/build.make | 0
.../rospack_genmsg.dir/cmake_clean.cmake | 0
.../rospack_genmsg.dir/progress.make | 0
.../DependInfo.cmake | 0
.../rospack_genmsg_libexe.dir/build.make | 0
.../cmake_clean.cmake | 0
.../rospack_genmsg_libexe.dir/depend.internal | 0
.../rospack_genmsg_libexe.dir/depend.make | 0
.../rospack_genmsg_libexe.dir/progress.make | 0
.../rospack_gensrv.dir/DependInfo.cmake | 0
.../CMakeFiles/rospack_gensrv.dir/build.make | 0
.../rospack_gensrv.dir/cmake_clean.cmake | 0
.../rospack_gensrv.dir/progress.make | 0
.../CMakeFiles/run_tests.dir/DependInfo.cmake | 0
.../build/CMakeFiles/run_tests.dir/build.make | 0
.../run_tests.dir/cmake_clean.cmake | 0
.../CMakeFiles/run_tests.dir/progress.make | 0
.../test-future.dir/DependInfo.cmake | 0
.../CMakeFiles/test-future.dir/build.make | 0
.../test-future.dir/cmake_clean.cmake | 0
.../CMakeFiles/test-future.dir/progress.make | 0
.../test-results-run.dir/DependInfo.cmake | 0
.../test-results-run.dir/build.make | 0
.../test-results-run.dir/cmake_clean.cmake | 0
.../test-results-run.dir/progress.make | 0
.../test-results.dir/DependInfo.cmake | 0
.../CMakeFiles/test-results.dir/build.make | 0
.../test-results.dir/cmake_clean.cmake | 0
.../CMakeFiles/test-results.dir/progress.make | 0
.../CMakeFiles/test.dir/DependInfo.cmake | 0
.../build/CMakeFiles/test.dir/build.make | 0
.../CMakeFiles/test.dir/cmake_clean.cmake | 0
.../build/CMakeFiles/test.dir/progress.make | 0
.../CMakeFiles/tests.dir/DependInfo.cmake | 0
.../build/CMakeFiles/tests.dir/build.make | 0
.../CMakeFiles/tests.dir/cmake_clean.cmake | 0
.../build/CMakeFiles/tests.dir/progress.make | 0
.../odom_visualization/build/Makefile | 0
.../catkin_generated/version/package.cmake | 0
.../build/catkin_generated/env_cached.sh | 0
.../catkin_generated/generate_cached_setup.py | 0
.../catkin_generated/installspace/.rosinstall | 0
.../installspace/_setup_util.py | 0
.../catkin_generated/installspace/env.sh | 0
.../catkin_generated/installspace/setup.bash | 0
.../catkin_generated/installspace/setup.sh | 0
.../catkin_generated/installspace/setup.zsh | 0
.../catkin_generated/ordered_paths.cmake | 0
.../build/catkin_generated/setup_cached.sh | 0
.../interrogate_setup_dot_py.py.stamp | 0
.../odom_visualization/package.xml.stamp | 0
.../build/cmake_install.cmake | 0
.../odom_visualization/build/devel/.catkin | 0
.../build/devel/.rosinstall | 0
.../build/devel/_setup_util.py | 0
.../odom_visualization/build/devel/env.sh | 0
.../profile.d/05.catkin-test-results.sh | 0
.../etc/catkin/profile.d/05.catkin_make.bash | 0
.../profile.d/05.catkin_make_isolated.bash | 0
.../odom_visualization/build/devel/setup.bash | 0
.../odom_visualization/build/devel/setup.sh | 0
.../odom_visualization/build/devel/setup.zsh | 0
.../CMakeDirectoryInformation.cmake | 0
.../CMakeFiles/gtest.dir/DependInfo.cmake | 0
.../gtest/CMakeFiles/gtest.dir/build.make | 0
.../CMakeFiles/gtest.dir/cmake_clean.cmake | 0
.../gtest/CMakeFiles/gtest.dir/depend.make | 0
.../gtest/CMakeFiles/gtest.dir/flags.make | 0
.../build/gtest/CMakeFiles/gtest.dir/link.txt | 0
.../gtest/CMakeFiles/gtest.dir/progress.make | 0
.../gtest_main.dir/DependInfo.cmake | 0
.../CMakeFiles/gtest_main.dir/build.make | 0
.../gtest_main.dir/cmake_clean.cmake | 0
.../CMakeFiles/gtest_main.dir/depend.make | 0
.../CMakeFiles/gtest_main.dir/flags.make | 0
.../gtest/CMakeFiles/gtest_main.dir/link.txt | 0
.../CMakeFiles/gtest_main.dir/progress.make | 0
.../build/gtest/CMakeFiles/progress.marks | 0
.../odom_visualization/build/gtest/Makefile | 0
.../build/gtest/cmake_install.cmake | 0
.../odom_visualization/mainpage.dox | 0
.../meshes/hummingbird.mesh | Bin
.../odom_visualization/package.xml | 0
.../src/odom_visualization.cpp | 0
.../src/odom_visualization.cpp~ | 0
.../{ => Utils}/quadrotor_msgs/CMakeLists.txt | 0
.../quadrotor_msgs/cmake/FindEigen3.cmake | 0
.../include/quadrotor_msgs/comm_types.h | 0
.../include/quadrotor_msgs/decode_msgs.h | 0
.../include/quadrotor_msgs/encode_msgs.h | 0
.../quadrotor_msgs/msg/AuxCommand.msg | 0
.../quadrotor_msgs/msg/Corrections.msg | 0
.../{ => Utils}/quadrotor_msgs/msg/Gains.msg | 0
.../quadrotor_msgs/msg/LQRTrajectory.msg | 0
.../quadrotor_msgs/msg/Odometry.msg | 0
.../quadrotor_msgs/msg/OutputData.msg | 0
.../quadrotor_msgs/msg/PPROutputData.msg | 0
.../msg/PolynomialTrajectory.msg | 0
.../msg/PolynomialTrajectory.msg~ | 0
.../quadrotor_msgs/msg/PositionCommand.msg | 0
.../quadrotor_msgs/msg/PositionCommand.msg~ | 0
.../quadrotor_msgs/msg/SO3Command.msg | 0
.../{ => Utils}/quadrotor_msgs/msg/Serial.msg | 0
.../quadrotor_msgs/msg/StatusData.msg | 0
.../quadrotor_msgs/msg/TRPYCommand.msg | 0
.../{ => Utils}/quadrotor_msgs/package.xml | 0
.../quadrotor_msgs/src/decode_msgs.cpp | 0
.../quadrotor_msgs/src/encode_msgs.cpp | 0
.../src/quadrotor_msgs/__init__.py | 0
.../src/quadrotor_msgs/__init__.pyc | Bin
.../src/quadrotor_msgs/msg/_AuxCommand.py | 0
.../src/quadrotor_msgs/msg/_Corrections.py | 0
.../src/quadrotor_msgs/msg/_Gains.py | 0
.../src/quadrotor_msgs/msg/_OutputData.py | 0
.../src/quadrotor_msgs/msg/_PPROutputData.py | 0
.../quadrotor_msgs/msg/_PositionCommand.py | 0
.../src/quadrotor_msgs/msg/_SO3Command.py | 0
.../src/quadrotor_msgs/msg/_Serial.py | 0
.../src/quadrotor_msgs/msg/_StatusData.py | 0
.../src/quadrotor_msgs/msg/_TRPYCommand.py | 0
.../src/quadrotor_msgs/msg/__init__.py | 0
.../Utils/rviz_plugins/CMakeLists.txt | 1 -
.../Utils/rviz_plugins/src/gamelikeinput.cpp | 4 +-
.../src/waypoint_generator.cpp | 2 +-
.../local_sensing/.vscode/settings.json | 5 +
uav_simulator/local_sensing/CMakeLists.txt | 89 +
.../local_sensing/CMakeModules/FindCUDA.cmake | 1311 ++++++
.../CMakeModules/FindCUDA/make2cmake.cmake | 79 +
.../CMakeModules/FindCUDA/parse_cubin.cmake | 112 +
.../CMakeModules/FindCUDA/run_nvcc.cmake | 280 ++
.../CMakeModules/FindEigen.cmake | 81 +
.../CMakeModules/FindEigen.cmake~ | 81 +
.../local_sensing/cfg/local_sensing_node.cfg | 15 +
uav_simulator/local_sensing/package.xml | 38 +
.../local_sensing/params/camera.yaml | 12 +
uav_simulator/local_sensing/src/AlignError.h | 86 +
.../local_sensing/src/ceres_extensions.h | 161 +
.../local_sensing/src/csv_convert.py | 15 +
.../local_sensing/src/cuda_exception.cuh | 45 +
.../local_sensing/src/depth_render.cu | 197 +
.../local_sensing/src/depth_render.cuh | 52 +
.../local_sensing/src/device_image.cuh | 179 +
uav_simulator/local_sensing/src/empty.cpp | 1 +
uav_simulator/local_sensing/src/empty.h | 0
uav_simulator/local_sensing/src/euroc.cpp | 378 ++
uav_simulator/local_sensing/src/helper_math.h | 1453 +++++++
.../local_sensing/src/pcl_render_node.cpp | 390 ++
.../src/pointcloud_render_node.cpp | 199 +
.../.vscode/c_cpp_properties.json | 10 +-
.../src/random_forest_sensing.cpp | 198 +-
.../so3_disturbance_generator/CMakeLists.txt | 46 +-
279 files changed, 5559 insertions(+), 10334 deletions(-)
create mode 100644 .vscode/settings.json
delete mode 100644 dyn_planner/.vscode/settings.json
delete mode 100644 dyn_planner/bspline_opt/CMakeLists.txt
delete mode 100644 dyn_planner/bspline_opt/include/bspline_opt/bspline_optimizer.h
delete mode 100644 dyn_planner/bspline_opt/include/bspline_opt/non_uniform_bspline.h
delete mode 100644 dyn_planner/bspline_opt/package.xml
delete mode 100644 dyn_planner/bspline_opt/src/bspline_optimizer.cpp
delete mode 100644 dyn_planner/bspline_opt/src/non_uniform_bspline.cpp
delete mode 100644 dyn_planner/log.md
delete mode 100644 dyn_planner/path_searching/CMakeLists.txt
delete mode 100644 dyn_planner/path_searching/include/path_searching/astar.h
delete mode 100644 dyn_planner/path_searching/include/path_searching/kinodynamic_astar.h
delete mode 100644 dyn_planner/path_searching/package.xml
delete mode 100644 dyn_planner/path_searching/src/astar.cpp
delete mode 100644 dyn_planner/path_searching/src/kinodynamic_astar.cpp
delete mode 100644 dyn_planner/plan_env/CMakeLists.txt
delete mode 100644 dyn_planner/plan_env/include/plan_env/edt_environment.h
delete mode 100644 dyn_planner/plan_env/include/plan_env/sdf_map.h
delete mode 100644 dyn_planner/plan_env/package.xml
delete mode 100644 dyn_planner/plan_env/src/edt_environment.cpp
delete mode 100644 dyn_planner/plan_env/src/sdf_map.cpp
delete mode 100644 dyn_planner/plan_manage/CMakeLists.txt
delete mode 100644 dyn_planner/plan_manage/README.md
delete mode 100644 dyn_planner/plan_manage/config/traj.rviz
delete mode 100644 dyn_planner/plan_manage/include/plan_manage/backward.hpp
delete mode 100644 dyn_planner/plan_manage/include/plan_manage/dyn_planner_manager.h
delete mode 100644 dyn_planner/plan_manage/include/plan_manage/planning_fsm.h
delete mode 100644 dyn_planner/plan_manage/launch/rviz.launch
delete mode 100644 dyn_planner/plan_manage/launch/simulation.launch
delete mode 100644 dyn_planner/plan_manage/launch/simulator.xml
delete mode 100644 dyn_planner/plan_manage/launch/test_collision.launch
delete mode 100644 dyn_planner/plan_manage/msg/Bspline.msg
delete mode 100644 dyn_planner/plan_manage/package.xml
delete mode 100644 dyn_planner/plan_manage/script/polyfit_predict.py
delete mode 100644 dyn_planner/plan_manage/script/traj_opt.py
delete mode 100644 dyn_planner/plan_manage/src/dyn_planner_manager.cpp
delete mode 100644 dyn_planner/plan_manage/src/dyn_planner_node.cpp
delete mode 100644 dyn_planner/plan_manage/src/planning_fsm.cpp
delete mode 100644 dyn_planner/plan_manage/src/traj_server.cpp
delete mode 100644 dyn_planner/traj_utils/CMakeLists.txt
delete mode 100644 dyn_planner/traj_utils/include/traj_utils/planning_visualization.h
delete mode 100644 dyn_planner/traj_utils/package.xml
delete mode 100644 dyn_planner/traj_utils/src/planning_visualization.cpp
create mode 160000 fast_planner
create mode 100644 files/bib.txt
rename {img => files}/exp1.gif (100%)
rename {img => files}/exp2.gif (100%)
rename {img => files}/exp3.gif (100%)
rename {img => files}/title.png (100%)
delete mode 100644 uav_simulator/README.md
rename uav_simulator/{ => Utils}/odom_visualization/CMakeLists.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/Makefile (100%)
rename uav_simulator/{ => Utils}/odom_visualization/bin/odom_visualization (100%)
rename uav_simulator/{ => Utils}/odom_visualization/bin/odom_visualization_vicon45 (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CATKIN_IGNORE (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeCache.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CompilerIdCXX/CMakeCXXCompilerId.cpp (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/2.8.12.2/CompilerIdCXX/a.out (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/CMakeDirectoryInformation.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/CMakeError.log (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/CMakeOutput.log (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/CMakeRuleHashes.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/Makefile.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/Makefile2 (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_cpp.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_cpp.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_cpp.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_cpp.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_lisp.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_lisp.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_lisp.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_genmsg_lisp.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_cpp.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_cpp.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_cpp.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_cpp.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_lisp.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_lisp.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_lisp.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/ROSBUILD_gensrv_lisp.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/TargetDirectories.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/_catkin_empty_exported_target.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/_catkin_empty_exported_target.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/_catkin_empty_exported_target.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/_catkin_empty_exported_target.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/clean_test_results.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/clean_test_results.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/clean_test_results.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/clean_test_results.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/cmake.check_cache (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/doxygen.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/doxygen.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/doxygen.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/doxygen.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/CXX.includecache (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/depend.internal (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/depend.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/flags.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/link.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/odom_visualization.dir/src/odom_visualization.cpp.o (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/progress.marks (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_clean-test-results.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_clean-test-results.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_clean-test-results.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_clean-test-results.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_precompile.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_precompile.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_precompile.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_precompile.dir/depend.internal (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_precompile.dir/depend.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_precompile.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_premsgsrvgen.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_premsgsrvgen.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_premsgsrvgen.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rosbuild_premsgsrvgen.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg_libexe.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg_libexe.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg_libexe.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg_libexe.dir/depend.internal (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg_libexe.dir/depend.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_genmsg_libexe.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_gensrv.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_gensrv.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_gensrv.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/rospack_gensrv.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/run_tests.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/run_tests.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/run_tests.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/run_tests.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-future.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-future.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-future.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-future.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results-run.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results-run.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results-run.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results-run.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test-results.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/test.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/tests.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/tests.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/tests.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/CMakeFiles/tests.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/Makefile (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin/catkin_generated/version/package.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/env_cached.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/generate_cached_setup.py (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/installspace/.rosinstall (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/installspace/_setup_util.py (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/installspace/env.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/installspace/setup.bash (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/installspace/setup.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/installspace/setup.zsh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/ordered_paths.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/setup_cached.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/stamps/odom_visualization/interrogate_setup_dot_py.py.stamp (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/catkin_generated/stamps/odom_visualization/package.xml.stamp (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/cmake_install.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/.catkin (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/.rosinstall (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/_setup_util.py (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/env.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/etc/catkin/profile.d/05.catkin-test-results.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/etc/catkin/profile.d/05.catkin_make.bash (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/etc/catkin/profile.d/05.catkin_make_isolated.bash (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/setup.bash (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/setup.sh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/devel/setup.zsh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/CMakeDirectoryInformation.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/depend.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/flags.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/link.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/DependInfo.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/build.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/cmake_clean.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/depend.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/flags.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/link.txt (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/gtest_main.dir/progress.make (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/CMakeFiles/progress.marks (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/Makefile (100%)
rename uav_simulator/{ => Utils}/odom_visualization/build/gtest/cmake_install.cmake (100%)
rename uav_simulator/{ => Utils}/odom_visualization/mainpage.dox (100%)
rename uav_simulator/{ => Utils}/odom_visualization/meshes/hummingbird.mesh (100%)
rename uav_simulator/{ => Utils}/odom_visualization/package.xml (100%)
rename uav_simulator/{ => Utils}/odom_visualization/src/odom_visualization.cpp (100%)
rename uav_simulator/{ => Utils}/odom_visualization/src/odom_visualization.cpp~ (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/CMakeLists.txt (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/cmake/FindEigen3.cmake (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/include/quadrotor_msgs/comm_types.h (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/include/quadrotor_msgs/decode_msgs.h (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/include/quadrotor_msgs/encode_msgs.h (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/AuxCommand.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/Corrections.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/Gains.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/LQRTrajectory.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/Odometry.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/OutputData.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/PPROutputData.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/PolynomialTrajectory.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/PolynomialTrajectory.msg~ (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/PositionCommand.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/PositionCommand.msg~ (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/SO3Command.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/Serial.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/StatusData.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/msg/TRPYCommand.msg (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/package.xml (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/decode_msgs.cpp (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/encode_msgs.cpp (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/__init__.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/__init__.pyc (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_AuxCommand.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_Corrections.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_Gains.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_OutputData.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_PPROutputData.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_PositionCommand.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_SO3Command.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_Serial.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_StatusData.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/_TRPYCommand.py (100%)
rename uav_simulator/{ => Utils}/quadrotor_msgs/src/quadrotor_msgs/msg/__init__.py (100%)
create mode 100644 uav_simulator/local_sensing/.vscode/settings.json
create mode 100644 uav_simulator/local_sensing/CMakeLists.txt
create mode 100644 uav_simulator/local_sensing/CMakeModules/FindCUDA.cmake
create mode 100644 uav_simulator/local_sensing/CMakeModules/FindCUDA/make2cmake.cmake
create mode 100644 uav_simulator/local_sensing/CMakeModules/FindCUDA/parse_cubin.cmake
create mode 100644 uav_simulator/local_sensing/CMakeModules/FindCUDA/run_nvcc.cmake
create mode 100644 uav_simulator/local_sensing/CMakeModules/FindEigen.cmake
create mode 100644 uav_simulator/local_sensing/CMakeModules/FindEigen.cmake~
create mode 100755 uav_simulator/local_sensing/cfg/local_sensing_node.cfg
create mode 100644 uav_simulator/local_sensing/package.xml
create mode 100644 uav_simulator/local_sensing/params/camera.yaml
create mode 100644 uav_simulator/local_sensing/src/AlignError.h
create mode 100644 uav_simulator/local_sensing/src/ceres_extensions.h
create mode 100644 uav_simulator/local_sensing/src/csv_convert.py
create mode 100644 uav_simulator/local_sensing/src/cuda_exception.cuh
create mode 100644 uav_simulator/local_sensing/src/depth_render.cu
create mode 100644 uav_simulator/local_sensing/src/depth_render.cuh
create mode 100644 uav_simulator/local_sensing/src/device_image.cuh
create mode 100644 uav_simulator/local_sensing/src/empty.cpp
create mode 100644 uav_simulator/local_sensing/src/empty.h
create mode 100644 uav_simulator/local_sensing/src/euroc.cpp
create mode 100644 uav_simulator/local_sensing/src/helper_math.h
create mode 100644 uav_simulator/local_sensing/src/pcl_render_node.cpp
create mode 100644 uav_simulator/local_sensing/src/pointcloud_render_node.cpp
rename {dyn_planner => uav_simulator/map_generator}/.vscode/c_cpp_properties.json (52%)
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..7f6db7481
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,26 @@
+{
+ "workbench.colorCustomizations": {
+ "activityBarBadge.background": "#2979FF",
+ "list.activeSelectionForeground": "#2979FF",
+ "list.inactiveSelectionForeground": "#2979FF",
+ "list.highlightForeground": "#2979FF",
+ "scrollbarSlider.activeBackground": "#2979FF50",
+ "editorSuggestWidget.highlightForeground": "#2979FF",
+ "textLink.foreground": "#2979FF",
+ "progressBar.background": "#2979FF",
+ "pickerGroup.foreground": "#2979FF",
+ "tab.activeBorder": "#2979FF",
+ "notificationLink.foreground": "#2979FF",
+ "editorWidget.resizeBorder": "#2979FF",
+ "editorWidget.border": "#2979FF",
+ "settings.modifiedItemIndicator": "#2979FF",
+ "settings.headerForeground": "#2979FF",
+ "panelTitle.activeBorder": "#2979FF",
+ "breadcrumb.activeSelectionForeground": "#2979FF",
+ "menu.selectionForeground": "#2979FF",
+ "menubar.selectionForeground": "#2979FF",
+ "activityBar.background": "#092E56",
+ "titleBar.activeBackground": "#0C4078",
+ "titleBar.activeForeground": "#F6FAFE"
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 729954a81..6980bf1ef 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,20 @@
# Fast-Planner
-__Fast-Planner__ is a quadrotor trajectory generator for fast autonomous flight. It consists of
-the front-end _kinodynamic path searching_, the back-end _gradient-based Bspline trajectory optimization_ and the postprocessing named as _iterative time adjustment_. The key features of the planner are that it generates
-high-quality trajectories within a few milliseconds and that it can generate aggressive motion under the premise of dynamic feasibility. This work was reported on the [IEEE Spectrum](https://spectrum.ieee.org/automaton/robotics/robotics-hardware/video-friday-nasa-lemur-robot).
+## News
+
+This package is under active maintenance. New features will be listed here.
+
+- The online mapping algorithm is now available. It can take in depth image and camera pose pairs as input, do raycasting to update a probabilistic volumetric map, and build a Euclidean signed distance filed (ESDF) for the planning system.
+
+## Overview
+
+__Fast-Planner__ is a robust and efficient planning system that enables agile and fast autonomous flight for quadrotors.
+It takes in information from odometry, sensor streams (such as depth images and point cloud), and outputs high-quality trajectories within a few milliseconds.
+It can support aggressive and fully autonomous flight even in unknown and cluttered environments.
+Demonstrations about the planner have been reported on the [IEEE Spectrum](https://spectrum.ieee.org/automaton/robotics/robotics-hardware/video-friday-nasa-lemur-robot).
+
+
-This package is under active maintenance. More features (e.g., avoiding dynamic obstacles, discovering topological distinctive trajectories) will be added in the future.
__Authors__: [Boyu Zhou](http://boyuzhou.net), [Fei Gao](https://ustfei.com/) and [Shaojie Shen](http://uav.ust.hk/group/) from the [HUKST Aerial Robotics Group](http://uav.ust.hk/).
@@ -12,47 +22,43 @@ __Video__:
-
+
-
+
-
+
-This package contains the implementation of __Fast-Planner__ (in folder __dyn_planner__) and a lightweight
-quadrotor simulator (in __uav_simulator__).
+This package contains the implementation of __Fast-Planner__ (in folder __fast_planner__) and a lightweight
+quadrotor simulator (in __uav_simulator__). Key components are:
+
+- __plan_env__: The online mapping algorithms. It takes in depth image (or point cloud) and camera pose (odometry) pairs as input, do raycasting to update a probabilistic volumetric map, and build an Euclidean signed distance filed (ESDF) for the planning system.
+- __path_searching__: Front-end path searching algorithms. Currently it includes a kinodynamic version of A* algorithm that respects the dynamics of quadrotors. The standard A* is also available.
+- __bspline_opt__: The gradient-based trajectory optimization based on B-spline trajectory representation.
+- __plan_manage__: High-level modules that schedule and call the mapping and planning algorithms. Interfaces for launching the whole system, as well as the configuration files are contained here.
-If you use __Fast-Planner__ for your application or research, please cite our related papers:
+If you use __Fast-Planner__ for your application or research, please cite our [related papers](files/bib.txt):
- [__Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight__](https://ieeexplore.ieee.org/document/8758904), Boyu Zhou, Fei Gao, Luqi Wang, Chuhao Liu and Shaojie Shen, IEEE Robotics and Automation Letters (RA-L), 2019.
-```
-@article{zhou2019robust,
- title={Robust and efficient quadrotor trajectory generation for fast autonomous flight},
- author={Zhou, Boyu and Gao, Fei and Wang, Luqi and Liu, Chuhao and Shen, Shaojie},
- journal={IEEE Robotics and Automation Letters},
- volume={4},
- number={4},
- pages={3529--3536},
- year={2019},
- publisher={IEEE}
-}
-```
+
## 1. Prerequisites
-- Our software is developed in Ubuntu 16.04, [ROS Kinetic](http://wiki.ros.org/kinetic/Installation/Ubuntu).
+- Our software is developed and tested in Ubuntu 16.04, [ROS Kinetic](http://wiki.ros.org/kinetic/Installation/Ubuntu). Other version may require minor modification.
- We use [**NLopt**](https://nlopt.readthedocs.io/en/latest/NLopt_Installation) to solve the non-linear optimization problem.
-- The drone simulator depends on the C++ linear algebra library __Armadillo__, which can be installed by ``` sudo apt-get install libarmadillo-dev ```.
+- The __uav_simulator__ depends on the C++ linear algebra library __Armadillo__, which can be installed by ``` sudo apt-get install libarmadillo-dev ```.
+
+- _Optional_: If you want to run the more realistic depth camera in __uav_simulator__, installation of [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) is needed. Otherwise, a less realistic depth sensor model will be used (See section _Use GPU Depth Rendering_ below).
## 2. Build on ROS
-Clone this repository to your catkin workspace and catkin_make. A new workspace is recommended:
+After the prerequisites are satisfied, you can clone this repository to your catkin workspace and catkin_make. A new workspace is recommended:
```
cd ${YOUR_WORKSPACE_PATH}/src
git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
@@ -60,6 +66,24 @@ Clone this repository to your catkin workspace and catkin_make. A new workspace
catkin_make
```
+### Use GPU Depth Rendering (Optional)
+
+ The **local_sensing** package in __uav_simulator__ has the option of using GPU or CPU to render the depth sensor measurement. By default, it is set to CPU version in CMakeLists:
+
+ ```
+ set(ENABLE_CUDA false)
+ # set(ENABLE_CUDA true)
+ ```
+The GPU version is recommended, because it generates depth images more like a real depth camera.
+If you want to use the GPU depth rendering, set ENABLE_CUDA to true, and also remember to change the 'arch' and 'code' flags according to your graphics card devices. You can check the right code [here](https://github.com/tpruvot/ccminer/wiki/Compatibility).
+
+```
+ set(CUDA_NVCC_FLAGS
+ -gencode arch=compute_61,code=sm_61;
+ )
+```
+For installation of CUDA, please go to [CUDA ToolKit](https://developer.nvidia.com/cuda-toolkit)
+
## 3. Run the Simulation
Run [Rviz](http://wiki.ros.org/rviz) with our configuration firstly:
@@ -78,21 +102,26 @@ Then run the quadrotor simulator and __Fast-Planner__:
roslaunch plan_manage simulation.launch
```
-Normally, you will find the randomly generated map and the drone model in ```Rviz```. At this time, you can select a goal for the drone using the ```3D Nav Goal``` tool.
-
-In the tools panel of Rviz, click '+' and select the plugin 'Goal3DTool'. If you have successfully compiled all packages from __uav_simulator__, now you can see '3D Nav Goal' in the tools panel. To set a goal, click the '3D Nav Goal' (shortcut keyboard 'g', may conflict with 2D Nav Goal). Then __click__ and __hold__ both the left and right mouse buttons to select _(x,y)_, and __move__ the mouse to change _z_. When a goal is set successfully, a new trajectory will be generated immediately and executed by the drone, as displayed below:
+Normally, you will find the randomly generated map and the drone model in ```Rviz```. At this time, you can select a goal for the drone using the ```2D Nav Goal``` tool. When a goal is set successfully, a new trajectory will be generated immediately and executed by the drone. A sample is displayed below:
-
+
-## 4. Acknowledgements
+## 4. Use in Your Application
+
+If you have successfully run the simulation and want to use __Fast-Planner__ in your project,
+please explore the simulation.launch file.
+Important parameters that may be changed in your usage are contained and documented.
+Finally, please kindly give a STAR to this repo if it helps your research or work, thanks! :)
+
+## 5. Acknowledgements
We use **NLopt** for non-linear optimization.
-## 5. Licence
+## 6. Licence
The source code is released under [GPLv3](http://www.gnu.org/licenses/) license.
-## 6. Disclaimer
+## 7. Disclaimer
This is research code, it is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of merchantability or fitness for a particular purpose.
diff --git a/dyn_planner/.vscode/settings.json b/dyn_planner/.vscode/settings.json
deleted file mode 100644
index b3c8d2af8..000000000
--- a/dyn_planner/.vscode/settings.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "files.associations": {
- "cctype": "cpp",
- "cmath": "cpp",
- "csignal": "cpp",
- "cstdarg": "cpp",
- "cstddef": "cpp",
- "cstdio": "cpp",
- "cstdlib": "cpp",
- "cstring": "cpp",
- "ctime": "cpp",
- "cwchar": "cpp",
- "cwctype": "cpp",
- "array": "cpp",
- "atomic": "cpp",
- "strstream": "cpp",
- "*.tcc": "cpp",
- "bitset": "cpp",
- "chrono": "cpp",
- "clocale": "cpp",
- "complex": "cpp",
- "cstdint": "cpp",
- "deque": "cpp",
- "list": "cpp",
- "unordered_map": "cpp",
- "vector": "cpp",
- "exception": "cpp",
- "optional": "cpp",
- "fstream": "cpp",
- "functional": "cpp",
- "initializer_list": "cpp",
- "iomanip": "cpp",
- "iosfwd": "cpp",
- "iostream": "cpp",
- "istream": "cpp",
- "limits": "cpp",
- "memory": "cpp",
- "new": "cpp",
- "ostream": "cpp",
- "numeric": "cpp",
- "ratio": "cpp",
- "sstream": "cpp",
- "stdexcept": "cpp",
- "streambuf": "cpp",
- "system_error": "cpp",
- "thread": "cpp",
- "cinttypes": "cpp",
- "type_traits": "cpp",
- "tuple": "cpp",
- "typeindex": "cpp",
- "typeinfo": "cpp",
- "utility": "cpp",
- "algorithm": "cpp",
- "core": "cpp",
- "eigen": "cpp"
-},
-"python.formatting.provider": "yapf"
-}
\ No newline at end of file
diff --git a/dyn_planner/bspline_opt/CMakeLists.txt b/dyn_planner/bspline_opt/CMakeLists.txt
deleted file mode 100644
index dc2763329..000000000
--- a/dyn_planner/bspline_opt/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(bspline_opt)
-
-find_package(Eigen3 REQUIRED)
-find_package(PCL 1.7 REQUIRED)
-
-find_package(catkin REQUIRED COMPONENTS
- roscpp
- rospy
- std_msgs
- visualization_msgs
- plan_env
-)
-
-
-catkin_package(
- INCLUDE_DIRS include
- LIBRARIES bspline_opt
- CATKIN_DEPENDS plan_env
-# DEPENDS system_lib
-)
-
-include_directories(
- SYSTEM
- include
- ${catkin_INCLUDE_DIRS}
- ${Eigen3_INCLUDE_DIRS}
- ${PCL_INCLUDE_DIRS}
-)
-
-set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS} -O3 -Wall")
-
-add_library( bspline_opt
- src/bspline_optimizer.cpp
- src/non_uniform_bspline.cpp
- )
-target_link_libraries( bspline_opt
- ${catkin_LIBRARIES}
- /usr/local/lib/libnlopt.so
- )
diff --git a/dyn_planner/bspline_opt/include/bspline_opt/bspline_optimizer.h b/dyn_planner/bspline_opt/include/bspline_opt/bspline_optimizer.h
deleted file mode 100644
index 9f91d82ea..000000000
--- a/dyn_planner/bspline_opt/include/bspline_opt/bspline_optimizer.h
+++ /dev/null
@@ -1,104 +0,0 @@
-#ifndef _BSPLINE_OPTIMIZER_H_
-#define _BSPLINE_OPTIMIZER_H_
-
-#include
-#include
-#include "plan_env/edt_environment.h"
-
-// Gradient and elasitc band optimization
-
-// Input: a signed distance field and a sequence of points
-// Output: the optimized sequence of points
-// The format of points: N x 3 matrix, each row is a point
-namespace dyn_planner
-{
-class BsplineOptimizer
-{
-private:
- EDTEnvironment::Ptr edt_env_;
- Eigen::MatrixXd control_points_; // nx3
- Eigen::Vector3d end_pt_;
- vector> ranges_;
- bool use_guide_;
-
- /* optimization parameters */
- double lamda1_; // curvature weight
- double lamda2_; // distance weight
- double lamda3_; // feasibility weight
- double lamda4_; // end point weight
- double lamda5_; // guide cost weight
- double dist0_; // safe distance
- double dist1_; // unsafe distance
- double max_vel_, max_acc_; // constrains parameters
- int variable_num_;
- int algorithm_;
- int max_iteration_num_, iter_num_;
- std::vector best_variable_;
- double min_cost_;
- int start_id_, end_id_;
-
- /* bspline */
- double bspline_interval_; // ts
- int order_; // bspline order
-
- int end_constrain_;
- bool dynamic_;
- double time_traj_start_;
-
- int collision_type_;
-
-public:
- BsplineOptimizer()
- {
- }
- ~BsplineOptimizer()
- {
- }
-
- enum END_CONSTRAINT
- {
- HARD_CONSTRAINT = 1,
- SOFT_CONSTRAINT = 2
- };
-
- /* main API */
- void setControlPoints(Eigen::MatrixXd points);
- void setBSplineInterval(double ts);
- void setEnvironment(const EDTEnvironment::Ptr& env);
-
- void setParam(ros::NodeHandle& nh);
- void setOptimizationRange(int start, int end);
-
- void optimize(int end_cons, bool dynamic, double time_start = -1.0);
- Eigen::MatrixXd getControlPoints();
-
-private:
- /* NLopt cost */
- static double costFunction(const std::vector& x, std::vector& grad, void* func_data);
- /* helper function */
- void getDistanceAndGradient(Eigen::Vector3d& pos, double& dist, Eigen::Vector3d& grad);
-
- /* calculate each part of cost function with control points q */
- void combineCost(const std::vector& x, vector& grad, double& cost);
-
- void calcSmoothnessCost(const vector& q, double& cost, vector& gradient);
- void calcDistanceCost(const vector& q, double& cost, vector& gradient);
- void calcFeasibilityCost(const vector& q, double& cost, vector& gradient);
- void calcEndpointCost(const vector& q, double& cost, vector& gradient);
-
-public:
- /* for evaluation */
- vector vec_cost_;
- vector vec_time_;
- ros::Time time_start_;
-
- void getCostCurve(vector& cost, vector& time)
- {
- cost = vec_cost_;
- time = vec_time_;
- }
-
- typedef shared_ptr Ptr;
-};
-} // namespace dyn_planner
-#endif
\ No newline at end of file
diff --git a/dyn_planner/bspline_opt/include/bspline_opt/non_uniform_bspline.h b/dyn_planner/bspline_opt/include/bspline_opt/non_uniform_bspline.h
deleted file mode 100644
index aa35219c5..000000000
--- a/dyn_planner/bspline_opt/include/bspline_opt/non_uniform_bspline.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef _NON_UNIFORM_BSPLINE_H_
-#define _NON_UNIFORM_BSPLINE_H_
-
-#include
-#include
-#include
-
-using namespace std;
-
-namespace dyn_planner
-{
-class NonUniformBspline
-{
-private:
- /* non-uniform bspline */
- int p_, n_, m_;
- Eigen::MatrixXd control_points_;
- Eigen::VectorXd u_; // knots vector
- double interval_; // init interval
-
- Eigen::Vector3d x0_, v0_, a0_;
-
- Eigen::MatrixXd getDerivativeControlPoints();
-
-public:
- static double limit_vel_, limit_acc_, limit_ratio_;
-
- NonUniformBspline()
- {
- }
- NonUniformBspline(Eigen::MatrixXd points, int order, double interval, bool zero = true);
- ~NonUniformBspline();
- void setKnot(Eigen::VectorXd knot);
- Eigen::VectorXd getKnot();
-
- Eigen::MatrixXd getControlPoint()
- {
- return control_points_;
- }
-
- void getTimeSpan(double& um, double& um_p);
-
- Eigen::Vector3d evaluateDeBoor(double t);
-
- NonUniformBspline getDerivative();
-
- static void getControlPointEqu3(Eigen::MatrixXd samples, double ts, Eigen::MatrixXd& control_pts);
- static void BsplineParameterize(const double& ts, const vector& point_set,
- const vector& start_end_derivative, Eigen::MatrixXd& ctrl_pts);
-
- /* check feasibility, reallocate time and recompute first 3 ctrl pts */
- bool checkFeasibility(bool show = false);
- bool reallocateTime(bool show = false);
- bool adjustTime(bool show = false);
- void recomputeInit();
-
- /* for evaluation */
- double getTimeSum();
- double getLength();
- double getJerk();
-
- void getMeanAndMaxVel(double& mean_v, double& max_v);
- void getMeanAndMaxAcc(double& mean_a, double& max_a);
-
- // typedef std::shared_ptr Ptr;
-};
-} // namespace dyn_planner
-#endif
\ No newline at end of file
diff --git a/dyn_planner/bspline_opt/package.xml b/dyn_planner/bspline_opt/package.xml
deleted file mode 100644
index f31ee0eb2..000000000
--- a/dyn_planner/bspline_opt/package.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
- bspline_opt
- 0.0.0
- The bspline_opt package
-
-
-
-
- bzhouai
-
-
-
-
-
- TODO
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- catkin
- roscpp
- rospy
- std_msgs
- plan_env
- roscpp
- rospy
- std_msgs
- roscpp
- rospy
- std_msgs
- plan_env
-
-
-
-
-
-
-
-
diff --git a/dyn_planner/bspline_opt/src/bspline_optimizer.cpp b/dyn_planner/bspline_opt/src/bspline_optimizer.cpp
deleted file mode 100644
index 44251d35f..000000000
--- a/dyn_planner/bspline_opt/src/bspline_optimizer.cpp
+++ /dev/null
@@ -1,364 +0,0 @@
-#include "bspline_opt/bspline_optimizer.h"
-#include
-using namespace std;
-
-namespace dyn_planner
-{
-void BsplineOptimizer::setControlPoints(Eigen::MatrixXd points)
-{
- this->control_points_ = points;
- this->start_id_ = order_;
- this->end_id_ = this->control_points_.rows() - order_;
- use_guide_ = false;
-}
-
-void BsplineOptimizer::setOptimizationRange(int start, int end)
-{
- this->start_id_ = min(max(start, order_), int(control_points_.rows() - order_));
- this->end_id_ = min(max(end, order_), int(control_points_.rows() - order_));
- cout << "opt range:" << this->start_id_ << ", " << this->end_id_ << endl;
-}
-
-void BsplineOptimizer::setParam(ros::NodeHandle& nh)
-{
- nh.param("optimization/lamda1", lamda1_, -1.0);
- nh.param("optimization/lamda2", lamda2_, -1.0);
- nh.param("optimization/lamda3", lamda3_, -1.0);
- nh.param("optimization/lamda4", lamda4_, -1.0);
- nh.param("optimization/lamda5", lamda5_, -1.0);
- nh.param("optimization/dist0", dist0_, -1.0);
- nh.param("optimization/dist1", dist1_, -1.0);
- nh.param("optimization/max_vel", max_vel_, -1.0);
- nh.param("optimization/max_acc", max_acc_, -1.0);
- nh.param("optimization/max_iteration_num", max_iteration_num_, -1);
- nh.param("optimization/algorithm", algorithm_, -1);
- nh.param("optimization/order", order_, -1);
-
- std::cout << "lamda1: " << lamda1_ << std::endl;
- std::cout << "lamda2: " << lamda2_ << std::endl;
- std::cout << "lamda3: " << lamda3_ << std::endl;
- std::cout << "lamda4: " << lamda4_ << std::endl;
-}
-
-void BsplineOptimizer::setBSplineInterval(double ts)
-{
- this->bspline_interval_ = ts;
-}
-
-void BsplineOptimizer::setEnvironment(const EDTEnvironment::Ptr& env)
-{
- this->edt_env_ = env;
-}
-
-Eigen::MatrixXd BsplineOptimizer::getControlPoints()
-{
- return this->control_points_;
-}
-
-/* best algorithm_ is 40: SLSQP(constrained), 11 LBFGS(unconstrained barrier
-method */
-void BsplineOptimizer::optimize(int end_cons, bool dynamic, double time_start)
-{
- /* ---------- initialize solver ---------- */
- end_constrain_ = end_cons;
- dynamic_ = dynamic;
- time_traj_start_ = time_start;
- iter_num_ = 0;
-
- if (end_constrain_ == HARD_CONSTRAINT)
- {
- variable_num_ = 3 * (end_id_ - start_id_);
- // std::cout << "hard: " << end_constrain_ << std::endl;
- }
- else if (end_constrain_ == SOFT_CONSTRAINT)
- {
- variable_num_ = 3 * (control_points_.rows() - start_id_);
- // std::cout << "soft: " << end_constrain_ << std::endl;
- }
-
- min_cost_ = std::numeric_limits::max();
-
- nlopt::opt opt(nlopt::algorithm(algorithm_), variable_num_);
-
- opt.set_min_objective(BsplineOptimizer::costFunction, this);
- opt.set_maxeval(max_iteration_num_);
- // opt.set_xtol_rel(1e-4);
- // opt.set_maxtime(1e-2);
-
- /* ---------- init variables ---------- */
- vector q(variable_num_);
- double final_cost;
- for (int i = 0; i < int(control_points_.rows()); ++i)
- {
- if (i < start_id_)
- continue;
-
- if (end_constrain_ == HARD_CONSTRAINT && i >= end_id_)
- {
- continue;
- // std::cout << "jump" << std::endl;
- }
-
- for (int j = 0; j < 3; j++)
- q[3 * (i - start_id_) + j] = control_points_(i, j);
- }
-
- if (end_constrain_ == SOFT_CONSTRAINT)
- {
- end_pt_ = (1 / 6.0) *
- (control_points_.row(control_points_.rows() - 3) + 4 * control_points_.row(control_points_.rows() - 2) +
- control_points_.row(control_points_.rows() - 1));
- // std::cout << "end pt" << std::endl;
- }
-
- try
- {
- /* ---------- optimization ---------- */
- cout << "[Optimization]: begin-------------" << endl;
- cout << fixed << setprecision(7);
- vec_time_.clear();
- vec_cost_.clear();
- time_start_ = ros::Time::now();
-
- nlopt::result result = opt.optimize(q, final_cost);
-
- /* ---------- get results ---------- */
- std::cout << "[Optimization]: iter num: " << iter_num_ << std::endl;
- // cout << "Min cost:" << min_cost_ << endl;
-
- for (int i = 0; i < control_points_.rows(); ++i)
- {
- if (i < start_id_)
- continue;
-
- if (end_constrain_ == HARD_CONSTRAINT && i >= end_id_)
- continue;
-
- for (int j = 0; j < 3; j++)
- control_points_(i, j) = best_variable_[3 * (i - start_id_) + j];
- }
-
- cout << "[Optimization]: end-------------" << endl;
- }
- catch (std::exception& e)
- {
- cout << "[Optimization]: nlopt exception: " << e.what() << endl;
- }
-}
-
-void BsplineOptimizer::calcSmoothnessCost(const vector& q, double& cost,
- vector& gradient)
-{
- cost = 0.0;
- std::fill(gradient.begin(), gradient.end(), Eigen::Vector3d(0, 0, 0));
-
- Eigen::Vector3d jerk;
-
- for (int i = 0; i < q.size() - order_; i++)
- {
- /* evaluate jerk */
- jerk = q[i + 3] - 3 * q[i + 2] + 3 * q[i + 1] - q[i];
- cost += jerk.squaredNorm();
-
- /* jerk gradient */
- gradient[i + 0] += 2.0 * jerk * (-1.0);
- gradient[i + 1] += 2.0 * jerk * (3.0);
- gradient[i + 2] += 2.0 * jerk * (-3.0);
- gradient[i + 3] += 2.0 * jerk * (1.0);
- }
-}
-
-void BsplineOptimizer::calcDistanceCost(const vector& q, double& cost,
- vector& gradient)
-{
- cost = 0.0;
- std::fill(gradient.begin(), gradient.end(), Eigen::Vector3d(0, 0, 0));
-
- double dist;
- Eigen::Vector3d dist_grad, g_zero(0, 0, 0);
-
- int end_idx = end_constrain_ == SOFT_CONSTRAINT ? q.size() : q.size() - order_;
-
- for (int i = order_; i < end_idx; i++)
- {
- if (!dynamic_)
- {
- edt_env_->evaluateEDTWithGrad(q[i], -1.0, dist, dist_grad);
- }
- else
- {
- double time = double(i + 2 - order_) * bspline_interval_ + time_traj_start_;
- edt_env_->evaluateEDTWithGrad(q[i], time, dist, dist_grad);
- }
-
- cost += dist < dist0_ ? pow(dist - dist0_, 2) : 0.0;
- gradient[i] += dist < dist0_ ? 2.0 * (dist - dist0_) * dist_grad : g_zero;
- }
-}
-
-void BsplineOptimizer::calcFeasibilityCost(const vector& q, double& cost,
- vector& gradient)
-{
- cost = 0.0;
- std::fill(gradient.begin(), gradient.end(), Eigen::Vector3d(0, 0, 0));
-
- /* ---------- abbreviation ---------- */
- double ts, vm2, am2, ts_inv2, ts_inv4;
- vm2 = max_vel_ * max_vel_;
- am2 = max_acc_ * max_acc_;
-
- ts = bspline_interval_;
- ts_inv2 = 1 / ts / ts;
- ts_inv4 = ts_inv2 * ts_inv2;
-
- /* ---------- velocity feasibility ---------- */
- for (int i = 0; i < q.size() - 1; i++)
- {
- Eigen::Vector3d vi = q[i + 1] - q[i];
- for (int j = 0; j < 3; j++)
- {
- double vd = vi(j) * vi(j) * ts_inv2 - vm2;
- cost += vd > 0.0 ? pow(vd, 2) : 0.0;
-
- gradient[i + 0](j) += vd > 0.0 ? 2.0 * vd * ts_inv2 * (-2.0) * vi(j) : 0.0;
- gradient[i + 1](j) += vd > 0.0 ? 2.0 * vd * ts_inv2 * (2.0) * vi(j) : 0.0;
- }
- }
-
- /* ---------- acceleration feasibility ---------- */
- for (int i = 0; i < q.size() - 2; i++)
- {
- Eigen::Vector3d ai = q[i + 2] - 2 * q[i + 1] + q[i];
- for (int j = 0; j < 3; j++)
- {
- double ad = ai(j) * ai(j) * ts_inv4 - am2;
- cost += ad > 0.0 ? pow(ad, 2) : 0.0;
-
- gradient[i + 0](j) += ad > 0.0 ? 2.0 * ad * ts_inv4 * (2.0) * ai(j) : 0.0;
- gradient[i + 1](j) += ad > 0.0 ? 2.0 * ad * ts_inv4 * (-4.0) * ai(j) : 0.0;
- gradient[i + 2](j) += ad > 0.0 ? 2.0 * ad * ts_inv4 * (2.0) * ai(j) : 0.0;
- }
- }
-}
-
-void BsplineOptimizer::calcEndpointCost(const vector& q, double& cost,
- vector& gradient)
-{
- cost = 0.0;
- std::fill(gradient.begin(), gradient.end(), Eigen::Vector3d(0, 0, 0));
-
- // zero cost and gradient in hard constraints
- if (end_constrain_ == SOFT_CONSTRAINT)
- {
- Eigen::Vector3d q_3, q_2, q_1, qd;
- q_3 = q[q.size() - 3];
- q_2 = q[q.size() - 2];
- q_1 = q[q.size() - 1];
-
- qd = 1 / 6.0 * (q_3 + 4 * q_2 + q_1) - end_pt_;
- cost += qd.squaredNorm();
-
- gradient[q.size() - 3] += 2 * qd * (1 / 6.0);
- gradient[q.size() - 2] += 2 * qd * (4 / 6.0);
- gradient[q.size() - 1] += 2 * qd * (1 / 6.0);
- }
-}
-
-void BsplineOptimizer::combineCost(const std::vector& x, std::vector& grad, double& f_combine)
-{
- /* ---------- convert to control point vector ---------- */
- vector q;
- // q.resize(control_points_.rows());
-
- /* first p points */
- for (int i = 0; i < order_; i++)
- q.push_back(control_points_.row(i));
-
- /* optimized control points */
- for (int i = 0; i < variable_num_ / 3; i++)
- {
- Eigen::Vector3d qi(x[3 * i], x[3 * i + 1], x[3 * i + 2]);
- q.push_back(qi);
- }
-
- /* last p points */
- if (end_constrain_ == END_CONSTRAINT::HARD_CONSTRAINT)
- {
- for (int i = 0; i < order_; i++)
- q.push_back(control_points_.row(control_points_.rows() - order_ + i));
- }
-
- /* ---------- evaluate cost and gradient ---------- */
- double f_smoothness, f_distance, f_feasibility, f_endpoint;
-
- vector g_smoothness, g_distance, g_feasibility, g_endpoint;
- g_smoothness.resize(control_points_.rows());
- g_distance.resize(control_points_.rows());
- g_feasibility.resize(control_points_.rows());
- g_endpoint.resize(control_points_.rows());
-
- calcSmoothnessCost(q, f_smoothness, g_smoothness);
- calcDistanceCost(q, f_distance, g_distance);
- calcFeasibilityCost(q, f_feasibility, g_feasibility);
- calcEndpointCost(q, f_endpoint, g_endpoint);
-
- /* ---------- convert to NLopt format...---------- */
- grad.resize(variable_num_);
-
- f_combine = lamda1_ * f_smoothness + lamda2_ * f_distance + lamda3_ * f_feasibility + lamda4_ * f_endpoint;
-
- for (int i = 0; i < variable_num_ / 3; i++)
- for (int j = 0; j < 3; j++)
- {
- /* the first p points is static here */
- grad[3 * i + j] = lamda1_ * g_smoothness[i + order_](j) + lamda2_ * g_distance[i + order_](j) +
- lamda3_ * g_feasibility[i + order_](j) + lamda4_ * g_endpoint[i + order_](j);
- }
-
- /* ---------- print cost ---------- */
- iter_num_ += 1;
-
- if (iter_num_ % 100 == 0)
- {
- // cout << iter_num_ << " smooth: " << lamda1_ * f_smoothness << " , dist: " << lamda2_ * f_distance
- // << ", fea: " << lamda3_ * f_feasibility << ", end: " << lamda4_ * f_endpoint << ", total: " << f_combine
- // << endl;
- }
-}
-
-double BsplineOptimizer::costFunction(const std::vector& x, std::vector& grad, void* func_data)
-{
- BsplineOptimizer* opt = reinterpret_cast(func_data);
-
- double cost;
- opt->combineCost(x, grad, cost);
-
- /* save the min cost result */
- if (cost < opt->min_cost_)
- {
- opt->min_cost_ = cost;
- opt->best_variable_ = x;
- }
-
- return cost;
-
- // /* ---------- evaluation ---------- */
-
- // ros::Time te1 = ros::Time::now();
- // double time_now = (te1 - opt->time_start_).toSec();
- // opt->vec_time_.push_back(time_now);
- // if (opt->vec_cost_.size() == 0)
- // {
- // opt->vec_cost_.push_back(f_combine);
- // }
- // else if (opt->vec_cost_.back() > f_combine)
- // {
- // opt->vec_cost_.push_back(f_combine);
- // }
- // else
- // {
- // opt->vec_cost_.push_back(opt->vec_cost_.back());
- // }
-}
-
-} // namespace dyn_planner
\ No newline at end of file
diff --git a/dyn_planner/bspline_opt/src/non_uniform_bspline.cpp b/dyn_planner/bspline_opt/src/non_uniform_bspline.cpp
deleted file mode 100644
index 11ae1f529..000000000
--- a/dyn_planner/bspline_opt/src/non_uniform_bspline.cpp
+++ /dev/null
@@ -1,714 +0,0 @@
-#include "bspline_opt/non_uniform_bspline.h"
-#include
-
-namespace dyn_planner
-{
-double NonUniformBspline::limit_vel_;
-double NonUniformBspline::limit_acc_;
-double NonUniformBspline::limit_ratio_;
-
-// control points is a (n+1)x3 matrix
-NonUniformBspline::NonUniformBspline(Eigen::MatrixXd points, int order, double interval_, bool zero)
-{
- this->p_ = order;
-
- control_points_ = points;
- this->n_ = points.rows() - 1;
-
- this->m_ = this->n_ + this->p_ + 1;
-
- // calculate knots vector
- this->interval_ = interval_;
- this->u_ = Eigen::VectorXd::Zero(this->m_ + 1);
- for (int i = 0; i <= this->m_; ++i)
- {
- if (i <= this->p_)
- this->u_(i) = double(-this->p_ + i) * this->interval_;
-
- else if (i > this->p_ && i <= this->m_ - this->p_)
- {
- this->u_(i) = this->u_(i - 1) + this->interval_;
- }
- else if (i > this->m_ - this->p_)
- {
- this->u_(i) = this->u_(i - 1) + this->interval_;
- }
- }
-
- // show the result
- // cout << "p_: " << p_ << " n: " << n << " m: " << m << endl;
- // cout << "control pts:\n" << control_points_ << "\nknots:\n" <<
- // this->u_.transpose() << endl; cout << "M3:\n" << M[0] << "\nM4:\n" << M[1]
- // << "\nM5:\n" << M[2] << endl;
-
- if (zero)
- {
- x0_ = (1 / 6.0) * (control_points_.row(0) + 4 * control_points_.row(1) + control_points_.row(2));
- v0_ = (1 / 2.0 / interval_) * (control_points_.row(2) - control_points_.row(0));
- a0_ = (1 / interval_ / interval_) * (control_points_.row(0) - 2 * control_points_.row(1) + control_points_.row(2));
-
- // cout << "initial state: " << x0_.transpose() << "\n"
- // << v0_.transpose() << "\n"
- // << a0_.transpose() << endl;
- }
-}
-
-NonUniformBspline::~NonUniformBspline()
-{
-}
-
-void NonUniformBspline::setKnot(Eigen::VectorXd knot)
-{
- this->u_ = knot;
-}
-
-Eigen::VectorXd NonUniformBspline::getKnot()
-{
- return this->u_;
-}
-
-void NonUniformBspline::getTimeSpan(double& um, double& um_p)
-{
- um = this->u_(this->p_);
- um_p = this->u_(this->m_ - this->p_);
-}
-
-Eigen::Vector3d NonUniformBspline::evaluateDeBoor(double t)
-{
- if (t < this->u_(this->p_) || t > this->u_(this->m_ - this->p_))
- {
- cout << "Out of trajectory range." << endl;
- // return Eigen::Vector3d::Zero(3);
- if (t < this->u_(this->p_))
- t = this->u_(this->p_);
- if (t > this->u_(this->m_ - this->p_))
- t = this->u_(this->m_ - this->p_);
- }
-
- // determine which [ui,ui+1] lay in
- int k = this->p_;
- while (true)
- {
- if (this->u_(k + 1) >= t)
- break;
- ++k;
- }
-
- /* deBoor's alg */
- vector d;
- for (int i = 0; i <= p_; ++i)
- {
- d.push_back(control_points_.row(k - p_ + i));
- // cout << d[i].transpose() << endl;
- }
-
- for (int r = 1; r <= p_; ++r)
- {
- for (int i = p_; i >= r; --i)
- {
- double alpha = (t - u_[i + k - p_]) / (u_[i + 1 + k - r] - u_[i + k - p_]);
- // cout << "alpha: " << alpha << endl;
- d[i] = (1 - alpha) * d[i - 1] + alpha * d[i];
- }
- }
-
- return d[p_];
-}
-
-Eigen::MatrixXd NonUniformBspline::getDerivativeControlPoints()
-{
- // The derivative of a b-spline is also a b-spline, its order become p_-1
- // control point Qi = p_*(Pi+1-Pi)/(ui+p_+1-ui+1)
- Eigen::MatrixXd ctp = Eigen::MatrixXd::Zero(control_points_.rows() - 1, 3);
- for (int i = 0; i < ctp.rows(); ++i)
- {
- ctp.row(i) = p_ * (control_points_.row(i + 1) - control_points_.row(i)) / (u_(i + p_ + 1) - u_(i + 1));
- }
- return ctp;
-}
-
-NonUniformBspline NonUniformBspline::getDerivative()
-{
- Eigen::MatrixXd ctp = this->getDerivativeControlPoints();
- NonUniformBspline derivative = NonUniformBspline(ctp, p_ - 1, this->interval_, false);
-
- /* cut the first and last knot */
- Eigen::VectorXd knot(this->u_.rows() - 2);
- knot = this->u_.segment(1, this->u_.rows() - 2);
- derivative.setKnot(knot);
-
- return derivative;
-}
-
-bool NonUniformBspline::checkFeasibility(bool show)
-{
- bool fea = true;
- // SETY << "[Bspline]: total points size: " << control_points_.rows() << endl;
-
- Eigen::MatrixXd P = control_points_;
-
- /* check vel feasibility and insert points */
- double max_vel = -1.0;
- for (int i = 0; i < P.rows() - 1; ++i)
- {
- Eigen::Vector3d vel = p_ * (P.row(i + 1) - P.row(i)) / (u_(i + p_ + 1) - u_(i + 1));
- if (fabs(vel(0)) > limit_vel_ + 1e-4 || fabs(vel(1)) > limit_vel_ + 1e-4 || fabs(vel(2)) > limit_vel_ + 1e-4)
- {
- /* insert mid point */
- if (show)
- cout << "[Check]: Infeasible vel " << i << " :" << vel.transpose() << endl;
- fea = false;
- max_vel = max(max_vel, fabs(vel(0)));
- max_vel = max(max_vel, fabs(vel(1)));
- max_vel = max(max_vel, fabs(vel(2)));
- }
- }
-
- /* acc feasibility */
- double max_acc = -1.0;
- for (int i = 0; i < P.rows() - 2; ++i)
- {
- Eigen::Vector3d acc = p_ * (p_ - 1) *
- ((P.row(i + 2) - P.row(i + 1)) / (u_(i + p_ + 2) - u_(i + 2)) -
- (P.row(i + 1) - P.row(i)) / (u_(i + p_ + 1) - u_(i + 1))) /
- (u_(i + p_ + 1) - u_(i + 2));
-
- if (fabs(acc(0)) > limit_acc_ + 1e-4 || fabs(acc(1)) > limit_acc_ + 1e-4 || fabs(acc(2)) > limit_acc_ + 1e-4)
- {
- /* insert mid point */
- if (show)
- cout << "[Check]: Infeasible acc " << i << " :" << acc.transpose() << endl;
- fea = false;
- max_acc = max(max_acc, fabs(acc(0)));
- max_acc = max(max_acc, fabs(acc(1)));
- max_acc = max(max_acc, fabs(acc(2)));
-
- double ma = max(fabs(acc(0)), fabs(acc(1)));
- ma = max(ma, fabs(acc(2)));
-
- double ratio = sqrt(ma / limit_acc_) + 1e-4;
- // cout << "ratio: " << ratio << endl;
- }
- }
-
- // cout << "max vel:" << max_vel << ", max acc:" << max_acc << endl;
- double ratio = max(max_vel / limit_vel_, sqrt(fabs(max_acc) / limit_acc_));
- // cout << "check ratio:" << ratio << endl;
-
- return fea;
-}
-
-bool NonUniformBspline::reallocateTime(bool show)
-{
- // SETY << "[Bspline]: total points size: " << control_points_.rows() << endl;
- // cout << "origin knots:\n" << u_.transpose() << endl;
- bool fea = true;
-
- // double tm, tmp;
- // getTimeSpan(tm, tmp);
- // double to = tmp - tm;
- // cout << "origin duration: " << to << endl;
-
- Eigen::MatrixXd P = control_points_;
-
- /* check vel feasibility and insert points */
- double max_vel = -1.0;
- for (int i = 0; i < P.rows() - 1; ++i)
- {
- Eigen::Vector3d vel = p_ * (P.row(i + 1) - P.row(i)) / (u_(i + p_ + 1) - u_(i + 1));
- if (fabs(vel(0)) > limit_vel_ + 1e-4 || fabs(vel(1)) > limit_vel_ + 1e-4 || fabs(vel(2)) > limit_vel_ + 1e-4)
- {
- fea = false;
- max_vel = -1.0;
- max_vel = max(max_vel, fabs(vel(0)));
- max_vel = max(max_vel, fabs(vel(1)));
- max_vel = max(max_vel, fabs(vel(2)));
- if (show)
- cout << "[Realloc]: Infeasible vel " << i << " :" << vel.transpose() << endl;
-
- double ratio = max_vel / limit_vel_ + 1e-4;
- if (ratio > limit_ratio_)
- ratio = limit_ratio_;
-
- double time_ori = u_(i + p_ + 1) - u_(i + 1);
- double time_new = ratio * time_ori;
- double delta_t = time_new - time_ori;
- double t_inc = delta_t / double(p_);
-
- for (int j = i + 2; j <= i + p_ + 1; ++j)
- {
- u_(j) += double(j - i - 1) * t_inc;
- if (j <= 5 && j >= 1)
- {
- // cout << "vel j: " << j << endl;
- }
- }
-
- for (int j = i + p_ + 2; j < u_.rows(); ++j)
- {
- u_(j) += delta_t;
- }
- }
- }
-
- /* acc feasibility */
- double max_acc = -1.0;
- for (int i = 0; i < P.rows() - 2; ++i)
- {
- Eigen::Vector3d acc = p_ * (p_ - 1) *
- ((P.row(i + 2) - P.row(i + 1)) / (u_(i + p_ + 2) - u_(i + 2)) -
- (P.row(i + 1) - P.row(i)) / (u_(i + p_ + 1) - u_(i + 1))) /
- (u_(i + p_ + 1) - u_(i + 2));
-
- if (fabs(acc(0)) > limit_acc_ + 1e-4 || fabs(acc(1)) > limit_acc_ + 1e-4 || fabs(acc(2)) > limit_acc_ + 1e-4)
- {
- fea = false;
- /* insert mid point */
- max_acc = -1.0;
- max_acc = max(max_acc, fabs(acc(0)));
- max_acc = max(max_acc, fabs(acc(1)));
- max_acc = max(max_acc, fabs(acc(2)));
- if (show)
- cout << "[Realloc]: Infeasible acc " << i << " :" << acc.transpose() << endl;
-
- double ratio = sqrt(max_acc / limit_acc_) + 1e-4;
- if (ratio > limit_ratio_)
- ratio = limit_ratio_;
- // cout << "ratio: " << ratio << endl;
-
- double time_ori = u_(i + p_ + 1) - u_(i + 2);
- double time_new = ratio * time_ori;
- double delta_t = time_new - time_ori;
- double t_inc = delta_t / double(p_ - 1);
-
- if (i == 1 || i == 2)
- {
- // cout << "acc i: " << i << endl;
- for (int j = 2; j <= 5; ++j)
- {
- u_(j) += double(j - 1) * t_inc;
- }
-
- for (int j = 6; j < u_.rows(); ++j)
- {
- u_(j) += 4.0 * t_inc;
- }
- }
- else
- {
- for (int j = i + 3; j <= i + p_ + 1; ++j)
- {
- u_(j) += double(j - i - 2) * t_inc;
- if (j <= 5 && j >= 1)
- {
- // cout << "acc j: " << j << endl;
- }
- }
-
- for (int j = i + p_ + 2; j < u_.rows(); ++j)
- {
- u_(j) += delta_t;
- }
- }
- }
- }
-
- // cout << "new knots:\n" << u_.transpose() << endl;
- // getTimeSpan(tm, tmp);
- // double tn = tmp - tm;
- // cout << "new duration: " << tn << endl;
- // SETY << "realloc ratio: " << tn / to << endl;
-
- return fea;
-}
-
-bool NonUniformBspline::adjustTime(bool show)
-{
- bool fea = true;
-
- // double tm, tmp;
- // getTimeSpan(tm, tmp);
- // double to = tmp - tm;
- // cout << "origin duration: " << to << endl;
-
- Eigen::MatrixXd P = control_points_;
-
- /* check vel feasibility and insert points */
- double max_vel = -1.0;
- for (int i = 3; i < P.rows() - 1 - 3; ++i)
- {
- Eigen::Vector3d vel = p_ * (P.row(i + 1) - P.row(i)) / (u_(i + p_ + 1) - u_(i + 1));
- if (fabs(vel(0)) > limit_vel_ + 1e-4 || fabs(vel(1)) > limit_vel_ + 1e-4 || fabs(vel(2)) > limit_vel_ + 1e-4)
- {
- fea = false;
- max_vel = -1.0;
- max_vel = max(max_vel, fabs(vel(0)));
- max_vel = max(max_vel, fabs(vel(1)));
- max_vel = max(max_vel, fabs(vel(2)));
- if (show)
- cout << "[Realloc]: Infeasible vel " << i << " :" << vel.transpose() << endl;
-
- double ratio = max_vel / limit_vel_ + 1e-4;
- if (ratio > limit_ratio_)
- ratio = limit_ratio_;
-
- double time_ori = u_(i + p_ + 1) - u_(i + 1);
- double time_new = ratio * time_ori;
- double delta_t = time_new - time_ori;
- double t_inc = delta_t / double(p_);
-
- for (int j = i + 2; j <= i + p_ + 1; ++j)
- {
- u_(j) += double(j - i - 1) * t_inc;
- if (j <= 5 && j >= 1)
- {
- // cout << "vel j: " << j << endl;
- }
- }
-
- for (int j = i + p_ + 2; j < u_.rows(); ++j)
- {
- u_(j) += delta_t;
- }
- }
- }
-
- /* acc feasibility */
- double max_acc = -1.0;
- for (int i = 3; i < P.rows() - 2 - 3; ++i)
- {
- Eigen::Vector3d acc = p_ * (p_ - 1) *
- ((P.row(i + 2) - P.row(i + 1)) / (u_(i + p_ + 2) - u_(i + 2)) -
- (P.row(i + 1) - P.row(i)) / (u_(i + p_ + 1) - u_(i + 1))) /
- (u_(i + p_ + 1) - u_(i + 2));
-
- if (fabs(acc(0)) > limit_acc_ + 1e-4 || fabs(acc(1)) > limit_acc_ + 1e-4 || fabs(acc(2)) > limit_acc_ + 1e-4)
- {
- fea = false;
- /* insert mid point */
- max_acc = -1.0;
- max_acc = max(max_acc, fabs(acc(0)));
- max_acc = max(max_acc, fabs(acc(1)));
- max_acc = max(max_acc, fabs(acc(2)));
- if (show)
- cout << "[Realloc]: Infeasible acc " << i << " :" << acc.transpose() << endl;
-
- double ratio = sqrt(max_acc / limit_acc_) + 1e-4;
- if (ratio > limit_ratio_)
- ratio = limit_ratio_;
- // cout << "ratio: " << ratio << endl;
-
- double time_ori = u_(i + p_ + 1) - u_(i + 2);
- double time_new = ratio * time_ori;
- double delta_t = time_new - time_ori;
- double t_inc = delta_t / double(p_ - 1);
-
- if (i == 1 || i == 2)
- {
- // cout << "acc i: " << i << endl;
- for (int j = 2; j <= 5; ++j)
- {
- u_(j) += double(j - 1) * t_inc;
- }
-
- for (int j = 6; j < u_.rows(); ++j)
- {
- u_(j) += 4.0 * t_inc;
- }
- }
- else
- {
- for (int j = i + 3; j <= i + p_ + 1; ++j)
- {
- u_(j) += double(j - i - 2) * t_inc;
- if (j <= 5 && j >= 1)
- {
- // cout << "acc j: " << j << endl;
- }
- }
-
- for (int j = i + p_ + 2; j < u_.rows(); ++j)
- {
- u_(j) += delta_t;
- }
- }
- }
- }
-
- // cout << "new knots:\n" << u_.transpose() << endl;
- // getTimeSpan(tm, tmp);
- // double tn = tmp - tm;
- // cout << "new duration: " << tn << endl;
- // SETY << "realloc ratio: " << tn / to << endl;
-
- return fea;
-}
-
-void NonUniformBspline::recomputeInit()
-{
- double t1 = u_(1), t2 = u_(2), t3 = u_(3), t4 = u_(4), t5 = u_(5);
-
- /* write the A matrix */
- Eigen::Matrix3d A;
-
- /* position */
- A(0, 0) = ((t2 - t5) * (t3 - t4) * (t3 - t4)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
- A(0, 1) = ((t2 - t5) * (t3 - t4) * (t1 - t3)) / ((t1 - t4) * (t2 - t4) * (t2 - t5)) +
- ((t1 - t4) * (t2 - t3) * (t3 - t5)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
- A(0, 2) = ((t1 - t4) * (t2 - t3) * (t2 - t3)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
-
- /* velocity */
- A(1, 0) = 3.0 * ((t2 - t5) * (t3 - t4)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
- A(1, 1) = 3.0 * ((t1 - t4) * (t2 - t3) - (t2 - t5) * (t3 - t4)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
- A(1, 2) = -3.0 * ((t1 - t4) * (t2 - t3)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
-
- /* acceleration */
- A(2, 0) = 6.0 * (t2 - t5) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
- A(2, 1) = -6.0 * ((t1 - t4) + (t2 - t5)) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
- A(2, 2) = 6.0 * (t1 - t4) / ((t1 - t4) * (t2 - t4) * (t2 - t5));
-
- /* write B = (bx, by, bz) */
- Eigen::Matrix3d B;
- Eigen::Vector3d bx, by, bz;
- B.row(0) = x0_;
- B.row(1) = v0_;
- B.row(2) = a0_;
- // cout << "B:\n" << B << endl;
-
- bx = B.col(0);
- by = B.col(1);
- bz = B.col(2);
-
- /* solve */
- Eigen::Vector3d px = A.colPivHouseholderQr().solve(bx);
- Eigen::Vector3d py = A.colPivHouseholderQr().solve(by);
- Eigen::Vector3d pz = A.colPivHouseholderQr().solve(bz);
-
- Eigen::Matrix3d P;
- P.col(0) = px;
- P.col(1) = py;
- P.col(2) = pz;
-
- control_points_.row(0) = P.row(0);
- control_points_.row(1) = P.row(1);
- control_points_.row(2) = P.row(2);
-
- B = A * P;
- // cout << "B:\n" << B << endl;
-}
-
-// input :
-// sample : 3 x (K+2) (for 3 order) for x, y, z sample
-// ts
-// output:
-// control_pts (K+6)x3
-void NonUniformBspline::getControlPointEqu3(Eigen::MatrixXd samples, double ts, Eigen::MatrixXd& control_pts)
-{
- int K = samples.cols() - 4 - 1;
-
- // write A
- Eigen::VectorXd prow(3), vrow(3), arow(3);
- prow << 1, 4, 1;
- vrow << -1, 0, 1;
- arow << 1, -2, 1;
-
- Eigen::MatrixXd A = Eigen::MatrixXd::Zero(K + 5, K + 4);
-
- for (int i = 0; i < K + 2; ++i)
- A.block(i, i, 1, 3) = prow.transpose();
-
- A.block(K + 2, 0, 1, 3) = A.block(K + 3, K + 1, 1, 3) = vrow.transpose();
- A.block(K + 4, 0, 1, 3) = arow.transpose();
-
- // cout << "A:\n" << A << endl;
- A.block(0, 0, K + 2, K + 4) = (1 / 6.0) * A.block(0, 0, K + 2, K + 4);
- A.block(K + 2, 0, 2, K + 4) = (1 / 2.0 / ts) * A.block(K + 2, 0, 2, K + 4);
- A.row(K + 4) = (1 / ts / ts) * A.row(K + 4);
-
- // write b
- Eigen::VectorXd bx(K + 5), by(K + 5), bz(K + 5);
- for (int i = 0; i < K + 5; ++i)
- {
- bx(i) = samples(0, i);
- by(i) = samples(1, i);
- bz(i) = samples(2, i);
- }
-
- // solve Ax = b
- Eigen::VectorXd px = A.colPivHouseholderQr().solve(bx);
- Eigen::VectorXd py = A.colPivHouseholderQr().solve(by);
- Eigen::VectorXd pz = A.colPivHouseholderQr().solve(bz);
-
- // convert to control pts
- control_pts.resize(K + 4, 3);
- control_pts.col(0) = px;
- control_pts.col(1) = py;
- control_pts.col(2) = pz;
-}
-
-void NonUniformBspline::BsplineParameterize(const double& ts, const vector& point_set,
- const vector& start_end_derivative,
- Eigen::MatrixXd& ctrl_pts)
-{
- if (ts <= 0)
- {
- cout << "[B-spline]:time step error." << endl;
- return;
- }
-
- if (point_set.size() <= 3)
- {
- cout << "[B-spline]:point set have only " << point_set.size() << " points." << endl;
- return;
- }
-
- if (start_end_derivative.size() != 4)
- {
- cout << "[B-spline]:derivatives error." << endl;
- }
-
- int K = point_set.size() - 2;
-
- // write A
- Eigen::VectorXd prow(3), vrow(3), arow(3);
- prow << 1, 4, 1;
- vrow << -1, 0, 1;
- arow << 1, -2, 1;
-
- Eigen::MatrixXd A = Eigen::MatrixXd::Zero(K + 6, K + 4);
-
- for (int i = 0; i < K + 2; ++i)
- A.block(i, i, 1, 3) = prow.transpose();
- A.block(K + 2, 0, 1, 3) = A.block(K + 3, K + 1, 1, 3) = vrow.transpose();
- A.block(K + 4, 0, 1, 3) = A.block(K + 5, K + 1, 1, 3) = arow.transpose();
-
- // cout << "A:\n" << A << endl;
- A.block(0, 0, K + 2, K + 4) = (1 / 6.0) * A.block(0, 0, K + 2, K + 4);
- A.block(K + 2, 0, 2, K + 4) = (1 / 2.0 / ts) * A.block(K + 2, 0, 2, K + 4);
- A.row(K + 4) = (1 / ts / ts) * A.row(K + 4);
- A.row(K + 5) = (1 / ts / ts) * A.row(K + 5);
-
- // write b
- Eigen::VectorXd bx(K + 6), by(K + 6), bz(K + 6);
- for (int i = 0; i < K + 2; ++i)
- {
- bx(i) = point_set[i](0), by(i) = point_set[i](1), bz(i) = point_set[i](2);
- }
-
- for (int i = 0; i < 4; ++i)
- {
- bx(K + 2 + i) = start_end_derivative[i](0);
- by(K + 2 + i) = start_end_derivative[i](1);
- bz(K + 2 + i) = start_end_derivative[i](2);
- }
-
- // solve Ax = b
- Eigen::VectorXd px = A.colPivHouseholderQr().solve(bx);
- Eigen::VectorXd py = A.colPivHouseholderQr().solve(by);
- Eigen::VectorXd pz = A.colPivHouseholderQr().solve(bz);
-
- // convert to control pts
- ctrl_pts.resize(K + 4, 3);
- ctrl_pts.col(0) = px;
- ctrl_pts.col(1) = py;
- ctrl_pts.col(2) = pz;
-
- cout << "[B-spline]: parameterization ok." << endl;
-}
-
-double NonUniformBspline::getTimeSum()
-{
- double tm, tmp;
- getTimeSpan(tm, tmp);
- return tmp - tm;
-}
-
-double NonUniformBspline::getLength()
-{
- double length = 0.0;
-
- double tm, tmp;
- getTimeSpan(tm, tmp);
- Eigen::Vector3d p_l = evaluateDeBoor(tm), p_n;
- for (double t = tm + 0.01; t <= tmp; t += 0.01)
- {
- p_n = evaluateDeBoor(t);
- length += (p_n - p_l).norm();
- p_n = p_l;
- }
-
- return length;
-}
-
-double NonUniformBspline::getJerk()
-{
- NonUniformBspline jerk_traj = getDerivative().getDerivative().getDerivative();
- Eigen::VectorXd times = jerk_traj.getKnot();
- Eigen::MatrixXd ctrl_pts = jerk_traj.getControlPoint();
-
- cout << "num knot:" << times.rows() << endl;
- cout << "num ctrl pts:" << ctrl_pts.rows() << endl;
-
- double jerk = 0.0;
- for (int i = 0; i < ctrl_pts.rows(); ++i)
- {
- jerk += (times(i + 1) - times(i)) * ctrl_pts(i, 0) * ctrl_pts(i, 0);
- jerk += (times(i + 1) - times(i)) * ctrl_pts(i, 1) * ctrl_pts(i, 1);
- jerk += (times(i + 1) - times(i)) * ctrl_pts(i, 2) * ctrl_pts(i, 2);
- }
-
- return jerk;
-}
-
-void NonUniformBspline::getMeanAndMaxVel(double& mean_v, double& max_v)
-{
- NonUniformBspline vel = getDerivative();
- double tm, tmp;
- vel.getTimeSpan(tm, tmp);
-
- double max_vel = -1.0, mean_vel = 0.0;
- int num = 0;
- for (double t = tm; t <= tmp; t += 0.01)
- {
- Eigen::Vector3d v3d = vel.evaluateDeBoor(t);
- double vn = v3d.norm();
-
- mean_vel += vn;
- ++num;
- if (vn > max_vel)
- {
- max_vel = vn;
- }
- }
-
- mean_vel = mean_vel / double(num);
- mean_v = mean_vel;
- max_v = max_vel;
-}
-
-void NonUniformBspline::getMeanAndMaxAcc(double& mean_a, double& max_a)
-{
- NonUniformBspline acc = getDerivative().getDerivative();
- double tm, tmp;
- acc.getTimeSpan(tm, tmp);
-
- double max_acc = -1.0, mean_acc = 0.0;
- int num = 0;
- for (double t = tm; t <= tmp; t += 0.01)
- {
- Eigen::Vector3d a3d = acc.evaluateDeBoor(t);
- double an = a3d.norm();
-
- mean_acc += an;
- ++num;
- if (an > max_acc)
- {
- max_acc = an;
- }
- }
-
- mean_acc = mean_acc / double(num);
- mean_a = mean_acc;
- max_a = max_acc;
-}
-} // namespace dyn_planner
diff --git a/dyn_planner/log.md b/dyn_planner/log.md
deleted file mode 100644
index 2c24e5003..000000000
--- a/dyn_planner/log.md
+++ /dev/null
@@ -1,31 +0,0 @@
-
-# Environment Rrepresentation
-
-
-
-
-
-
-- bspline optimization using. Env
-
-- dealing with uncertainty. -wenchao paper
-
-- refactor pcd path finder
-
-- pnp
-
-
-ld*(-4*p2**2*t1 + 4*p2**2*t2 - 12*p2*p3*t1**2 + 12*p2*p3*t2**2 - 80*p4*p5*t1**6 + 80*p4*p5*t2**6 - 400*p5**2*t1**7/7 + 400*p5**2*t2**7/7 - t1**5*(48*p3*p5 + 144*p4**2/5) - t1**4*(20*p2*p5 + 36*p3*p4) - t1**3*(16*p2*p4 + 12*p3**2) + t2**5*(48*p3*p5 + 144*p4**2/5) + t2**4*(20*p2*p5 + 36*p3*p4) + t2**3*(16*p2*p4 + 12*p3**2)) + p0**2 + 2*p0*p1*ti + 2*p0*p2*ti**2 + 2*p0*p3*ti**3 + 2*p0*p4*ti**4 + 2*p0*p5*ti**5 - 2*p0*qi + p1**2*ti**2 + 2*p1*p2*ti**3 + 2*p1*p3*ti**4 + 2*p1*p4*ti**5 + 2*p1*p5*ti**6 - 2*p1*qi*ti + p2**2*ti**4 + 2*p2*p3*ti**5 + 2*p2*p4*ti**6 + 2*p2*p5*ti**7 - 2*p2*qi*ti**2 + p3**2*ti**6 + 2*p3*p4*ti**7 + 2*p3*p5*ti**8 - 2*p3*qi*ti**3 + p4**2*ti**8 + 2*p4*p5*ti**9 - 2*p4*qi*ti**4 + p5**2*ti**10 - 2*p5*qi*ti**5 + qi**2
-
-2*p0 + 2*p1*ti + 2*p2*ti**2 + 2*p3*ti**3 + 2*p4*ti**4 + 2*p5*ti**5 - 2*qi
-
-2*ti*(p0 + p1*ti + p2*ti**2 + p3*ti**3 + p4*ti**4 + p5*ti**5 - qi)
-
--4*ld*(2*p2*t1 - 2*p2*t2 + 3*p3*t1**2 - 3*p3*t2**2 + 4*p4*t1**3 - 4*p4*t2**3 + 5*p5*t1**4 - 5*p5*t2**4) + 2*p0*ti**2 + 2*p1*ti**3 + 2*p2*ti**4 + 2*p3*ti**5 + 2*p4*ti**6 + 2*p5*ti**7 - 2*qi*ti**2
-
--12*ld*(p2*t1**2 - p2*t2**2 + 2*p3*t1**3 - 2*p3*t2**3 + 3*p4*t1**4 - 3*p4*t2**4 + 4*p5*t1**5 - 4*p5*t2**5) + 2*p0*ti**3 + 2*p1*ti**4 + 2*p2*ti**5 + 2*p3*ti**6 + 2*p4*ti**7 + 2*p5*ti**8 - 2*qi*ti**3
-
--4*ld*(20*p2*t1**3 - 20*p2*t2**3 + 45*p3*t1**4 - 45*p3*t2**4 + 72*p4*t1**5 - 72*p4*t2**5 + 100*p5*t1**6 - 100*p5*t2**6)/5 + 2*p0*ti**4 + 2*p1*ti**5 + 2*p2*ti**6 + 2*p3*ti**7 + 2*p4*ti**8 + 2*p5*ti**9 - 2*qi*ti**4
-
--4*ld*(35*p2*t1**4 - 35*p2*t2**4 + 84*p3*t1**5 - 84*p3*t2**5 + 140*p4*t1**6 - 140*p4*t2**6 + 200*p5*t1**7 - 200*p5*t2**7)/7 + 2*p0*ti**5 + 2*p1*ti**6 + 2*p2*ti**7 + 2*p3*ti**8 + 2*p4*ti**9 + 2*p5*ti**10 - 2*qi*ti**5
-
diff --git a/dyn_planner/path_searching/CMakeLists.txt b/dyn_planner/path_searching/CMakeLists.txt
deleted file mode 100644
index ce28612aa..000000000
--- a/dyn_planner/path_searching/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(path_searching)
-
-find_package(Eigen3 REQUIRED)
-find_package(PCL 1.7 REQUIRED)
-
-find_package(catkin REQUIRED COMPONENTS
- roscpp
- rospy
- std_msgs
- visualization_msgs
- plan_env
-)
-
-
-catkin_package(
- INCLUDE_DIRS include
- LIBRARIES path_searching
- CATKIN_DEPENDS plan_env
-# DEPENDS system_lib
-)
-
-include_directories(
- SYSTEM
- include
- ${catkin_INCLUDE_DIRS}
- ${Eigen3_INCLUDE_DIRS}
- ${PCL_INCLUDE_DIRS}
-)
-
-set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS} -O3 -Wall")
-
-add_library( path_searching
- src/kinodynamic_astar.cpp
- src/astar.cpp
- )
-target_link_libraries( path_searching
- ${catkin_LIBRARIES}
- )
diff --git a/dyn_planner/path_searching/include/path_searching/astar.h b/dyn_planner/path_searching/include/path_searching/astar.h
deleted file mode 100644
index 2aa894a33..000000000
--- a/dyn_planner/path_searching/include/path_searching/astar.h
+++ /dev/null
@@ -1,173 +0,0 @@
-#ifndef _ASTAR_H
-#define _ASTAR_H
-
-#include
-#include
-#include
-#include
-#include