Advertisement

[slam]docker-slam下的建图与定位

阅读量:

目录

1.实验目的:

2.实验设备:

3.各个传感器驱动使用步骤

4.实验原理

5.实验详细步骤、遇到的问题及解决方法

1.首先下载docker

2.下载.bag数据集和.tar数据压缩包

3.将.tar文件导入docker中(此步骤可能会较慢)

4.将镜像生成容器

5.进入容器

6.建图部分

1.下载gtsam库和geographiclib库

2.将liorf与liorf_localization两个文件夹放入workspace中src里面

3.生成PCD来定位

4.运行slam可视化

7.定位部分

1.设置话题名字

2.运行slam可视化

6.实验总结


1.实验目的:

1.实现slam视觉下的建图与定位

2.使我们了解如何熟练运用ros订阅与发布

2.实验设备:

智能车辆建图教学小车

3.各个传感器驱动使用步骤

1.雷达:

1)先启动容器,进入容器中

docker start slam(启动容器) docker exec -it slam /bin/bash(进入容器)

2)打开两个终端,一个启动数据集,另一个启动slam视觉可视化

启动数据集:

cd /root/bag

rosbag play all_2023-12-25-02-59-36.bag

若出现错误需要新开一个终端roscore一下,启动ros

启动slam视觉可视化:

cd /root/drive
source devel/setup.bash
roslaunch rslidar_sdk start.launch

若出现[rviz-3] process has died在新建终端输入(宿主机即可,不需要进去容器)

xhost +

若在弹出rviz中显示点云说明雷达驱动正常

2.组合导航

同理

cd /root/drive
source devel/setup.bash
roslaunch chcnav_driver chanav_node.launch

4.实验原理

基于Docker容器技术和多传感器融合技术,实现机器人的同时定位与地图构建。

首先,Docker容器技术为SLAM提供了运行环境,使得各种算法和程序能够在同一台计算机上以容器化的方式运行,方便管理和部署。其次,多传感器融合技术利用不同传感器的信息,通过数据融合算法处理,提高定位和地图构建的精度和鲁棒性。

在实验中,通常会使用激光雷达和IMU(Inertial Measurement Unit)等传感器,获取机器人周围的环境信息和自身姿态信息。然后,通过数据融合算法处理这些信息,得到机器人的位置和姿态估计。同时,利用机器人携带的相机等传感器拍摄图像,提取特征点并进行匹配,进一步验证和调整定位结果。最后,利用定位信息和传感器数据,通过地图构建算法生成环境地图。

5.实验详细步骤、遇到的问题及解决方法

1.首先下载docker

这里分享鱼香ros一键安装的docker代码

复制代码
    wget http://fishros.com/install -O fishros && . fishros****
    

2.下载.bag数据集和.tar数据压缩包

链接: https://pan.baidu.com/s/1149Ytm3p-TDYh6bdTGfLzw?pwd=54sb 提取码: 54sb
--来自百度网盘超级会员v5的分享

数据压缩包目的是将.tar文件导入docker中,让激活容器的功能。

3.将.tar文件导入docker中(此步骤可能会较慢)

docker load < ~/slam.tar

“~"(此处输入自己电脑存放slam.tar的位置)

4.将镜像生成容器

sudo docker run -dit --name=slam --privileged --network=host -v /home/lsy/meterials/shiyanzhou :/home -v /tmp/.X11-unix:/tmp/.X11-unix --device=/dev/dri/renderD128 -v /dev:/dev -v /usr/share/fonts:/usr/share/fonts --device /dev/snd -e DISPLAY=unix$DISPLAY slam:1.0

加粗部分改为你自己.tar文件的本地路径

5.进入容器

docker exec -it slam /bin/bash

如出现错误需要在前面加上sudo,因为权限不够

6.建图部分

这是最重要的一步

1.下载gtsam库和geographiclib库

下载gtsam:

进入Releases · borglab/gtsam · GitHubicon-default.png?t=N7T8https://github.com/borglab/gtsam/releases/中下载zip版本

解压后建立工作空间并编译

#!bash
cd gtsam-1.X.X #替换成自己的目录 mkdir build
cd build cmake ..
make check sudo make install

下载geographiclib:

git clone https://gitee.com/masonqin/geographiclib.git
cd geographiclib
mkdir build && cd build
cmake .. #无报错
make #无报错
sudo make install #无报错

2.将liorf与liorf_localization两个文件夹放入workspace中src里面

链接: https://pan.baidu.com/s/1e80XNL2GEkNRZRsvWGyt0g 提取码: 542b
--来自百度网盘超级会员v5的分享

编译:catkin_make

3.生成PCD来定位

打开liorf里的src,找到config里的beidoujigang.yaml

修改

savePCD: false

savePCDDirectory: "/Downloads/LOAM/"

把savePCD:false 的false改为true

4.运行slam可视化

打开工作空间

cd location

catkin_make

source devel/set.up/bash

roslaunch liorf run_beidou_six.launch

若出现错误

实际问题是库文件libmetis.so的位置。它是一个运行时库,但是当应用程序查找它时,它的位置不在预期的目录中。我们需要把电脑里的libmetis.gtsam.so复制到ros文件中

输入

cd /usr/local/lib/

sudo cp libmetis.gtsam.so /opt/ros/noetic/lib/

此时再运行一遍roslaunch就没问题了

打开另一个终端运行.bag数据集,此时出现感知路线,如图

运行完后会自动生成PCD文件,如图

7.定位部分

1.设置话题名字

在启动之前,需要设置话题的名字

打开终端,输入rostopic list可以找到

在liorf_localization/src/liorf_localization/config/localization.yaml里的topics改为/IMU_data即可

2.运行slam可视化

同理

catkin_ws
source devel/set.up/bash
roslaunch liorf_localization run_localization.launch

出现定位的界面,自动加载好保存的PCD文件,此时选择2D estimate在地图上设置原点。

设置成功后,打开.bag文件运行数据集,如图所示

终端会显示原点的坐标

若输入rqt_graph可以看到脉络图

6.实验总结

实验开始时,看着老师的操作我总是一头雾水,完全不知道从哪里开始下手。先下载了gtsam,编译时出错。又发现gtsam的版本太旧了,又重新下载了gtsam4.2a9。编译时又出错,问了同学老师后发现还少一个库没有下载。下载好终于编译成功,这时一上午已经过去了,下午仔细想了一下上午老师讲的步骤,最终成功运行出来。

全部评论 (0)

还没有任何评论哟~