zju-fast-lab / dftpav Goto Github PK
View Code? Open in Web Editor NEWA lightweight differential flatness-based trajectory planner for car-like robots
License: GNU General Public License v3.0
A lightweight differential flatness-based trajectory planner for car-like robots
License: GNU General Public License v3.0
非常感谢作者的分享,能否请教一个编译过程中遇到的问题?
尝试了重新安装absl与protobuf,两者应该都是最新版本,但是编译过程出现如下报错,与“absl::lts_20230802”相关。看起来与absl版本相关。
类似报错:protocolbuffers/protobuf#12292 ,没找到解决方法。
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `bool absl::lts_20230802::str_format_internal::FormatA
rgImpl::Dispatch<long>(absl::lts_20230802::str_format_internal::FormatArgImpl::Data, absl::lts_20230802::str_format_internal::F
ormatConversionSpecImpl, void*)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `bool absl::lts_20230802::str_format_internal::FormatA
rgImpl::Dispatch<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(absl::lts_20230802::str_form
at_internal::FormatArgImpl::Data, absl::lts_20230802::str_format_internal::FormatConversionSpecImpl, void*)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::container_internal::DropDeletesWi
thoutResize(absl::lts_20230802::container_internal::CommonFields&, absl::lts_20230802::container_internal::PolicyFunctions cons
t&, void*)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::hash_internal::MixingHashState::L
owLevelHashImpl(unsigned char const*, unsigned long)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::Mutex::AssertHeld() const'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::log_internal::LogMessage& absl::l
ts_20230802::log_internal::LogMessage::operator<< <void*, 0>(void* const&)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::strings_internal::CatPieces[abi:c
xx11](std::initializer_list<absl::lts_20230802::string_view>)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::numbers_internal::kHexTable'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::log_internal::LogMessage& absl::l
ts_20230802::log_internal::LogMessage::operator<< <unsigned short, 0>(unsigned short const&)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `google::protobuf::internal::AssignDescriptors(google$
:protobuf::internal::DescriptorTable const* (*)(), absl::once_flag*, google::protobuf::Metadata const&)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::internal_statusor::Helper::Crash(
absl::lts_20230802::Status const&)'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::hash_internal::MixingHashState::k
Seed'
/home/ldx/ws/Dftpav/devel/lib/libhkust_pl_ssc.so: undefined reference to `absl::lts_20230802::ascii_internal::kPropertyBits'
collect2: error: ld returned 1 exit status
Hi, we can obtain the simulation process of unstructured environments from the doc, but how can we simulate dynamic urban road environments? Could you provide some guidance on this?
啥时候开源源码啊
when i run the script, "No map is updated" showed in the terminal.
I wrote a similar code on a trajectory planner, and it failed to iterate, or iterated poorly, if the chosen initial values were not close to the true value.
我编写了一个和您论文中相似的算法,但是我经过测试,如果初值不是一个比较好的数值,那么迭代进行不下去,甚至会出错,如下图所示,我模仿TEB中的例子,一个圆形的可拖动的障碍物,如果初始路径点选取经过障碍物,尽管添加了障碍物约束,但是它不能有效的弹开,不能达到teb算法中的范例中的效果;
这是我的代码运行效果的视频,请大佬给一点建议,诚盼您的回复,真心感激不尽!
https://github.com/ZJU-FAST-Lab/Dftpav/assets/42513042/5e7503de-1673-4e6b-ac29-e49de5bf4044
n file included from /home/hou/dftpav/src/Dftpav/src/Sim/util/ssc_planner/inc/ssc_planner/ssc_planner.h:27,
from /home/hou/dftpav/src/Dftpav/src/Sim/util/ssc_planner/src/ssc_planner/ssc_planner.cc:9:
/home/hou/dftpav/build/Dftpav/src/Sim/util/ssc_planner/ssc_config.pb.h:10:10: fatal error: google/protobuf/port_def.inc: 没有那个文件或目录
10 | #include <google/protobuf/port_def.inc>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
I encountered the following error while compiling the working directory, and I did not make any changes to the source code. May I ask if the author has encountered it before, or if there are any solutions.
/usr/bin/c++ -fPIC -std=c++14 -g -O3 -Wall -O3 -Wall -shared -Wl,-soname,libhkust_pl_ooqp_itf.so -o /home/kang/diffFlat_Planner/devel/lib/libhkust_pl_ooqp_itf.so CMakeFiles/hkust_pl_ooqp_itf.dir/src/common/solver/ooqp_interface.cc.o CMakeFiles/hkust_pl_ooqp_itf.dir/src/common/solver/qp_solver.cc.o /home/kang/diffFlat_Planner/src/Dftpav/src/Sim/core/common/thirdparty/ooqp/lib/libooqpgensparse.a /home/kang/diffFlat_Planner/src/Dftpav/src/Sim/core/common/thirdparty/ooqp/lib/libooqpsparse.a /home/kang/diffFlat_Planner/src/Dftpav/src/Sim/core/common/thirdparty/ooqp/lib/libooqpgondzio.a /home/kang/diffFlat_Planner/src/Dftpav/src/Sim/core/common/thirdparty/ooqp/lib/libooqpbase.a /home/kang/diffFlat_Planner/src/Dftpav/src/Sim/core/common/thirdparty/ooqp/lib/libma27.a -lblas -lgfortran
/usr/bin/ld: cannot find -lgfortran
collect2: error: ld returned 1 exit status
Dftpav/src/Sim/core/common/CMakeFiles/hkust_pl_ooqp_itf.dir/build.make:120: recipe for target '/home/kang/diffFlat_Planner/devel/lib/libhkust_pl_ooqp_itf.so' failed
make[2]: *** [/home/kang/diffFlat_Planner/devel/lib/libhkust_pl_ooqp_itf.so] Error 1
CMakeFiles/Makefile2:2636: recipe for target 'Dftpav/src/Sim/core/common/CMakeFiles/hkust_pl_ooqp_itf.dir/all' failed
make[1]: *** [Dftpav/src/Sim/core/common/CMakeFiles/hkust_pl_ooqp_itf.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
MainThread [0x7f527df57e48]
121: while (true) {
122: current_start_time = system_clock::now();
123: next_start_time = current_start_time + interval;
> 124: PlanCycleCallback();
125: std::this_thread::sleep_until(next_start_time);
126: }
127: }
#10 Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/traj_server_ros.cpp", line 168, in PlanCycleCallback [0x7f527df57d3c]
165: fsm_num++;
166: if (fsm_num > 100000||CheckReplan()) {
167: if (next_traj_ == nullptr) {
> 168: Replan();
169: // return;
170: }
171: if (next_traj_ !=nullptr) {
#9 | Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/traj_server_ros.cpp", line 417, in operator()
| 415: if(executing_traj_ ==nullptr){
| 416: p_planner_->set_initial_state(desired_state);
| > 417: if (trajplan()!= kSuccess) {
| 418: Display();
| 419: return kWrongStatus;
Source "/usr/include/c++/7/bits/std_function.h", line 706, in Replan [0x7f527df570d1]
703: {
704: if (_M_empty())
705: __throw_bad_function_call();
> 706: return _M_invoker(_M_functor, std::forward<ArgTypes>(args)...);
707: }
708:
709: #if cpp_rtti
#8 Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/traj_manager.cpp", line 203, in RunOnceParking [0x7f527a14a299]
200: }
201:
202: double frontendt1 = ros::Time::now().toSec();
> 203: if (getKinoPath(parking_end) != kSuccess){
204: LOG(ERROR) << "[PolyTrajManager Parking] fail to get the front-end.\n";
205: return kWrongStatus;
206: }
#7 Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/traj_manager.cpp", line 85, in getKinoPath [0x7f527a140562]
82: // start_state << -26.3909, 20.7379 ,1.57702 , 0; end_state << -45.4141, 10.3171 ,0.0600779 , 0.01;
83: std::cout<<"start state: "<<start_state.transpose()<<" end_state: "<<end_state.transpose()<<std::endl;
84: std::cout<<"init ctrl: "<<init_ctrl.transpose()<<std::endl;
> 85: int status = kino_path_finder->search(start_state, init_ctrl, end_state, true);
86: double searcht2 = ros::Time::now().toSec();
87: if (status == path_searching::KinoAstar::NO_PATH)
88: {
#6 Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/kino_astar.cpp", line 92, in search [0x7f527a16661d]
89: double t1 = ros::Time::now().toSec();
90: if((cur_node->state.head(2) - end_state.head(2)).norm()<15.0&& initsearch){
91:
> 92: is_shot_sucess(cur_node->state,end_state.head(3));
93: }
94: double t2 = ros::Time::now().toSec();
95: // std::cout<<"one-shot time: "<<(t2-t1)*1000<<" ms"<<std::endl;
#5 Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/kino_astar.cpp", line 309, in is_shot_sucess [0x7f527a161d13]
306: std::vectorEigen::Vector3d path_list;
307: double len;
308: double ct1 = ros::Time::now().toSec();
> 309: computeShotTraj(state1,state2,path_list,len);
310: double ct2 = ros::Time::now().toSec();
311: // std::cout<<"compute shot traj time: "<<(ct2-ct1)*1000.0<<" ms"<<std::endl;
312: bool is_occ = false;
#4 Source "/home/zz/open_learn_code/demo1_auto_drive_ws/src/Dftpav/src/Plan/traj_planner/src/kino_astar.cpp", line 332, in computeShotTraj [0x7f527a1618c8]
329: double& len){
330: namespace ob = ompl::base;
331: namespace og = ompl::geometric;
> 332: ob::ScopedState<> from(shotptr), to(shotptr), s(shotptr);
333: from[0] = state1[0]; from[1] = state1[1]; from[2] = state1[2];
334: to[0] = state2[0]; to[1] = state2[1]; to[2] = state2[2];
335: std::vector reals;
#3 Source "/opt/ros/melodic/include/ompl/base/ScopedState.h", line 86, in ScopedState [0x7f527a16884e]
83: allocate a state. */
84: explicit ScopedState(StateSpacePtr space) : space(std::move(space))
85: {
> 86: State *s = space->allocState();
87:
88: // ideally, this should be a dynamic_cast and we
89: // should throw an exception in case of
#2 Object "/usr/lib/x86_64-linux-gnu/libompl.so.1.2.1", at 0x7f5277537ac6, in ompl::base::CompoundStateSpace::printState(ompl::base::State const*, std::ostream&) const
#1 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25", at 0x7f527c7c2a77, in std::basic_ostream<char, std::char_traits >& std::__ostream_insert<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const*, long)
#0 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25", at 0x7f527c7c23f6, in std::ostream::sentry::sentry(std::ostream&)
Segmentation fault (Signal sent by the kernel [(nil)])
[park_0-1] process has died [pid 30974, exit code -11, cmd /home/zz/open_learn_code/demo1_auto_drive_ws/devel/lib/planning_integrated/park ~arena_info_static:=/arena_info_static ~arena_info_dynamic:=/arena_info_dynamic ~ctrl:=/ctrl/agent_0 __name:=park_0 __log:=/home/zz/.ros/log/88641df6-4357-11ef-9389-50eb71d1e115/park_0-1.log].
log file: /home/zz/.ros/log/88641df6-4357-11ef-9389-50eb71d1e115/park_0-1*.log
论文中曲率求导的公式1. delta_G/delta_dsigma = 2*(ddsigma^T * B * dsigma) / ||dsigma||_2^3 (.....) 2. delta_G/delta_ddsigma = 2(ddsigma^T B* dsigma)(...), 在代码实现中公式1,只计算了括号内的,没有计算括号前的内容, 公式2, 括号内disigma二范数的6次方, 代码为 3次方,括号前的内容也没有计算,请问,代码是否计算错误,还是有意省略
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.