Linux 35.5 + JetPack v5.1.3@FUEL编译安装

Linux 35.5 + JetPack v5.1.3@FUEL编译安装

  • 1. 源由
  • 2. 编译&安装
    • Step 1:依赖库安装
    • Step 2:建立工程
    • Step 3:编译工程
    • Step 4:安装工程
  • 3. 问题汇总
    • 3.1 fuel_planner/exploration_manager - dw
    • 3.2 fuel_planner/plan_env - OpenCV库
    • 3.3 fuel_planner/plan_manage - dw库
    • 3.4 uav_simulator/local_sensing - CUDA优化
  • 4. 创建pcd环境
  • 5. 总结
  • 6 补充

1. 源由

香港HKUST Aerial Robotics Group开发了一系列基础技术,使空中无人机能够在复杂环境中自主运行。研究涵盖了空中自主导航建模比较完整技术栈,重点在于状态估计、地图绘制、轨迹规划、多机协调以及使用低成本传感和计算组件进行测试平台开发,其代码也被开源在Github - HKUST-Aerial-Robotics。

若能很好的借鉴并应用上述技术,在实际领域进行应用拓展,将会对无人机的应用得到显著提升,进而突破闭源商业系统的垄断地位。

从HKUST维护的Fast-Planner情况看,可能更偏向学术,有很多兼容性问题,也没有足够的人力维护;不过貌似HKUST - FUEL可能是更加新的版本。

  • segfault in fast_planner_node on jetson orin Linux 35.5.0 #175
  • 对视野范围外的障碍物留有余量的算法求开源,即fastplanner第三篇论文的内容 #162

因此,在《Linux 35.5 + JetPack v5.1.3@Fast-Planner编译安装》基础上,开始FUEL编译安装。

2. 编译&安装

Step 1:依赖库安装

$ sudo apt-get install libarmadillo-dev ros_${ROS_VERSION_NAME}_nlopt

Step 2:建立工程

$ mkdir -p ${YOUR_WORKSPACE_PATH}/src
$ cd ${YOUR_WORKSPACE_PATH}/src
$ git clone https://github.com/HKUST-Aerial-Robotics/FUEL.git

注:若存在网络问题,请使用git协议clone代码。git协议始终比https稳定,但需要注意ssh key的安装问题。

Step 3:编译工程

$ cd ${YOUR_WORKSPACE_PATH}
$ catkin_make

Step 4:安装工程

略,因为暂时不涉及软件的部署应用,相关模拟命令参考:

  • 运行Rviz虚拟环境
$ cd ${YOUR_WORKSPACE_PATH}
$ source devel/setup.bash && roslaunch exploration_manager rviz.launch
  • 运行模拟程序
$ cd ${YOUR_WORKSPACE_PATH}
$ source devel/setup.bash && roslaunch exploration_manager exploration.launch

3. 问题汇总

$ git log -n 1
commit de2bc5d2e256f2cf5de8e3a60196e55e3854e45b (HEAD -> main, origin/main, origin/HEAD)
Author: Boyu Zhou <405540572@qq.com>
Date:   Wed Aug 2 15:43:35 2023 +0800Update README.md

注1:以上为本次checkout版本,版本差异,可能会导致问题的差异。
注2:FUEL编译是在Fast-Planner基础上进行的,因此有些组件已经默认安装了;如果全新安装,请参考:《Linux 35.5 + JetPack v5.1.3@Fast-Planner编译安装》。

3.1 fuel_planner/exploration_manager - dw

$ git diff fuel_planner/exploration_manager/CMakeLists.txt
diff --git a/fuel_planner/exploration_manager/CMakeLists.txt b/fuel_planner/exploration_manager/CMakeLists.txt
index 189293c..44b7003 100755
--- a/fuel_planner/exploration_manager/CMakeLists.txt
+++ b/fuel_planner/exploration_manager/CMakeLists.txt
@@ -47,7 +47,6 @@ add_executable(exploration_node)target_link_libraries(exploration_node${catkin_LIBRARIES}
-  # -ldw)# add_library(exploration_manager
@@ -66,4 +65,4 @@ target_link_libraries(write_tspadd_executable(load_obj test/load_obj.cpp)target_link_libraries(load_obj${catkin_LIBRARIES} ${PCL_LIBRARIES}
-)
\ No newline at end of file
+)

3.2 fuel_planner/plan_env - OpenCV库

$ git diff fuel_planner/plan_env/CMakeLists.txt
diff --git a/fuel_planner/plan_env/CMakeLists.txt b/fuel_planner/plan_env/CMakeLists.txt
index 7402df4..198950f 100755
--- a/fuel_planner/plan_env/CMakeLists.txt
+++ b/fuel_planner/plan_env/CMakeLists.txt
@@ -49,6 +49,7 @@ add_library( plan_envtarget_link_libraries( plan_env${catkin_LIBRARIES}${PCL_LIBRARIES}
+    ${OpenCV_LIBS})add_executable(obj_generator

3.3 fuel_planner/plan_manage - dw库

$ git diff fuel_planner/plan_manage/CMakeLists.txt
diff --git a/fuel_planner/plan_manage/CMakeLists.txt b/fuel_planner/plan_manage/CMakeLists.txt
index 3de89b0..5e2de40 100755
--- a/fuel_planner/plan_manage/CMakeLists.txt
+++ b/fuel_planner/plan_manage/CMakeLists.txt
@@ -49,7 +49,6 @@ add_executable(fast_planner_node)target_link_libraries(fast_planner_node${catkin_LIBRARIES}
-  -ldw)add_library(plan_manage
@@ -59,7 +58,7 @@ add_library(plan_managetarget_link_libraries(plan_manage ${catkin_LIBRARIES})add_executable(traj_server src/traj_server.cpp)
-target_link_libraries(traj_server ${catkin_LIBRARIES} -ldw)
+target_link_libraries(traj_server ${catkin_LIBRARIES})# add_dependencies(traj_server ${${PROJECT_NAME}_EXPORTED_TARGETS})# benchmark node
@@ -88,4 +87,4 @@ add_executable(proc_msg2target_link_libraries( proc_msg2${catkin_LIBRARIES}${PCL_LIBRARIES}
-    )
\ No newline at end of file
+    )

3.4 uav_simulator/local_sensing - CUDA优化

$ git diff uav_simulator/local_sensing/CMakeLists.txt
diff --git a/uav_simulator/local_sensing/CMakeLists.txt b/uav_simulator/local_sensing/CMakeLists.txt
index a126b2e..982b82f 100644
--- a/uav_simulator/local_sensing/CMakeLists.txt
+++ b/uav_simulator/local_sensing/CMakeLists.txt
@@ -3,8 +3,8 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)SET(CMAKE_BUILD_TYPE Release) # Release, RelWithDebInfoSET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")-# set(ENABLE_CUDA true)
-set(ENABLE_CUDA false)
+set(ENABLE_CUDA true)
+#set(ENABLE_CUDA false)if(ENABLE_CUDA)find_package(CUDA REQUIRED)
@@ -17,7 +17,8 @@ if(ENABLE_CUDA)#       -gencode arch=compute_50,code=sm_50;#       -gencode arch=compute_52,code=sm_52;#       -gencode arch=compute_60,code=sm_60;
-      -gencode arch=compute_61,code=sm_61;
+#       -gencode arch=compute_61,code=sm_61;
+        -gencode arch=compute_87,code=sm_87;)SET(CUDA_PROPAGATE_HOST_FLAGS OFF)

4. 创建pcd环境

  • 运行Rviz虚拟环境
$ cd ${YOUR_WORKSPACE_PATH}
$ source devel/setup.bash && roslaunch exploration_manager rviz.launch
  • 然后运行map_generator
$ cd ${YOUR_WORKSPACE_PATH}
$ source devel/setup.bash && rosrun map_generator click_map

然后在 Rviz 中,使用 2D Nav Goal 工具(快捷键 G)来创建你的地图。两个连续点击的点形成一面墙。以下是一个示例:
在这里插入图片描述

  • 完成后,在另一个终端运行以下节点来保存地图:
$ source devel/setup.bash && rosrun map_generator map_recorder ~/

通常,一个名为 tmp.pcd 的文件会保存在 ~/. 你可以将 ~/ 替换为任何你想要的位置。最后,你可以按照这里提到的方法使用这个文件进行探索。

5. 总结

  1. 依然存在segfault 等问题: segfault in nlopt_set_precond_max_objective, which is from ros-noetic-nlopt #72
  2. 从Fork角度看:貌似该版本相较于Fast-Planner更新,且短期内有人维护
  3. 另外,可以考虑尝试FC-Planner和RACER。其实这个是一个系列的开发代码,各种尝试就能找到一些类似的问题(这也是版本管理的重要性)。

总体来说,都能编译通过,虽然执行存在各种问题,待查!!!

期望能尽快看到类似模拟效果:

在这里插入图片描述

6 补充

当前版本Readme.md文件仍然没有更新,其实生成的CMakeLists.txt已经含有set(CMAKE_CXX_STANDARD 14)

daniel@nvidia:~/HKUST/FUEL/src$ pwd
/home/daniel/HKUST/FUEL/src
daniel@nvidia:~/HKUST/FUEL/src$ cat CMakeLists.txt
# toplevel CMakeLists.txt for a catkin workspace
# catkin/cmake/toplevel.cmakecmake_minimum_required(VERSION 3.0.2)project(Project)set(CATKIN_TOPLEVEL TRUE)
set(CMAKE_CXX_STANDARD 14)# search for catkin within the workspace
set(_cmd "catkin_find_pkg" "catkin" "${CMAKE_SOURCE_DIR}")
execute_process(COMMAND ${_cmd}RESULT_VARIABLE _resOUTPUT_VARIABLE _outERROR_VARIABLE _errOUTPUT_STRIP_TRAILING_WHITESPACEERROR_STRIP_TRAILING_WHITESPACE
)
if(NOT _res EQUAL 0 AND NOT _res EQUAL 2)# searching fot catkin resulted in an errorstring(REPLACE ";" " " _cmd_str "${_cmd}")message(FATAL_ERROR "Search for 'catkin' in workspace failed (${_cmd_str}): ${_err}")
endif()# include catkin from workspace or via find_package()
if(_res EQUAL 0)set(catkin_EXTRAS_DIR "${CMAKE_SOURCE_DIR}/${_out}/cmake")# include all.cmake without add_subdirectory to let it operate in same scopeinclude(${catkin_EXTRAS_DIR}/all.cmake NO_POLICY_SCOPE)add_subdirectory("${_out}")else()# use either CMAKE_PREFIX_PATH explicitly passed to CMake as a command line argument# or CMAKE_PREFIX_PATH from the environmentif(NOT DEFINED CMAKE_PREFIX_PATH)if(NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")if(NOT WIN32)string(REPLACE ":" ";" CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})else()set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})endif()endif()endif()# list of catkin workspacesset(catkin_search_path "")foreach(path ${CMAKE_PREFIX_PATH})if(EXISTS "${path}/.catkin")list(FIND catkin_search_path ${path} _index)if(_index EQUAL -1)list(APPEND catkin_search_path ${path})endif()endif()endforeach()# search for catkin in all workspacesset(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE)find_package(catkin QUIETNO_POLICY_SCOPEPATHS ${catkin_search_path}NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)unset(CATKIN_TOPLEVEL_FIND_PACKAGE)if(NOT catkin_FOUND)message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.")endif()
endif()catkin_workspace()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前后端分离项目中Spring Boot返回的时间与前端相差8个小时

概述 今天在做一个前后端分离项目时,发现从后端获取的时间与从数据库获取的时间相差八个小时&#xff0c;最终排查后发现由于Springboot使用本地时区导致&#xff0c;修改SpringBoot时区后解决 环境 MySQL8SpringBoot 原因排查 发现从后端获取的数据总是比前端快八个小时 …

找不到d3dx9_43.dll怎么修复?这个几种修复方法轻松解决

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“d3dx943.dll丢失”。这个问题通常会导致某些游戏或应用程序无法正常运行。为了解决这个问题&#xff0c;我总结出了以下五种解决方法&#xff0c;希望能对遇到类似问题的朋友们有所帮助。 …

【Leetcode Python】70.爬楼梯

麻烦大家要自己去leetcode看题目 第一个思路 用递归会超时 return self.climbStairs(n - 1) self.climbStairs(n - 2)第二个思路 滚动数组思想 class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""if(n<2)…

Android Camera APP预览画面镜像及旋转处理

Android Camera APP开发调试中经常会遇到预览画面镜像或者旋转处理。网上可以找到很多种方案&#xff0c;本文介绍最简单的实现方案&#xff0c;来达到镜像预览画面和画面旋转的效果。 整体来说画面的镜像和旋转大概有三种方案&#xff1a; 第一种方案&#xff1a;从Camera底层…

2.1 QT随手简记(三)

新建QT工程 1.方法 第一种&#xff1a;点击new project按钮&#xff0c;弹出对话框&#xff0c;新建即可 第二种&#xff1b;点击文件菜单&#xff0c;选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT …

QNX 7.0.0开发总结

1 QNX编译 1.1 基本概念 QNX可以直接使用Linux Makefile编译库和二进制&#xff0c;在Makefile文件中指定CCaarch64-unknown-nto-qnx7.0.0-g&#xff0c;或者CCx86_64-pc-nto-qnx7.0.0-g&#xff0c;保存退出后&#xff0c;运行source /qnx_sdk_path/qnxsdp-env.sh&#xff0c;…

前端canvas绘图,利用canvas在图片上面绘制标记以及给canvas添加点击事件。

前端canvas绘图&#xff0c;利用canvas在图片上面绘制标记以及给canvas添加点击事件。 需要实现的效果如下图: 首先需要一个承载的核心画布 <canvas id"canvas" width"800" height"600"></canvas>全部代码&#xff1a; <!DOCT…

程序员职业素养的探索与实践

在数字化飞速发展的今天&#xff0c;程序员作为技术创新的核心力量&#xff0c;其职业素养的重要性愈发凸显。那么&#xff0c;对于程序员而言&#xff0c;什么样的职业素养是至关重要的呢&#xff1f;在我的职业生涯中&#xff0c;我深刻体会到&#xff0c;除了扎实的技术功底…

LabVIEW减压阀和温控阀综合测试系统

在使用LabVIEW开发阀门测试软件时&#xff0c;特别是针对减压阀和温控阀&#xff0c;测试内容和注意事项包括以下方面&#xff1a; 测试内容 压力测试&#xff1a; 入口压力&#xff1a;测量阀门在不同入口压力下的表现。 出口压力&#xff1a;确保减压阀能够将出口压力控制在…

k8s系列-使用containerd下载镜像并导入

1. 使用 containerd 下载镜像 首先&#xff0c;确保 containerd 已经安装并运行。然后使用 ctr 命令来拉取镜像&#xff1a; sudo ctr image pull docker.io/rancher/rancher-webhook:v0.4.32. 导出镜像 将拉取的镜像导出为 tar 文件&#xff1a; sudo ctr image export ra…

Spring AI 第二讲 之 Chat Model API 第五节HuggingFace Chat

HuggingFace Inference Endpoints 允许您在云中部署和提供机器学习模型&#xff0c;并通过 API 对其进行访问。 开始使用 有关 HuggingFace Inference Endpoints 的更多详细信息&#xff0c;请访问此处。 前提条件 添加 spring-ai-huggingface 依赖关系&#xff1a; <d…

systemctlm-cosim-demo项目分析

概述 systemctlm-cosim-demo项目是Xilinx的systemc库的demo工程。 环境安装 qemu安装 cd xilinx_proj/Downloads git clone https://github.com/Xilinx/qemu.git cd qemu git checkout 74d70f8008# Configure and build # zynq7000 # ./configure --target-list"arm-s…

【乐吾乐3D可视化组态编辑器】用开关控制巡检车和路灯

一、运动设备开关控制 3D组态编辑器地址&#xff1a;3D可视化组态 - 乐吾乐Le5le 1.在场景中新建模拟运动设备及控制面板&#xff1a;启动/停止 2.单击巡检车设备新建模拟动画 3.设置模拟动画属性 4.单击启动面板&#xff0c;新建交互事件 5.设置交互触发类型&#xff0c;新建…

JavaSE——【逻辑控制】(习题)

一、分支结构 2.1 if 语句 【练习】2.1.1 小明&#xff0c;如果这次考到90分以上&#xff0c;给你奖励一个大鸡腿&#xff0c;否则奖你一个大嘴巴子 int score 92;if(score > 90){System.out.println("吃个大鸡腿!!!");}else{System.out.println("挨大嘴…

PS系统教程11

HUD拾色器 作用&#xff1a;它可以帮助使用者更加高效地选择和使用颜色&#xff0c;从而提高工作效率和设计质量。 先确定色相值改变饱和度改变亮度使用HUD拾色器选中画笔工具画笔模式-正常shiftAlt右键 色相轮 上下移动从黑到白亮度变化左右移动从浅到深饱和度的变化选中颜…

【小海实习日记】PHP安装

## PHP环境搭建(Mac) ### php安装 使用brew需要安装homebrew >brew tap shivammathur/php >brew install shivammathur/php/php7.3 >brew link php7.3 这里可以需要homebrew使用代理进行下载&#xff0c;如果代理下载速度还是太慢&#xff0c;建议直接更该国内镜像…

数据分析必备:一步步教你如何用Pandas做数据分析(17)

1、Pandas 连接 Pandas 连接的操作实例 Pandas具有与SQL等关系数据库非常相似的功能齐全的高性能内存中连接操作。 Pandas提供单个功能merge作为DataFrame对象之间所有标准数据库联接操作的入口点 pd.merge(left, right, howinner, onNone, left_onNone, right_onNone,left_i…

新手必看!现货伦敦金新手容易犯的两个错

对很多刚进入现货伦敦金市场的朋友来说&#xff0c;炒伦敦金是十分令人兴奋的&#xff0c;但兴奋归兴奋&#xff0c;我们还是要注意&#xff0c;由于现货伦敦金投资者过分的热情&#xff0c;很容易让自己跌入一些陷阱&#xff0c;犯下一些错误&#xff0c;下面我们就来介绍两个…

Linux 命令 FIO:深入理解磁盘性能测试工具

Linux 命令 FIO&#xff1a;深入理解磁盘性能测试工具 在 Linux 系统中&#xff0c;磁盘 I/O 性能对于系统的整体性能至关重要。为了准确、快速地评估磁盘性能&#xff0c;我们需要一个强大的工具来模拟各种磁盘读写场景。FIO&#xff08;Flexible I/O Tester&#xff09;就是…

C++关于拷贝构造函数的一些理解

定义&#xff1a; 拷贝构造函数是C中的一种特殊的构造函数&#xff0c;用于创建一个对象的副本。它的作用是在对象之间进行拷贝初始化。拷贝构造函数通常以引用的方式接受同类型的对象作为参数&#xff0c;以完成对象的拷贝。程序中如果没有定义拷贝构造函数系统会生成一个默认…