基于laser的Google---cartographer建图测试总结(实测可行)

方法一、Google---cartographer源码安装

——>若还未安装ROS与cartographer

>则运行如下代码,选择安装ROS与cartographer:

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

>接着进行cartographer的依赖环境和依赖库的安装及编译:

cd src/同级目录
catkin_make
若报错:Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)
则运行:sudo apt-get install libsdl-image1.2-dev
若报错:Could not find a package configuration file provided by "move_base_msgs"
则运行:sudo apt-get install ros-noetic-move-base-msgs
若报错:muparser library not found
则运行:sudo apt install libmuparser-dev
若报错:Could not find a package configuration file provided by "cartographer" with
  any of the following names

/*
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow

2、安装protobuf
#git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
sudo vi /etc/hosts
line3 ++: 185.199.109.133 raw.githubusercontent.com
sudo rosdep init
rosdep update
报错:因未翻墙,修改国内源
sudo vi /usr/lib/python3/dist-packages/rosdep2/sources_list.py
DEFAULT_SOURCES_LIST_URL='https://gitee.com/ssonic/rosdistro/raw/master/rosdep/sources.list.d/20-default.list'
sudo vi /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
FUERTE_GBPDISTRO_URL = 'https://gitee.com/ssonic/rosdistro/raw/master/releases/fuerte.yaml'
sudo vi /usr/lib/python3/dist-packages/rosdep2/rep3.py
REP3_TARGETS_URL ='https://gitee.com/ssonic/rosdistro/raw/master/releases/targets.yaml'
sudo vi /usr/lib/python3/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'https://gitee.com/ssonic/rosdistro/raw/master/index-v4.yaml'
sudo rosdep init
报错:rm –rf /etc/ros/rosdep/sources.list.d/20-default.list
sudo rosdep init

rosdep update
*/


安装cartographer:

sudo apt-get install -y \
        cmake \
        g++ \
        git \
        stow \
        google-mock \
        libboost-all-dev \
        libcairo2-dev \
        libeigen3-dev \
        libgflags-dev \
        libgoogle-glog-dev \
        liblua5.2-dev \
        libsuitesparse-dev \
        libwebp-dev \
        libgmock-dev \
        ninja-build \
        protobuf-compiler 

	安装abseil:
	cd agv_project/src/lgmg_robots/agv_perception/slam/cartographer/3rd/abseil-cpp/
mkdir build
cd build
cmake  -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..
make -j4  CFLAGS='$CFLAGS -fpic'
sudo make install

安装protoc
cd agv_project/src/lgmg_robots/agv_perception/slam/cartographer/3rd/protobuf
源码路径下protoc版本为3.4.0,应更换为3.6.0
./autogen.sh
./configure
make
make check
	sudo make install
	sudo ldconfig

安装ceres
mkdir build
cd build
cmake ..
make
sudo make install

编译cartographer
mkdir build
cd build
cmake .. -G Ninja \
  -DCMAKE_CXX_STANDARD=11 \
  ..
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install



cd agv_project/
catkin_make
报错:Could not find a package configuration file provided by
  "four_wheel_steering_msgs" with any of the following names
sudo apt-get install ros-noetic-four-wheel-steering-msgs
报错:Could not find a package configuration file provided by
  "urdf_geometry_parser" with any of the following names
sudo apt-get install ros-noetic-urdf-geometry-parser

过程中:缺啥依赖就安装啥!!!

sudo apt-get install ros-noetic-slam*

sudo apt-get install ros-noetic-XXX

/***或者

sudo apt-get install ros-melodic-XXX

方法二、Google---cartographer(非源码)环境配置过程

***配置cartographer建图原教程:Cartographer ROS Integration — Cartographer ROS documentation

                   (后期尝试——>配置过程出错原因:网络问题,上不了外网!!!!)

# 步骤一:安装必要的功能包: wstool and rosdep.
 

sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build

# 步骤二:创建一个工作空间 'catkin_ws'.

mkdir catkin_ws
cd catkin_ws
wstool init src

#步骤三:下载所需代码文件:

#原命令是这样
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
#但是只能成功下载到cartographer,    cartogropher_ros包 下载会报错

个人采用如下方式(或者说先按上述命令下一遍包,没下载成功的包用下面命令下载补上)
cd src
git clone https://github.com/cartographer-project/cartographer.git        #cartographer包
git clone https://github.com/cartographer-project/cartographer_ros.git    #cartographer_ros包
cd ..
wstool update -t src #此步如果报错可忽略

#步骤四:安装:proto3

src/cartographer/scripts/install_proto3.sh

#步骤五:安装 deb 依赖项:

rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
 /**--若出现如下报错:
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
cartographer: [libabsl-dev] defined as "not available" for OS version [focal]
就尝试把cartographer_ws/src/cartographer文件夹中的package.xml 文件中的第46行<depend>libabsl-dev</depend>删掉就完事儿了,删除后再重新执行:即可!--**/

#步骤六:生成并安装ninja

///此次在安装功能包的时候需要运行一下如下命令,设置一下环境路径
*************以后每次修改包内文件都需要运行一下这个命令***************

          catkin_make_isolated --install --use-ninja
          source install_isolated/setup.bash

#步骤七:在catkin_ws目录下设置环境变量(一劳永逸):

echo "source ~/catkin_ws/install_isolated/setup.bash">>~/.bashrc

#步骤八:测试过程

  • 下载示例包(例如德意志博物馆的2D和3D背包系列)到一个已知的位置
  • 示例位于~/Downloads,并使用roslaunch来调出演示:
# 下载示例  2D.bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

#  Launch 2D backpack demo(运行2D示例包)
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

# 下载 3D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag

# Launch the 3D backpack demo(运行3D示例包)
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag

二、Google---cartographer建图过程

本人使用的激光雷达型号是   HOKUYO-UST-20LX(网口),最终建图效果如下:

详细步骤:

                     1.首先下载雷达的相关节点包

sudo apt-get install ros-indigo-urg-node

这里需要有一个配置雷达IP地址的过程:详见参考链接6     新加入配置链接              

                     2.这里有一个launch文件修改过程:详见参考链接1

                     3.同时在路径~/catkin_ws/src/cartographer_ros/cartographer_ros/launch/路径下修改demo_revo_lds.launch文件,加入以下节点

<node name="urg_node" pkg="urg_node" type="urg_node" output="screen">
    <param name="ip_address" value="自己的雷达IP地址"/>
    <param name="serial_port" value=""/>          #如果说是串口雷达在此命令行的value中加入雷达串口名
    <param name="serial_baud" value="115200"/>
    <param name="frame_id" value="laser"/>
    <param name="calibrate_time" value="true"/>
    <param name="publish_intensity" value="true"/>
    <param name="publish_multiecho" value="false"/>
    <param name="angle_min" value="-1.5707963"/>
    <param name="angle_max" value="1.5707963"/>
    <node pkg="rviz" type="rviz" name="rviz"/>
  </node>

运行看效果:

                 

roscore
roslaunch cartographer_ros demo_revo_lds.launch

参考链接:

                         1、基于rplidar || hokuyo的cartographer建图_Feng_zhengchao的博客-CSDN博客

                         2、cartographer ros使用指南-安装 - 创客智造

                         3、cartographer只用激光(hokuyo)2D建图_fake_fs的博客-CSDN博客

                         4、使用ust-10lx激光雷达通过hector_slam创建实验室地图_爱吃西瓜的金大叔的博客-CSDN博客

                         5、Invalid roslaunch XML syntax: not well-formed (invalid token): line 31, column 56 The traceback for_高飞007的博客-CSDN博客

                         6、ROS中使用Hokuyo激光雷达UST-10LX - 程序员大本营

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!关于Cartographer建图漂移的问题,我能为您提供一些信息。Cartographer是一个开源的SLAM(Simultaneous Localization and Mapping)系统,它能够通过使用激光雷达和其他传感器数据来生成环境地图,并同时估计机器人在地图中的位置。所谓建图漂移是指机器人在建立地图的过程中,由于误差累积或其他因素导致地图与实际环境之间存在一定程度的偏差。 建图漂移是SLAM系统中一个常见的问题,它可能由多种因素引起,包括传感器误差、环境变化、运动模型不准确等。为了解决建图漂移问题,Cartographer采用了一系列的技术手段,如回环检测、优化等。回环检测指的是通过识别环境中已经访问过的区域,从而将机器人当前位置与先前访问过的位置进行关联,以减小建图漂移的影响。优化则是通过对机器人在地图上的运动轨迹进行优化,以修复漂移带来的偏差。 尽管Cartographer采用了多种方法来减小建图漂移,但完全消除建图漂移是一个相对困难的问题,特别是在长时间运行或复杂环境下。因此,在使用Cartographer进行建图时,需要仔细设置参数、合理选择传感器,并进行必要的环境校准和误差补偿,以最大程度地减小建图漂移的影响。此外,如果需要更精确的地图,还可以考虑采用其他SLAM系统或增加其他辅助定位方式。 希望这些信息能对您有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值