项目场景
高飞的FastPlanner开源包,在编译成功后运行出现 [fast_planner_node-1]process has died...的错误。
问题描述
出现以下报错。
[fast_planner_node-1] process has died [pid 32631, exit code -11, cmd /home/rechard/demo06_ws/devel/lib/plan_manage/fast_planner_node /odom_world:=/state_ukf/odom /sdf_map/odom:=/state_ukf/odom /sdf_map/cloud:=/pcl_render_node/cloud /sdf_map/pose:=/pcl_render_node/camera_pose /sdf_map/depth:=/pcl_render_node/depth __name:=fast_planner_node __log:=/home/rechard/.ros/log/fc1b2026-7e98-11ed-aab1-ef1864111d04/fast_planner_node-1.log]. log file: /home/rechard/.ros/log/fc1b2026-7e98-11ed-aab1-ef1864111d04/fast_planner_node-1*.log
原因分析
这里我的Ubuntu为20.04,在下载nlopt时直接采用了sudo apt install ros-noetic-nlopt的方式。但是据尝试发现,目前的nlopt通过这种方式下载,会与代码其他库产生冲突。
解决方案:
因此修改为下载nlopt源代码编译库文件。
可以通过以下代码下载。
git clone https://github.com/stevengj/nlopt.git//非线性优化库安装
cd nlopt
mkdir build && cd build
cmake ..
make
sudo make install
虚拟机直接clone github有点慢,可以在本地上下载后,复制过去。
Fast Planner中bspline_opt中的CMakeLists.txt要寻找ros-noetic-nlopt,所以需要修改一下bspline_opt中的CMakeLists.txt,找到用源码安装的nlopt,修改后的CMakeLists.txt文件如下所示。
cmake_minimum_required(VERSION 2.8.3)
project(bspline_opt)
find_package(NLopt REQUIRED)
set(NLopt_INCLUDE_DIRS ${NLOPT_INCLUDE_DIR})
find_package(Eigen3 REQUIRED)
find_package(PCL 1.7 REQUIRED)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
visualization_msgs
cv_bridge
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}
${NLOPT_INCLUDE_DIR}
)
set(CMAKE_CXX_FLAGS "-std=c++14 ${CMAKE_CXX_FLAGS} -O3 -Wall")
add_library( bspline_opt
src/bspline_optimizer.cpp
)
target_link_libraries( bspline_opt
${catkin_LIBRARIES}
${NLOPT_LIBRARIES}
)
修改后,编译catkin_make。在运行如下代码。
source devel/setup.bash
roslaunch plan_manage rviz.launch
roslaunch plan_manage kino_replan.launch
给定无人机运动目标,发现无人机开始规划路径,并飞了过去。不再报错。
参考:
https://blog.csdn.net/weixin_43793717/article/details/131072185