FUEL:使用增量前沿结构和分层规划的无人机快速探索 代码在Ubuntu20.04上的环境配置运行与bug解决方法

内容描述:

作者最近入坑无人机探索相关的内容研究,之前搞过一个RACER的环境配置教学,那个是多无人机的一个方案,而且RACER的多机是基于FUEL的单机探索实现的。为此,本人决定先从FUEL入手,下载了github上的开源代码,但是代码是以Ubuntu16.04、18.04编写的,其中PCL库、nlopt库在Ubuntu20.04下都会报错。

本文记录了我在Ubuntu20.04环境下,编译该代码以及解决error的过程,仅供需要的朋友参考。RACER多机探索的代码Ubuntu20.04编译写在这里啦。

RACER环境配置icon-default.png?t=N7T8https://blog.csdn.net/weixin_65657501/article/details/138961685


扩展库下载:

这里需要额外下载的库是nlopt库。

github上给出的是直接(别用这句)

sudo apt-get install libarmadillo-dev ros-melodic-nlopt

这里有的人想直接把melodic 改为noetic就好啦,但是经过实践验证ros-noetic-nlopt与这个代码并不适配,大概率报错。

这里的nlopt库下载采用源代码下载的方式,具体可以参考我下面的这篇在fastplanner中解决nlopt缺失的文章。

Nlopt缺失问题解决icon-default.png?t=N7T8https://blog.csdn.net/weixin_65657501/article/details/134938329

在安装完成nlopt库后,运行一下这一句,有的人可能没有下载这个库:

sudo apt-get install libarmadillo-dev

到这里,你的库文件就都安装好啦,接下来就是下载代码修改一下配置文件啦。

这里给提供一下我修改后的代码,你只要保证安装好以上库,就可以直接编译啦。鉴于CSDN不能直接放文件,想要的直接评论或私信吧。

建议按照过程走一遍吧。


代码下载与配置:

在自己的工作空间内,创建一个FUEL的工作空间吗,下载代码

mkdir -p FUEL_ws/src
cd FUEL/src
git clone git@github.com:HKUST-Aerial-Robotics/FUEL.git

或者直接下载压缩包,将下图所示文件放在src下。

这里在FUEL_ws下进行编译catkin_make,会出现如下报错:

这里的原因在于,代码中是引用的ros下的nlopt,而我们的版本里并没有这个库,因此需要将配置文件修改为寻找我们的源代码下载的库,具体方法为:

将bspline_opt的CMakeLists修改,使得bspline_opt不在去调用ros-noetic-nlopt,代码附上如下:

cmake_minimum_required(VERSION 2.8.3)
project(bspline_opt)
set(CMAKE_CXX_STANDARD 14)
find_package(NLopt REQUIRED)
set(NLopt_INCLUDE_DIRS ${NLOPT_INCLUDE_DIR})
 
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall")
 
find_package(Eigen3 REQUIRED)
find_package(PCL 1.7 REQUIRED)
 
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  visualization_msgs
  active_perception
  cv_bridge
  plan_env
)
 
catkin_package(
 INCLUDE_DIRS include
 LIBRARIES bspline_opt
 CATKIN_DEPENDS plan_env active_perception
#  DEPENDS system_lib
)
 
include_directories( 
    SYSTEM 
    include 
    ${catkin_INCLUDE_DIRS}
    ${Eigen3_INCLUDE_DIRS} 
    ${PCL_INCLUDE_DIRS}
    ${NLOPT_INCLUDE_DIR}
)
 
add_library( bspline_opt 
    src/bspline_optimizer.cpp 
    )
target_link_libraries( bspline_opt
    ${catkin_LIBRARIES} 
    ${NLOPT_LIBRARIES}
    # /usr/local/lib/libnlopt.so
    )  

随后编译会遇到这是catkin_make会遇到PCL报错,因为20.04需要用到c++14,在涉及报错的bag中的CMakeLists文件中加入

set(CMAKE_CXX_STANDARD 14)

这里需要对所有bag里的都加入一遍,你可以根据自己的报错再去找位置加。

这样修改之后,再次进行catkin_make,则编译成功:


运行效果:

在编译完成后,运行一下代码提供的demo文件。

运行如下代码:

  source devel/setup.bash && roslaunch exploration_manager rviz.launch
  source devel/setup.bash && roslaunch exploration_manager exploration.launch

得到初始化地图下图:

运行后,可能出现如下报错

需要去Fast-Planner/uav_simulator/Utils/odom_visualization/src/odom_visualization.cpp中把/world前面的/去掉,ubuntu20.04对/敏感。

这个问题的解决方法参考fastplanner代码去除bug的文章。深入解读Fast-Planner算法看这一篇就够!(含Ubuntu20.04 + Ros noetic 环境下 Fast-planner 算法仿真环境的配置与真机效果演示。)

进一步要到/Fast-Planner/fast_planner/path_searching/src/kinodynamic_astar.cpp里搜KinodynamicAstar::timeToIndex函数,可以看到函数返回值是int,但是函数体没有return,修改完如下:

int KinodynamicAstar::timeToIndex(double time)
{
    int idx = floor((time - time_origin_) * inv_time_resolution_);
    return idx;
}

解决以上两个问题后,在rviz中通过2D goal进行触发后,无人机开始环境探索。

先赞后看养成习惯,阿尼亚!

后续继续更新代码解读。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱夯66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值