Ubuntu 20.04 + FastPlanner

下载源码

mkdir -p fast_ws/src
cd fast_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
cd ..

依赖

C++线性代数库

sudo apt install libarmadillo-dev

非线性优化库nlopt

git clone https://github.com/stevengj/nlopt.git
cd nlopt
mkdir build && cd build
cmake ..
make
sudo make install

// 注意:

  1. 如果是ubuntu16.04 ubuntu18.04,那么一行命令就ok:

    sudo apt install ros-noetic-nlopt
    
  2. 须在fast planner的bspline_opt的CMakeLists.txt设置寻找源码安装的nlopt:

    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}
    )
    

更改C++版本

  1. 每个CMakeLists.txt里把C++11改成C++14

更改函数返回值

  1. /FastPlanner/fast_planner/path_searching/src/kinodynamic_astar.cpp的函数
    KinodynamicAstar::timeToIndex

    int KinodynamicAstar::timeToIndex(double time)
    {
    int idx = floor((time - time_origin_) * inv_time_resolution_);
    return idx;
    }
    
  2. Fast-Planner/fast_planner/plan_env/include/edt_environment.h

    void interpolateTrilinear(double values[2][2][2], const Eigen::Vector3d& diff,
    double& value,
    Eigen::Vector3d& grad);
    void evaluateEDTWithGrad(const Eigen::Vector3d& pos, double time,double& dist,
    Eigen::Vector3d& grad);
    void EDTEnvironment::interpolateTrilinear(double values[2][2][2],
    const
    Eigen::Vector3d& diff,
    double&
    value,
    Eigen::Vector3d& grad) {
    // trilinear interpolation
    double v00 = (1 - diff(0)) * values[0][0][0] + diff(0) * values[1][0][0];
    double v01 = (1 - diff(0)) * values[0][0][1] + diff(0) * values[1][0][1];
    double v10 = (1 - diff(0)) * values[0][1][0] + diff(0) * values[1][1][0];
    double v11 = (1 - diff(0)) * values[0][1][1] + diff(0) * values[1][1][1];
    double v0 = (1 - diff(1)) * v00 + diff(1) * v10;
    double v1 = (1 - diff(1)) * v01 + diff(1) * v11;
    value = (1 - diff(2)) * v0 + diff(2) * v1;
    grad[2] = (v1 - v0) * resolution_inv_;
    grad[1] = ((1 - diff[2]) * (v10 - v00) + diff[2] * (v11 - v01)) *
    resolution_inv_;
    grad[0] = (1 - diff[2]) * (1 - diff[1]) * (values[1][0][0] - values[0][0][0]);
    grad[0] += (1 - diff[2]) * diff[1] * (values[1][1][0] - values[0][1][0]);
    grad[0] += diff[2] * (1 - diff[1]) * (values[1][0][1] - values[0][0][1]);
    grad[0] += diff[2] * diff[1] * (values[1][1][1] - values[0][1][1]);
    grad[0] *= resolution_inv_;
    }
    void EDTEnvironment::evaluateEDTWithGrad(const Eigen::Vector3d& pos,
    double time,
    double& dist,
    Eigen::Vector3d& grad) {
    Eigen::Vector3d diff;
    Eigen::Vector3d sur_pts[2][2][2];
    sdf_map_->getSurroundPts(pos, sur_pts, diff);
    double dists[2][2][2];
    getSurroundDistance(sur_pts, dists);
    interpolateTrilinear(dists, diff, dist, grad);
    }
    
在PWN领域中,ubuntu20.04是一个常见的选择。选择ubuntu20.04的原因是因为现在很多比赛的题目大部分都是libc2.27以上的,因此在自己的环境中选择升级也是可以的。你可以按照以下步骤来安装pwndbg: 1. 首先,在终端中导航到pwndbg目录。可以使用以下命令: [1] ``` cd ~/tools/pwndbg ``` 2. 接下来,运行setup.sh脚本进行安装。使用以下命令: [1] ``` ./setup.sh ``` 这样,你就可以成功安装pwndbg工具并开始使用它进行PWN题目的分析和漏洞利用了。 [1] 另外,根据引用中提到的攻防世界的pwn题目,它是一道简单的新手样本题目。然而,由于不同Linux的libc版本,可能会在ubuntu18.04和ubuntu20.04中导致一些小问题。如果你遇到漏洞利用的问题,可以参考提供的链接来解决。 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ubuntu20.04 PWN(含x86、ARM、MIPS)环境搭建](https://blog.csdn.net/qq_41202237/article/details/118188924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [level0 -- 攻防世界新手题](https://download.csdn.net/download/A951860555/14819952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值