混合式A星代码解析_2 规划主程序Planner.cpp

3.规划程序 Planner.cpp

在main.cpp中,起主要作用的就是:

HybridAStar::Planner hy;
hy.plan();

规划算法都是在HybridAStar::Planner这个类内部进行运算的.所以主要分析以下Planner类.

3.0 实例化的对象

在planner.h中,定义了很多对象,用于最终生成规划路径.

hybridA星生成的路径:

Path path;

用于优化路径的平滑器:

Smoother smoother;

平滑后的路径:

Path smoothedPath = Path(true);

搜索的可视化:

Visualize visualization;

障碍物检测:

CollisionDetection configurationSpace;

voronoi图:

The voronoi diagram

规划时的珊格占用点:

nav_msgs::OccupancyGrid::Ptr grid;

3.1 构造函数 Planner::Planner( )

主要是订阅和发布消息

(1)订阅消息

  • 规划起点:/initialpose
  • 规划终点:/move_base_simple/goal
  • 地图:/map

(2)发布消息

  • 规划起点:/move_base_simple/start

3.2 (核心)规划函数 plan( )

规划路径主函数

3.2.1 外围框架

采用结构的是

if (validStart && validGoal) { }
else{ }

只有当规划的起点和终点都有效时,才会规划路径.

这里就涉及到如何判断规划的起点和终点是否有效的问题.

  • 起点有效的条件有两个(有一个满足就ok):
  1. 如果是在动态地图工作模式下,如果受到了地图消息,就会在回调函数 setMap()中,对start点的有效性进行判断,此时start点会设置成机器的坐标/base_link,如果机器人的坐标位于地图范围内,则start有效.否则无效.
  2. 如果是在静态地图工作模式下,则只在回调函数setStart()中进行判断.
  • 判断终点是否有效的条件就1个,那就是只在回调函数setGoal()中进行判断

3.2.2 定义栅格的尺寸和离散的数量

// ___________________________

// LISTS ALLOWCATED ROW MAJOR ORDER

int width = grid->info.width;

int height = grid->info.height;

int depth = Constants::headings;

int length = width * height * depth;

// define list pointers and initialize lists

Node3D* nodes3D = new Node3D[length]();

Node2D* nodes2D = new Node2D[width * height]();

3.2.3 取出规划的goal和start

// ________________________

// retrieving goal position

float x = goal.pose.position.x / Constants::cellSize;

float y = goal.pose.position.y / Constants::cellSize;

float t = tf::getYaw(goal.pose.orientation);

// set theta to a value (0,2PI]

t = Helper::normalizeHeadingRad(t);

const Node3D nGoal(x, y, t, 0, 0, nullptr);
// _________________________

// retrieving start position

x = start.pose.pose.position.x / Constants::cellSize;

y = start.pose.pose.position.y / Constants::cellSize;

t = tf::getYaw(start.pose.pose.orientation);

// set theta to a value (0,2PI]

t = Helper::normalizeHeadingRad(t);

Node3D nStart(x, y, t, 0, 0, nullptr);

3.2.4 (核心)开始规划并计时

(1)计时:

ros::Time t0 = ros::Time::now();

(2)初始化

// CLEAR THE VISUALIZATION

visualization.clear();

// CLEAR THE PATH

path.clear();

smoothedPath.clear();

(3)(核心)寻找路径(hybridAstar的核心算法)
返回的是符合中goal要求的节点的指针.

// FIND THE PATH

Node3D* nSolution = Algorithm::hybridAStar(nStart, nGoal, nodes3D, nodes2D, width, height, configurationSpace, dubinsLookup, visualization);

(4)跟踪路径
根据goal节点的指针,回溯整个路径.

// TRACE THE PATH

smoother.tracePath(nSolution);

(5)更新路径

// CREATE THE UPDATED PATH

path.updatePath(smoother.getPath());

(6)平滑路径

// SMOOTH THE PATH

smoother.smoothPath(voronoiDiagram);

(7)更新路径

// CREATE THE UPDATED PATH

smoothedPath.updatePath(smoother.getPath());

(8)结束计时

ros::Time t1 = ros::Time::now();

ros::Duration d(t1 - t0);

std::cout << "TIME in ms: " << d * 1000 << std::endl;

(9)发布结果

// _________________________________

// PUBLISH THE RESULTS OF THE SEARCH

path.publishPath();

path.publishPathNodes();

path.publishPathVehicles();

smoothedPath.publishPath();

smoothedPath.publishPathNodes();

smoothedPath.publishPathVehicles();

visualization.publishNode3DCosts(nodes3D, width, height, depth);

visualization.publishNode2DCosts(nodes2D, width, height);

(10)删除节点

delete [] nodes3D;

delete [] nodes2D;

3.3 setGoal()

设置goal,同时判断是否有效.

3.4 setStart()

设置start,同时判断是否有效.

3.5 setMap()

存储地图,如果是动态地图,则判断start是否有效.

3.6 initializeLookups()

没有用到.

--- stderr: pilz_industrial_motion_planner /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o: warning: relocation against `_ZTIN30pilz_industrial_motion_planner21PlanningContextLoaderE' in read-only section `.text._ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE[_ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE]' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o: in function `CommandPlannerTestDirect_FailOnLoadContext_Test::TestBody()::TestPlanningContextLoader::~TestPlanningContextLoader()': unittest_pilz_industrial_motion_planner_direct.cpp:(.text+0x93): undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o: in function `CommandPlannerTestDirect_FailOnLoadContext_Test::TestBody()': unittest_pilz_industrial_motion_planner_direct.cpp:(.text+0x3149): undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o: in function `CommandPlannerTestDirect_FailOnLoadContext_Test::TestBody()::TestPlanningContextLoader::~TestPlanningContextLoader()': unittest_pilz_industrial_motion_planner_direct.cpp:(.text+0x4f): undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o: in function `std::_Sp_counted_ptr_inplace<CommandPlannerTestDirect_FailOnLoadContext_Test::TestBody()::TestPlanningContextLoader, std::allocator<CommandPlannerTestDirect_FailOnLoadContext_Test::TestBody()::TestPlanningContextLoader>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()': unittest_pilz_industrial_motion_planner_direct.cpp:(.text+0x73): undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o: in function `std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > class_loader::impl::getAvailableClasses<pilz_industrial_motion_planner::PlanningContextLoader>(class_loader::ClassLoader const*)': unittest_pilz_industrial_motion_planner_direct.cpp:(.text._ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE[_ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE]+0x43): undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o:(.data.rel.ro+0x10): undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o:(.data.rel.ro+0x58): undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/src/unittest_pilz_industrial_motion_planner_direct.cpp.o:(.data.rel.ro+0x60): undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/build.make:363:test/unit_tests/unittest_pilz_industrial_motion_planner_direct] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:553:test/unit_tests/CMakeFiles/unittest_pilz_industrial_motion_planner_direct.dir/all] 错误 2 gmake[1]: *** 正在等待未完成的任务.... /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner.dir/src/unittest_pilz_industrial_motion_planner.cpp.o: warning: relocation against `_ZTIN30pilz_industrial_motion_planner21PlanningContextLoaderE' in read-only section `.text._ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE[_ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE]' /usr/bin/ld: CMakeFiles/unittest_pilz_industrial_motion_planner.dir/src/unittest_pilz_industrial_motion_planner.cpp.o: in function `std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > class_loader::impl::getAvailableClasses<pilz_industrial_motion_planner::PlanningContextLoader>(class_loader::ClassLoader const*)': unittest_pilz_industrial_motion_planner.cpp:(.text._ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE[_ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE]+0x45): undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_pilz_industrial_motion_planner.dir/build.make:361:test/unit_tests/unittest_pilz_industrial_motion_planner] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:835:test/unit_tests/CMakeFiles/unittest_pilz_industrial_motion_planner.dir/all] 错误 2 /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_trajectory_generator_lin.dir/build.make:364:test/unit_tests/unittest_trajectory_generator_lin] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:773:test/unit_tests/CMakeFiles/unittest_trajectory_generator_lin.dir/all] 错误 2 /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_trajectory_blender_transition_window.dir/build.make:380:test/unit_tests/unittest_trajectory_blender_transition_window] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:675:test/unit_tests/CMakeFiles/unittest_trajectory_blender_transition_window.dir/all] 错误 2 /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_ptp.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_trajectory_generator_ptp.dir/build.make:363:test/unit_tests/unittest_trajectory_generator_ptp] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:805:test/unit_tests/CMakeFiles/unittest_trajectory_generator_ptp.dir/all] 错误 2 /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_planning_context.dir/build.make:366:test/unit_tests/unittest_planning_context] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:1042:test/unit_tests/CMakeFiles/unittest_planning_context.dir/all] 错误 2 /usr/bin/ld: ../../libplanning_context_loader_circ.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: ../../libplanning_context_loader_circ.so: undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: ../../libplanning_context_loader_circ.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: ../../libplanning_context_loader_circ.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_circ.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_circ.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_trajectory_generator_circ.dir/build.make:364:test/unit_tests/unittest_trajectory_generator_circ] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:741:test/unit_tests/CMakeFiles/unittest_trajectory_generator_circ.dir/all] 错误 2 /usr/bin/ld: CMakeFiles/unittest_planning_context_loaders.dir/src/unittest_planning_context_loaders.cpp.o: warning: relocation against `_ZTIN30pilz_industrial_motion_planner21PlanningContextLoaderE' in read-only section `.text._ZN12class_loader4impl14createInstanceIN30pilz_industrial_motion_planner21PlanningContextLoaderEEEPT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_11ClassLoaderE[_ZN12class_loader4impl14createInstanceIN30pilz_industrial_motion_planner21PlanningContextLoaderEEEPT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_11ClassLoaderE]' /usr/bin/ld: CMakeFiles/unittest_planning_context_loaders.dir/src/unittest_planning_context_loaders.cpp.o: in function `std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > class_loader::impl::getAvailableClasses<pilz_industrial_motion_planner::PlanningContextLoader>(class_loader::ClassLoader const*)': unittest_planning_context_loaders.cpp:(.text._ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE[_ZN12class_loader4impl19getAvailableClassesIN30pilz_industrial_motion_planner21PlanningContextLoaderEEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EEPKNS_11ClassLoaderE]+0x45): undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: CMakeFiles/unittest_planning_context_loaders.dir/src/unittest_planning_context_loaders.cpp.o: in function `pilz_industrial_motion_planner::PlanningContextLoader* class_loader::impl::createInstance<pilz_industrial_motion_planner::PlanningContextLoader>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, class_loader::ClassLoader*)': unittest_planning_context_loaders.cpp:(.text._ZN12class_loader4impl14createInstanceIN30pilz_industrial_motion_planner21PlanningContextLoaderEEEPT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_11ClassLoaderE[_ZN12class_loader4impl14createInstanceIN30pilz_industrial_motion_planner21PlanningContextLoaderEEEPT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_11ClassLoaderE]+0x44): undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_planning_context_loaders.dir/build.make:363:test/unit_tests/unittest_planning_context_loaders] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:1007:test/unit_tests/CMakeFiles/unittest_planning_context_loaders.dir/all] 错误 2 /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::getAlgorithm[abi:cxx11]() const' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `typeinfo for pilz_industrial_motion_planner::PlanningContextLoader' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setModel(std::shared_ptr<moveit::core::RobotModel const> const&)' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::~PlanningContextLoader()' /usr/bin/ld: ../../libplanning_context_loader_lin.so: undefined reference to `pilz_industrial_motion_planner::PlanningContextLoader::setLimits(pilz_industrial_motion_planner::LimitsContainer const&)' collect2: error: ld returned 1 exit status gmake[2]: *** [test/unit_tests/CMakeFiles/unittest_trajectory_generator_common.dir/build.make:365:test/unit_tests/unittest_trajectory_generator_common] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:709:test/unit_tests/CMakeFiles/unittest_trajectory_generator_common.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< pilz_industrial_motion_planner [38.0s, exited with code 2]
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值