【复现】Bruce-SLAM(Sonar SLAM)声呐SLAM项目复现

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

本文记录开源项目Bruce-SLAM的复现过程

项目github:https://github.com/jake3991/sonar-SLAM

项目论文:Virtual Maps for Autonomous Exploration of Cluttered Underwater Environments,https://ieeexplore.ieee.org/document/9806387

参考博客:https://blog.csdn.net/a_student_2020/article/details/146397029

目录

一、依赖环境搭建

1. 安装 ROS-noetic

2. 安装依赖

3. 安装python依赖

4. 创建工作空间

5. 克隆编译项目指定库

二、编译项目(推荐先确定环境没问题再clone项目)

三、离线运行slam

1. 启动roscore

2. 启动slam

3. 播放rosbag


一、依赖环境搭建

1. 安装 ROS-noetic

使用Ubuntu20系统,安装ros可以通过ROS官方教程https://wiki.ros.org/noetic/Installation/Ubuntu,也可以通过小鱼一键安装https://github.com/fishros/install,一键安装指令如下,根据它的问题一路选下去就行。

wget http://fishros.com/install -O fishros && . fishros

2. 安装依赖

安装catkin-tools

sudo apt update
sudo apt install python3-catkin-tools 

安装catkin-pybind11

sudo apt-get install ros-noetic-pybind11-catkin

安装cv_bridge

sudo apt install ros-noetic-cv-bridge

安装ros_numpy

sudo apt install -y ros-noetic-ros-numpy

3. 安装python依赖

python3 -m pip install --upgrade pip  # 更新 pip
python3 -m pip install gtsam matplotlib message_filters numpy opencv-python rosbag rospkg scikit-learn scipy shapely tf tqdm pyyaml
sudo apt install python3-rospy python3-catkin-pkg python3-rospkg
sudo apt install ros-noetic-tf ros-noetic-tf-conversions ros-noetic-sensor-msgs

4. 创建工作空间

再Home目录下创建工作空间

mkdir -p ~/catkin_ws_sonar/src
cd ~/catkin_ws_sonar/src
# 这里放/clone bruce-slam 仓库
# git clone ...
catkin build
catkin init

5. 克隆编译项目指定库

cd ~/catkin_ws_sonar/src
git clone https://github.com/ethz-asl/libnabo.git
git clone https://github.com/ethz-asl/libpointmatcher.git
git clone https://github.com/jake3991/Argonaut.git

其中libpointmatcher限定了版本,需要checkout

cd libpointmatcher
git checkout d478ef2eb33894d5f1fe84d8c62cec2fc6da818f

然后进行编译,检查是否有报错

cd ~/catkin_ws_sonar
catkin build

我这边报了一个error

缺了一个包,再安装一下

sudo apt update
sudo apt install -y ros-noetic-nav-core

再编译就成功了

二、编译项目(推荐先确定环境没问题再clone项目)

clone项目到src目录,然后进行编译,看有没有报错

cd ~/catkin_ws_sonar/src
git clone https://github.com/jake3991/sonar-SLAM.git
cd ~/catkin_ws_sonar
catkin build

如果有报错就和上面一样根据实际报错提示安装缺少的库

我这边报错如下

检查发现需要把工程编译标准切到c++14,修改cmakelists,添加一句

set(CMAKE_CXX_STANDARD 14) 

再运行catkin_build,编译通过

三、离线运行slam

官方sample data:https://drive.google.com/file/d/1nmiFfyk8mVssLqgac7BOe4_RPBP6Wnc9/view?usp=sharing

下载后记录放置地址

1. 启动roscore

roscore

2. 启动slam

再开一个窗口

cd ~/catkin_ws_sonar
source devel/setup.bash
roslaunch bruce_slam slam.launch

运行后报错

发现是几个 Python 节点脚本的 shebang 是 #!/usr/bin/env python,但 Ubuntu20 默认没有 python 这个命令(只有 python3),所以 roslaunch 启动脚本直接 exit code 127

安装python命令映射到python3

sudo apt update
sudo apt install -y python-is-python3

再运行又报错

发现是现在在用的 NumPy 版本太新(~/.local/lib/python3.8/site-packages/numpy),而 ROS Noetic 自带的 ros_numpy 代码还在用 np.floatnp.float 在 NumPy 1.24+ 被彻底移除了,降级安装ros_numpy

python3 -m pip install --user --force-reinstall "numpy==1.23.5"

运行成功

3. 播放rosbag

另外开一个窗口,先进到bag地址,播放rosbag

rosbag play sample_data.bag    #播放制定rosbag

发现报错

检查确认是gtsam版本差异,导致quaternion()写法不一致,修改指定代码~/catkin_ws_sonar/src/sonar-SLAM/bruce_slam/src/bruce_slam/utils/conversions.py

把原本的qw, qx, qy, qz = pose.rotation().quaternion()g改为

q = pose.rotation().toQuaternion()
qw, qx, qy, qz = q.w(), q.x(), q.y(), q.z()

重新编译后再运行,终于跑通

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值