Cartographer安装、建图与定位 (Ubuntu20.04+ROS Noetic)

在Ubuntu20.04系统与ROS Noetic下实现Cartographer的安装、建图与定位(纯定位)。


1. 安装

在ROS安装时需要初始化rosdep,这一步网上有很多解决方法(科学上网或修改相关代码中的资源路径)。
本篇安装Cartographer时将其需要的依赖包分开安装,包括Eigen3.3.7、Ceres2.0.0、Protobuf>=3.0.0、Abseil。其中Eigen在Ubuntu20.04中的默认版本为3.3.7,不需要另外安装。

安装依赖项:

sudo apt update
sudo apt install -y automake google-mock libatlas-base-dev libboost-all-dev libeigen3-dev libgflags-dev libgmock-dev libgoogle-glog-dev liblapack-dev liblua5.2-dev libpcl-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build pcl-tools protobuf-compiler python3-sphinx ros-noetic-tf2-eigen stow

1.1 安装Ceres2.0.0

Ceres的版本需要与Eigen3.3.7的版本匹配,这里选择安装Ceres2.0.0:

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver/
git checkout 0ffb6db49cec52566f53ab66be7a19970ddc562b		# 将下载的ceres-solver的版本回退到2.0.0
mkdir build
cd build/
cmake ..
make -j8
sudo make install

1.2 安装Protobuf>=3.0.0

这里选择安装Protobuf3.21.1:

git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf/
git checkout e73ed1630fdec85d7fb513c166629ed49cd4eb18		# 将下载的protobuf的版本回退到3.21.1
./autogen.sh
./configure
make -j8
sudo make install
sudo ldconfig

1.3 安装Abseil

git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp/
git checkout 215105818dfde3174fe799600bb0f3cae233d0bf
mkdir build
cd build/
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl ..
ninja
sudo ninja install
cd /usr/local/stow
sudo stow absl

1.4 安装Cartographer

mkdir cartographer
cd cartographer/
mkdir src
cd src/
git clone https://github.com/cartographer-project/cartographer.git
git clone https://github.com/cartographer-project/cartographer_ros.git
cd ..
catkin_make_isolated	# 或 catkin_make_isolated --install --use-ninja

2. 建图

使用官方提供的示例bag文件进行建图。由于我的后续工作只会用到2D建图,因此这里只测试官方的2D示例:

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

建图完毕后保存地图:

rosservice call /finish_trajectory 0
rosservice call /write_state "filename: '<绝对路径>/<地图名字>.pbstream' "
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=<绝对路径>/<地图名字> -pbstream_filename=<绝对路径>/<地图名字>.pbstream -resolution=0.05

成功保存后会在对应路径下得到.pbstream.pgm.yaml三种格式的地图文件。


3. 定位

进行定位需要加载之前建图后保存的地图:

roslaunch cartographer_ros demo_backpack_2d_localization.launch load_state_filename:=<绝对路径>/<地图名字>.pbstream bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

但是,Cartographer在定位的同时仍在更新地图,若想要实现纯定位,即停止地图的更新,还需要在执行定位的launch文件(即demo_backpack_2d_localization.launch)中进行如下修改:

  <!-- <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
    type="cartographer_occupancy_grid_node" args="-resolution 0.05" /> -->
  <node name="map_server" pkg="map_server" type="map_server"
    args="<绝对路径>/<地图名字>.yaml" />

需要删去cartographer_occupancy_grid_node节点,并添加map_server节点提供地图信息。


4. 用自己的雷达和IMU建图和定位

需要根据自己的雷达和IMU发布的topic及对应的frame_id重写launch文件和对应的lua配置文件,涉及雷达和IMU的相关参数及在机器人上的安装位置。
可以参考上面官方示例里用到的各文件,网络上已经有很多对文件中各参数的解释。或是参考我的相关文件(使用Livox Mid-360雷达及其内置的IMU)。


  • 31
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在ROS Noetic中使用Cartographer进行建图,可以按照以下步骤进行操作: 1. 首先,下载测试数据集。你可以使用以下命令将数据集下载到主文件夹中: ``` cd ~ wget https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag ``` 2. 然后,启动Cartographer的演示程序。你可以使用以下命令来启动: ``` roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/cartographer_paper_deutsches_museum.bag ``` 3. 接下来,创建一个工作空间并进入该空间。你可以使用以下命令来创建和进入工作空间: ``` mkdir -p ~/ROS_WS/cartographer cd ~/ROS_WS/cartographer ``` 4. 然后,使用wstool工具来拉取Cartographer的源代码。你可以使用以下命令来初始化工作空间并拉取源代码: ``` wstool init src wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall ``` 5. 最后,安装依赖项并编译代码。你可以使用以下命令来安装依赖项并编译: ``` rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y catkin_make ``` 请注意,在执行第5步时,可能会遇到一些错误。如果你遇到了"ERROR: Rosdep cannot find all required resources to answer your query Missing resource"的错误消息,说明有缺少的依赖项。你可以尝试更新ROS软件包或安装缺少的依赖项来解决这个问题。 希望以上步骤能帮助你在ROS Noetic中使用Cartographer进行建图

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值