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

无人机避障——感知篇(Orin nx采用zed2双目相机进行Vins-Fusion定位,再通过位姿和深度图建图完成实时感知)

通过ZED2双目视觉相机进行Vins FusionSLAM定位之后,需要获取其中的信息完成无人机的实时感知部分,感知需要的是栅格地图话题,因为EGO-planner高飞老师就是通过Vins Fusion做感知的部分,所以其中可以借鉴一下建图方法。

通过ZED2双目视觉相机进行Vins FusionSLAM定位看我的前一篇涉及到双目视觉标定、IMU标定以及感知定位实际测试的文章:

无人机避障——感知篇(在Ubuntu20.04的Orin nx上基于ZED2实现Vins Fusion)-CSDN博客

结果展示:

借鉴Ego-Planner中的plan_env代码:

发现别人已经改好了EGO中相关建图环境部分的代码:

https://github.com/maxibooksiyi/ego_grid_map.git

 下载以后进行编译安装:

这部分基本操作不赘述。

然后修改话题:

这是我已经修改好的,就两个话题进行修改就可以。

原来的代码:

 //depth_sub_.reset(new message_filters::Subscriber<sensor_msgs::Image>(node_, "/grid_map/depth", 50));depth_sub_.reset(new message_filters::Subscriber<sensor_msgs::Image>(node_, "/camera/aligned_depth_to_color/image_raw", 50));if (mp_.pose_type_ == POSE_STAMPED){pose_sub_.reset(new message_filters::Subscriber<geometry_msgs::PoseStamped>(node_, "/grid_map/pose", 25));sync_image_pose_.reset(new message_filters::Synchronizer<SyncPolicyImagePose>(SyncPolicyImagePose(100), *depth_sub_, *pose_sub_));sync_image_pose_->registerCallback(boost::bind(&GridMap::depthPoseCallback, this, _1, _2));}else if (mp_.pose_type_ == ODOMETRY){//odom_sub_.reset(new message_filters::Subscriber<nav_msgs::Odometry>(node_, "/grid_map/odom", 100));odom_sub_.reset(new message_filters::Subscriber<nav_msgs::Odometry>(node_, "/vins_estimator/imu_propagate", 100));sync_image_odom_.reset(new message_filters::Synchronizer<SyncPolicyImageOdom>(SyncPolicyImageOdom(100), *depth_sub_, *odom_sub_));sync_image_odom_->registerCallback(boost::bind(&GridMap::depthOdomCallback, this, _1, _2));}

修改之后的代码:

//depth_sub_.reset(new message_filters::Subscriber<sensor_msgs::Image>(node_, "/grid_map/depth", 50));depth_sub_.reset(new message_filters::Subscriber<sensor_msgs::Image>(node_, "/zed2/zed_node/depth/depth_registered", 50));if (mp_.pose_type_ == POSE_STAMPED){pose_sub_.reset(new message_filters::Subscriber<geometry_msgs::PoseStamped>(node_, "/grid_map/pose", 25));sync_image_pose_.reset(new message_filters::Synchronizer<SyncPolicyImagePose>(SyncPolicyImagePose(100), *depth_sub_, *pose_sub_));sync_image_pose_->registerCallback(boost::bind(&GridMap::depthPoseCallback, this, _1, _2));}else if (mp_.pose_type_ == ODOMETRY){//odom_sub_.reset(new message_filters::Subscriber<nav_msgs::Odometry>(node_, "/grid_map/odom", 100));odom_sub_.reset(new message_filters::Subscriber<nav_msgs::Odometry>(node_, "/vins_estimator/imu_propagate", 100));sync_image_odom_.reset(new message_filters::Synchronizer<SyncPolicyImageOdom>(SyncPolicyImageOdom(100), *depth_sub_, *odom_sub_));sync_image_odom_->registerCallback(boost::bind(&GridMap::depthOdomCallback, this, _1, _2));}

需要修改话题:

双目相机的深度图话题:

<sensor_msgs::Image>(node_, "/camera/aligned_depth_to_color/image_raw", 50) 

 替换成ZED2双目相机的深度图话题:

<sensor_msgs::Image>(node_, "/zed2/zed_node/depth/depth_registered", 50)

Vins Fusion的位姿话题:

<nav_msgs::Odometry>(node_, "/vins_estimator/imu_propagate", 100)

无需修改,都是用Vins Fusion进行获取。

然后在我的前一个博客的bash文件的基础上,加上此处建图的一键启动命令:

# run.sh文件#!/bin/bash# Start roscore
gnome-terminal -- bash -c "roscore"
# Start RViz
# gnome-terminal -- bash -c "cd vins_ws && source devel/setup.bash && roslaunch vins vins_rviz.launch"# Start VINS-Fusion node
sleep 5
gnome-terminal -- bash -c "cd vins_ws && source devel/setup.bash && rosrun vins vins_node src/VINS-Fusion/config/zed/zed2_stereo_config.yaml"#回环检测
sleep 5
gnome-terminal -- bash -c "cd vins_ws && source devel/setup.bash && rosrun loop_fusion loop_fusion_node src/config/zed/zed2_stereo_config.yaml"## 实时相机
sleep 5
gnome-terminal -- bash -c "cd vins_ws && source devel/setup.bash && source /home/nvidia/zed_ws/devel/setup.bash && roslaunch zed_wrapper zed2.launch"## 实时建栅格地图
sleep 5
gnome-terminal -- bash -c "cd vins_ws && source devel/setup.bash && source /home/nvidia/ego_planner_grid/devel/setup.bash && roslaunch plan_env grid_map.launch"
# Play rosbag
# sleep 5
# gnome-terminal -- bash -c "source devel/setup.bash && rosbag play /home/nvidia/data_set/MH_01_easy.bag"# Keep the terminal open until you manually close it
echo "Press Enter to close the terminals"
read

最后就实现了建图效果!!!

这里发现好像用的一直都是Orin nx的igpu集成显卡进行计算的,之后将进行Vins Fusion GPU的实时建图感知。

以下是查找相关资料的参考内容(非常不错的参考!!!):

把ego的plan_env模块单独取出订阅位姿和深度图构建自己可用的导航地图 20240315_091408 截取视频 截取合并_哔哩哔哩_bilibili

把ego-planner的plan_env单独取出订阅位姿和深度图构建自己可用的导航地图_ego planner换地图-CSDN博客

相关文章:

  • pikachu靶场通关笔记26 SQL注入09-时间盲注(base on time)
  • 将创世SD NAND FLASH设计在无人机上,可从硬件适配、接口与协议兼容、性能匹配
  • 时序数据库Apache IoTDB核心技术深度解析
  • 小黑享受思考心流躲避迷茫:92. 反转链表 II
  • FFmpeg 压缩视频文件
  • 中国第七次人口普查100m网格化人口数据集(Tif/分省/分市)
  • 在Windows平台上使用MinGW编译C/C++项目,常见的构建工具
  • 22、话题重名及解决方案
  • Python训练营---DAY52
  • nginx学习
  • 【threejs】每天一个小案例讲解:常见材质
  • 单链表经典算法题之分割链表
  • SPRING AI 入门
  • TCN+Transformer+SE注意力机制多分类模型 + SHAP特征重要性分析,pytorch框架
  • Docker 网络模式
  • Golang启用.exe文件无法正常运行
  • SM4 与 AES 在 GPU 上的性能比较
  • GAN+ECA注意力机制实现图像超分辨率重建
  • 第七十九篇 大数据开发基石:堆数据结构解析与生活化应用
  • Vue3 计算属性 computed
  • 设计师效果图网站/seo外包公司多少钱
  • 从零开始学做网站cdsn/免费创建网站
  • 安阳做网站电话/广告图片
  • 企业做网站的困惑/seo关键词推广价格
  • 长治做网站的公司/免费推客推广平台
  • 就业seo好还是sem/厦门谷歌seo