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,一经查实,立即删除!

相关文章

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

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

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…

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

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

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;新建…

PS系统教程11

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

数据分析必备:一步步教你如何用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;下面我们就来介绍两个…

智能楼宇安防3D数据可视化平台满足日益增长的安防需求

在当今社会&#xff0c;安全是每个人和企业最为关心的问题。为满足日益增长的安防需求&#xff0c;3D可视化公司深圳华锐视点隆重推出安防平台3D可视化管理系统&#xff0c;以先进的三维技术为您的安全保驾护航。 安防平台3D可视化管理系统通过创新的三维可视化技术&#xff0c…

纷享销客BI智能分析平台技术架构介绍

纷享销客BI智能分析平台致力于降低用户上手门槛&#xff0c;无缝继承纷享销客PaaS平台的对象关系模型和权限体系&#xff0c;让使用纷享CRM的营销人员、销售人员、服务人员等各类角色人员都能够将分析场景与业务场景相融合&#xff0c;将数据思维融合到自己的日常工作、团队工作…

SpringCloud-面试篇(二十三)

&#xff08;1&#xff09;SpringCloud常见组件有那些 有无数微服务需要相互调用&#xff1a;可以用远程调用组件OpenFeign组件&#xff0c;也可以用Dobble 这么多微服务相互调用怎么管理&#xff1a;就用到注册中心组件Nacos&#xff0c;Eureka 所有的服务去找注册中心做注…

TCP协议与UDP协议区别

举个列子&#xff1a; 三次握手&#xff1a;为了解决网络信道不可靠的问题&#xff1b;防止客户端向服务端发送两次数据&#xff0c;客户端一直处于接收的状态。 四次挥手是一样的。当客户端提出关闭请求&#xff0c;服务端处于关闭等待状态&#xff0c;此时客户端可以发送数据…

PMP考试难吗?考试通过率有多少?

我们通常以考试的通过率来评判一个考试的难易程度。通常通过率达到60%以上&#xff0c;这个考试就不太难&#xff1b;达到80% &#xff0c;这个考试就是不难的。 PMP考试难吗&#xff1f; 不少想要考PMP的小伙伴都会有这样的疑惑&#xff0c;首先以PMP的含金量来说&#xff0…

产品推荐 | 基于Lattice USB3-GbE VIP IO技术赋能视频接口开发板

1、产品概述 支持视频接口平台 (VIP) – 为莱迪思VIP提供USB 3.0 和千兆以太网网络互连 灵活的快速原型设计和开发– 两个标准的高速连接器实现嵌入式视觉原型系统的简便快速硬件配置 可靠、经验证的即时使用设计– 莱迪思演示设计通过USB 3.0和工业千兆以太网接口实现快速视…

Linux C语言: 数据类型

一、 为什么要引入数据类型 • 计算机中每个字节都有一个地址&#xff08;类似门牌号&#xff09; • CPU通过 地址 来访问这个字节的空间 0x20001103 1 0 0 1 0 0 1 1 0x20001102 1 1 1 0 1 1 1 0 0x20001101 1 1 1 1 0 1 0 1 0x20001100 0 …

accelerate 笔记:梯度同步的时间效率

1 介绍 PyTorch 的分布式模块通过在系统中所有GPU之间进行来回通信来操作。 这种通信需要时间&#xff0c;并且确保所有进程了解彼此的状态在使用ddp模块时会在特定的触发点发生 这些触发点被添加到PyTorch模型中&#xff0c;特别是它们的 forward() 和 backward() 方法中当通…

2024-06-05 Android app jni里面c语言函数申请的局部变量数组过大会导致程序崩溃的问题分析

一、下面是一个app jni里面一个函数&#xff0c;函数里面定义一个数组&#xff0c;实际运行的时候发现数组过大的时候会导致app崩溃。 JNIEXPORT jint JNICALL JNI_FUNCTION(native_1getcapture_1data)(JNIEnv *env, jobject obj,jbyteArray des_data,jbyteArray src_data,jin…

Linux 多线程 生产者消费者 问题

在 Linux 系统中&#xff0c;生产者和消费者问题是一个经典的多线程同步问题&#xff0c;用于描述如何在多线程环境中协调多个线程对共享资源的访问。这个问题通常涉及两个类型的线程&#xff1a;生产者线程和消费者线程。生产者线程负责生成数据并将其放入缓冲区&#xff0c;而…

3D开发工具HOOPS助力PLM/PDM系统创新,高效实现复杂数据精细处理、3D模型交互可视化!

在现代制造和工程领域&#xff0c;PLM&#xff08;产品生命周期管理&#xff09;和PDM&#xff08;产品数据管理&#xff09;已成为企业优化流程和提升竞争力的关键工具。 随着技术的飞速发展&#xff0c;PLM和PDM应用程序需要更先进的工具来处理复杂的CAD数据、实现高效的3D可…