当前位置: 首页 > wzjs >正文

京东联盟网站建设电脑版红鹰微信管理系统

京东联盟网站建设电脑版,红鹰微信管理系统,建设网站的公司swot,广东网站建设微信官网开发本文聚焦于无人机避障技术领域的经典方案,重点探讨视觉双目VINS-Fusion建图与Ego-planner路径规划的组合应用。通过视觉双目VINS-Fusion实现精准的环境建图与自身定位,结合Ego-planner的高效路径规划能力,使无人机在复杂环境中实现自主避障飞…

本文聚焦于无人机避障技术领域的经典方案,重点探讨视觉双目VINS-Fusion建图与Ego-planner路径规划的组合应用。通过视觉双目VINS-Fusion实现精准的环境建图与自身定位,结合Ego-planner的高效路径规划能力,使无人机在复杂环境中实现自主避障飞行。基于XTDrone平台,采用PX4固件和Mavros协议进行仿真测试,验证了该技术方案的可行性和有效性,展示了其在实际应用中的潜力和优势。

参考链接:

视觉惯性里程计(VIO) · 语雀VINS-Mono编译首先参考这里配置依赖,然后编译c...https://www.yuque.com/xtdrone/manual_cn/vio#luwyy

VINS-Fusion仿真

遇到报错问题:

基本报错参考链接:

Ubuntu20.04运行Vins-fusion_ubuntu20.04 vins-fussion-CSDN博客

原文中:

在报错的项目的CMakeList里的
set(CMAKE_CXX_FLAGS “-std=c++11”)
改成
set(CMAKE_CXX_STANDARD 14)

实际上:

Vins-fusion中的文件夹下的功能包的CMake.list都需要进行以上修改。

原文中:

但在Opencv4中,CV_LOAD_IMAGE_GRAYSCALE找不到,经过查看Opencv的API可知,CV_LOAD_IMAGE_GRAYSCALE已改为 IMREAD_GRAYSCALE,修改即可。

实际上:

将CV_LOAD_IMAGE_GRAYSCALE改为cv::IMREAD_GRAYSCALE

 其他报错:

 /usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN3fLS20StringFlagDestructorD1Ev' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libgflags.a(gflags.cc.o): in function `_GLOBAL__sub_I__ZN3fLS14FLAGS_flagfileB5cxx11E':
gflags.cc:(.text.startup+0x60): 危险的重寻址: unsupported relocation
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN22gflags_mutex_namespace5MutexD1Ev' which may bind externally can not be used when making a shared object; recompile with -fPIC
gflags.cc:(.text.startup+0x280): 危险的重寻址: unsupported relocation
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev' which may bind externally can not be used when making a shared object; recompile with -fPIC
gflags.cc:(.text.startup+0x2fc): 危险的重寻址: unsupported relocation
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags_reporting.cc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN3fLS20StringFlagDestructorD1Ev' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libgflags.a(gflags_reporting.cc.o): in function `_GLOBAL__sub_I__ZN3fLB10FLAGS_helpE':
gflags_reporting.cc:(.text.startup+0x60): 危险的重寻址: unsupported relocation
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags_completions.cc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN3fLS20StringFlagDestructorD1Ev' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libgflags.a(gflags_completions.cc.o): in function `_GLOBAL__sub_I__ZN3fLS25FLAGS_tab_completion_wordB5cxx11E':
gflags_completions.cc:(.text.startup+0xa0): 危险的重寻址: unsupported relocation
collect2: error: ld returned 1 exit status
[ 43%] Generating EusLisp code from gazebo_msgs/SetLinkProperties.srv
make[2]: *** [VINS-Fusion/camera_models/CMakeFiles/camera_models.dir/build.make:352:/home/nvidia/catkin_ws/devel/lib/libcamera_models.so] 错误 1
make[1]: *** [CMakeFiles/Makefile2:916:VINS-Fusion/camera_models/CMakeFiles/camera_models.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....

解决:

根本原因:

错误信息中的 relocation R_AARCH64_ADR_PREL_PG_HI21 表明在生成动态库(.so)时,链接了未启用 -fPIC 的静态库 libgflags.a

ARM架构(如AArch64)要求动态库的所有依赖库必须编译为位置无关代码(PIC),否则无法正确处理地址重定位

libgflags.a 是静态库且未启用 -fPIC,导致其代码段包含绝对地址,无法被动态库共享使用


解决方案
1. ​重新编译gflags并强制启用-fPIC

步骤:​

# 卸载旧版本gflags
sudo rm -rf /usr/local/lib/libgflags* /usr/local/include/gflags# 下载源码并编译
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build# 通过CMake启用位置无关代码并生成动态库
cmake .. -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=google -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
2. ​验证gflags安装

检查新生成的库文件是否为动态库:

ls /usr/local/lib | grep libgflags
# 正确输出应包含 libgflags.so,而非 libgflags.a
3. ​更新动态库缓存
sudo ldconfig  # 刷新动态库路径
4. ​修改项目CMake配置

camera_modelsCMakeLists.txt 中,确保链接到动态库:

# 添加以下内容以强制链接动态库
find_package(gflags REQUIRED)
target_link_libraries(camera_models PRIVATE gflags_shared)  # 使用动态库目标名
 5. 以下是更改的CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8.3)
project(camera_models)set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fPIC")find_package(catkin REQUIRED COMPONENTSroscppstd_msgs)find_package(Boost REQUIRED COMPONENTS filesystem program_options system)
include_directories(${Boost_INCLUDE_DIRS})find_package(OpenCV REQUIRED)# set(EIGEN_INCLUDE_DIR "/usr/local/include/eigen3")
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})
find_package(gflags REQUIRED) # 第一条加在这里catkin_package(INCLUDE_DIRS includeLIBRARIES camera_modelsCATKIN_DEPENDS roscpp std_msgs
#    DEPENDS system_lib)include_directories(${catkin_INCLUDE_DIRS})include_directories("include")add_executable(Calibrations src/intrinsic_calib.ccsrc/chessboard/Chessboard.ccsrc/calib/CameraCalibration.ccsrc/camera_models/Camera.ccsrc/camera_models/CameraFactory.ccsrc/camera_models/CostFunctionFactory.ccsrc/camera_models/PinholeCamera.ccsrc/camera_models/PinholeFullCamera.ccsrc/camera_models/CataCamera.ccsrc/camera_models/EquidistantCamera.ccsrc/camera_models/ScaramuzzaCamera.ccsrc/sparse_graph/Transform.ccsrc/gpl/gpl.ccsrc/gpl/EigenQuaternionParameterization.cc)add_library(camera_modelssrc/chessboard/Chessboard.ccsrc/calib/CameraCalibration.ccsrc/camera_models/Camera.ccsrc/camera_models/CameraFactory.ccsrc/camera_models/CostFunctionFactory.ccsrc/camera_models/PinholeCamera.ccsrc/camera_models/PinholeFullCamera.ccsrc/camera_models/CataCamera.ccsrc/camera_models/EquidistantCamera.ccsrc/camera_models/ScaramuzzaCamera.ccsrc/sparse_graph/Transform.ccsrc/gpl/gpl.ccsrc/gpl/EigenQuaternionParameterization.cc)target_link_libraries(Calibrations ${Boost_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES})
target_link_libraries(camera_models ${Boost_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES})
target_link_libraries(camera_models PRIVATE gflags_shared)# 第二条加在这里

 编译成功:

PX4飞控EKF配置:

修改定位方式:

打开文件:

gedit ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/rcS

找到GPS、气压计、视觉选择的部分,我们用的是VINS-Fusion双目视觉所以需要修改

修改前:

# GPS used
param set EKF2_AID_MASK 1
# Vision used and GPS denied
#param set EKF2_AID_MASK 24# Barometer used for hight measurement
param set EKF2_HGT_MODE 0
# Barometer denied and vision used for hight measurement
#param set EKF2_HGT_MODE 3

 修改后:

# GPS used
#param set EKF2_AID_MASK 1
# Vision used and GPS denied
param set EKF2_AID_MASK 24
# Barometer used for hight measurement
#param set EKF2_HGT_MODE 0
# Barometer denied and vision used for hight measurement
param set EKF2_HGT_MODE 3

使修改生效:

rm ~/.ros/eeprom/parameters*
rm -rf ~/.ros/sitl*

 运行Vins-Fusion:

roslaunch px4 indoor1.launchcd ~/catkin_ws
bash scripts/xtdrone_run_vio.shcd ~/XTDrone/sensing/slam/vio
python vins_transfer.py iris 0cd ~/XTDrone/communication
python multirotor_communication.py iris 0 cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel

运行视频:

Vins_Fusion

Ego-planner三维路径规划仿真

编译Ego-planner报错:

报错1:

解决1:

问题核心是 ​CMake无法找到PCL(Point Cloud Library)的配置文件。

安装PCL核心开发组件:

sudo apt-get install libpcl-dev pcl-tools

报错2:

解决2:

pcl_conversions.h 属于ROS的 pcl_conversions 包,需单独安装:

# 安装ROS版本的PCL转换工具包
sudo apt-get install ros-noetic-pcl-conversions ros-noetic-pcl-ros

编译成功

 代码运行整合:

#整理的运行代码
#启动仿真程序
roslaunch px4 indoor1.launch#启动Vins-Fusion
cd ~/catkin_ws
bash scripts/xtdrone_run_vio.sh#由于VINS-Fusion发布的是Odometry类型的话题,要将其对应转为PX4所需的话题
cd ~/XTDrone/sensing/slam/vio
python vins_transfer.py iris 0#然后建立通信,键盘控制起飞即可
cd ~/XTDrone/communication
python multirotor_communication.py iris 0 cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel#转换相机位姿的坐标系方向
cd ~/XTDrone/motion_planning/3d
python ego_transfer.py iris 0#启动rviz
cd ~/XTDrone/motion_planning/3d
rviz -d ego_rviz.rviz#启动ego_planner
roslaunch ego_planner single_uav.launch 

按顺序运行代码:

 运行结果:

VINS-fusion+Ego-planner

 

http://www.dtcms.com/wzjs/580386.html

相关文章:

  • 中国空间站照片《企业宣传片制作》
  • 网站开发实施计划做系统网站信息检索网站
  • 大兴黄村网站建设公司html5网站制作编辑源码
  • 如何用自家电脑做网站服务器邯郸网站建设市场
  • 最大网站建设公司排名原创小说手机网站制作需要多少钱
  • 七星彩网站开发公司郑州seo
  • 鼓楼做网站网站建设如何获取客户
  • 广西网站运营最好的公司建设银行瓶窑支行网站
  • 网站后台忘记密码wordpress 图片保护
  • 宁波做网站建设深圳电子商城网站设计
  • 培训网站建设方案书株洲企业关键词优化最新报价
  • 提升网站页面打开速度内蒙古建设网站
  • 有免费做海报的网站吗阳江网雨大医院
  • 怎么做网站推广排名优化哪家专业
  • 营销型网站欣赏厦门成交型网站建设公司
  • 手机网站拒绝访问怎么解决如何设置标签wordpress
  • 南昌网站建设行业现状丰镇市网站丰镇高铁在哪个位置建设
  • 用dw做网站的过程网站建设实训报告2000字
  • 网站开发价位评估百度推广登录入口登录
  • 河北pc端网站开发做部队网站技术
  • 一般云主机可以做视频网站吗国外企业网络研究
  • 网站关键词优化的步骤和过程vr网站建设
  • 本地邵阳网站建设温州门户网站
  • 中国城市建设网网站什么是网络营销有哪些特点
  • 兰州市生态建设管理局网站网络公司网站建设方案
  • 网站建设整体设计思路公司网站怎么修改
  • 长春市快速建站网站wordpress突然很卡
  • 保定php网站制作浏阳网站定制
  • 提高分辨率网站wordpress模板top破解版
  • 网上做兼职网站正规网站制作设计教程