小白的成長2018:Google Cartographer安裝與測試(demo)

Google Cartographer安裝與測試(demo)
cartographer 二維/三維的數據接入:
2D:LIDAR、Odometry、IMU(可選)、GPS(尚且沒有實現)
3D:LIDAR、Odometry、IMU(必須)、GPS(已實現)
GPS在2d模式下,數據接入沒有問題,但是在全局優化的時候,沒有GPS的輸入。
2D模式的pose_graph.cc

void PoseGraph2D::AddFixedFramePoseData(
    const int trajectory_id,
    const sensor::FixedFramePoseData& fixed_frame_pose_data) {
  LOG(FATAL) << "Not yet implemented for 2D.";
}

3D模式的pose_graph.cc

void PoseGraph3D::AddFixedFramePoseData(
    const int trajectory_id,
    const sensor::FixedFramePoseData& fixed_frame_pose_data) {
  AddWorkItem([=]() LOCKS_EXCLUDED(mutex_) {
    absl::MutexLock locker(&mutex_);
    if (CanAddWorkItemModifying(trajectory_id)) {
      optimization_problem_->AddFixedFramePoseData(trajectory_id,
                                                   fixed_frame_pose_data);
    }
    return WorkItem::Result::kDoNotRunOptimization;
  });
}

準備工作

從github上下載最新版本的cartographer、cartographer_ros、ceres以及protobuf(3.0)四個文件(必須的)
note:直接在cartographer的scripts下運行install_ceres.sh,install_proto3.sh,會出現錯誤

1.安裝系列依賴

sudo apt-get install -y \
    clang \
    g++ \
    git \
    google-mock \
    libboost-all-dev \
    libcairo2-dev \
    libcurl4-openssl-dev \
    libeigen3-dev \
    libgflags-dev \
    libgoogle-glog-dev \
    liblua5.2-dev \
    libsuitesparse-dev \
    ninja-build \
    python-sphinx

2.編譯安裝Ceres

在從github中下載的ceres,解壓出來

mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

3.編譯安裝Protobuf

在從github中下載的Protobuf,解壓出來

mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -Dprotobuf_BUILD_TESTS=OFF \
  ../cmake
ninja
sudo ninja install

4.編譯安裝Cartographer

mkdir build
cd build
cmake .. -G Ninja
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

5.編譯Cartographer_ros

1.新建工作空間Cartographer_catkin_ros/src,將cartographer_ros包拷貝至src目錄下。
2.cd …Cartographer_catkin_ros下,運行:

catkin_make_isolated --install --use-ninja

至此,完成了cartographer所有編譯與安裝工作。
ps:在安裝編譯的過程中提示錯誤,一般是缺少依賴,通過sudo apt-get install 或sudo apt-get install ros-kinetic-即可快速安裝

6.運行Cartographer_ros,測試2D數據

6.1 第一種:demo_backpack_2d.launch

source devel/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME
}/2D_demo/cartographer_paper_deutsches_museum.bag

節點狀態圖如下:
在這裏插入圖片描述
​​經上述指令,即可出圖。
在這裏插入圖片描述

6.2 第二種:offline_backpack_2d.launch 離線模式

source devel/setup.bash

6.2.1 啓動開始建圖,生成.pbstream文件

roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=${
HOME}/2D_demo/cartographer_paper_deutsches_museum.bag

大約一個小時左右,在數據目錄有cartographer_paper_deutsches_museum.bag.pbstream

6.2.2 提取地圖,將.pbstream轉爲柵格地圖輸出

roslaunch cartographer_ros assets_writer_ros_map.launch bag_filenames:=
${HOME}/2D_demo/cartographer_paper_deutsches_museum.bag pose_graph_filename:=${HOME}/2D_demo/cartographer_paper_deutsches_museum.bag.pbstream

會生成建立的地圖文件(包括pgm和yaml)文件。可以用map_server加載使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章