当前位置: 首页 > news >正文

20.04部署cartographer

部署cartographer

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

下载cartographer新建了一个ws

mkdir carto_ws
cd carto_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src

安装依赖

如果安装ROS的时候执行过’sudo rosdep init’,那么这里会报错,报错可以忽略

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

安装abseil-cpp library

src/cartographer/scripts/install_abseil.sh

编译并安装

catkin_make_isolated --install --use-ninja

#运行2d包

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

使用自己的激光雷达数据
修改revo_lds.lua

gedit carto_ws/src/cartographer_ros/cartographer_ros/configuration_files/revo_lds.lua

下面是修改的代码

-- Copyright 2016 The Cartographer Authors
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--      http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.include "map_builder.lua"
include "trajectory_builder.lua"options = {map_builder = MAP_BUILDER,trajectory_builder = TRAJECTORY_BUILDER,map_frame = "map",tracking_frame = "laser",published_frame = "laser",odom_frame = "odom",provide_odom_frame = true,publish_frame_projected_to_2d = false,use_pose_extrapolator = on,use_pose_extrapolator = true,use_odometry = false,use_nav_sat = false,use_landmarks = false,num_laser_scans = 1,num_multi_echo_laser_scans = 0,num_subdivisions_per_laser_scan = 1,num_point_clouds = 0,lookup_transform_timeout_sec = 0.2,submap_publish_period_sec = 0.3,pose_publish_period_sec = 5e-3,trajectory_publish_period_sec = 30e-3,rangefinder_sampling_ratio = 1.,odometry_sampling_ratio = 1.,fixed_frame_pose_sampling_ratio = 1.,imu_sampling_ratio = 1.,landmarks_sampling_ratio = 1.,
}MAP_BUILDER.use_trajectory_builder_2d = trueTRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
TRAJECTORY_BUILDER_2D.min_range = 0.3
TRAJECTORY_BUILDER_2D.max_range = 8.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 1.
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 10.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65return options

修改demo_revo_lds.launch

gedit carto_ws/src/cartographer_ros/cartographer_ros/launch/demo_revo_lds.launch

修改

<!--Copyright 2016 The Cartographer AuthorsLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
--><launch><param name="/use_sim_time" value="true" /><node name="cartographer_node" pkg="cartographer_ros"type="cartographer_node" args="-configuration_directory $(find cartographer_ros)/configuration_files-configuration_basename revo_lds.lua"output="screen"><remap from="scan" to="scan" /></node><node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"type="cartographer_occupancy_grid_node" args="-resolution 0.05" /><node name="rviz" pkg="rviz" type="rviz" required="true"args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" /></launch>

再次编译,要删除之前编译的文件

cd carto_ws
catkin_make_isolated --install --use-ninja

写入.bashrc中

source /home/xinghai/ROS/SLAMTEC/cartographer_ros/devel_isolated/setup.bash

运行代码

sudo chmod 666 /dev/ttyUSB0
roslaunch rplidar_ros rplidar_a3.launch
roslaunch cartographer_ros demo_revo_lds.launch

在这里插入图片描述

保存地图

cartographer建立完地图后,无法用map_server保存地图,

cartographer保存地图方式:
1 完成轨迹,不再接受数据

rosservice call /finish_trajectory 0 //结束路径0 的建图

2 序列化保存当前状态

rosservice call /write_state "{filename: '${HOME}/Downloads/mymap2.pbstream'}"

3 将pbstream转化为pgm和yaml文件

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=/home/xinghai/Downloads/mymap3map  -pbstream_filename=/home/xinghai/Downloads/mymap3.pbstream -resolution=0.05

解释

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=<绝对路径>/<地图名字> -pbstream_filename=<绝对路径>/<.pbstream名字> -resolution=0.05
http://www.lryc.cn/news/165139.html

相关文章:

  • djangoMTV初探
  • Minecraft--基于云服务器搭建自己的服务器--简易搭建
  • 【数据结构与算法】十大经典排序算法
  • Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(一)
  • 665. 非递减数列-先改后验法
  • 调教 文心一言 生成 AI绘画 提示词(Midjourney)
  • 半导体制造工艺(一)光刻
  • 【海思SS626 | 开发环境】VMware17安装Ubuntu 18.04.6
  • Vue知识系列(3)每天10个小知识点
  • Java基础入门·多线程·线程池ThreadPool篇
  • Trinitycore学习之在vscode查看远端服务器上源码配置
  • 583. 两个字符串的删除操作 -- 动规
  • SOME/IP
  • [2023.09.12]: Yew应用开发的第一个hook--use_state
  • 使用Langchain+GPT+向量数据库chromadb 来创建文档对话机器人
  • Spring Cloud(Finchley版本)系列教程(一) 服务注册与发现(eureka)
  • 【大数据】美团 DB 数据同步到数据仓库的架构与实践
  • 分类预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元数据分类预测
  • mac使用squidMan设置代理服务器
  • 大数据Flink(七十八):SQL 的水印操作(Watermark)
  • 【Linux】Qt Remote之Remote开发环境搭建填坑小记
  • ATFX汇市:离岸人民币大幅升值,昨日盘中跌破7.3关口
  • Spring Boot 配置 Knife4j
  • Java项目中遇到uv坐标如何转换成经纬度坐标
  • std : : unordered_map 、 std : : unordered_set
  • Python解释器和Pycharm的傻瓜式安装部署
  • 14 Python使用网络
  • AI ChatGPT 各大开放平台一览 大模型 Prompt
  • 全球汽车安全气囊芯片总体规模分析
  • USB适配器应用芯片 国产GP232RL软硬件兼容替代FT232RL DPU02直接替代CP2102