ros-noetic三个slam包-安装
安装ros的导航包sudo apt-get install ros-noetic-navigation安装gmappingsudo apt-get install ros-noetic-gmapping安装hector-slamsudo apt-get install ros-noetic-hector-slam安装cartographer这个好像需要git一下先新建个工作空间,如果感觉需要的话默
下面安装cartographer好像需要python3,我觉得最好默认就是python3,之前我是没注意的
安装ros的导航包
sudo apt-get install ros-noetic-navigation
安装gmapping
sudo apt-get install ros-noetic-gmapping
安装hector-slam
sudo apt-get install ros-noetic-hector-slam
安装cartographer
这个好像需要git一下
先新建个工作空间,如果感觉需要的话
默认已经做了换源(最好别把官方的源删了,放后面)等工作
编译前工具
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
建环境
mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
cd src
git clone https://github.com/googlecartographer/cartographer_ros.git
git clone https://github.com/googlecartographer/cartographer.git
git clone https://github.com/ceres-solver/ceres-solver.git
注意,git clone通常会失败,这里有个小技巧是去gitee找一下镜像
下面是我搜到的一些替代
cd src
git clone https://gitee.com/wbr_git/cartographer_ros.git
git clone https://gitee.com/adamghzhong/cartographer.git
git clone https://gitee.com/ddddzkz/ceres-solver.git
[还可以尝试加https://ghproxy.com/前缀]
在工作目录(如catkin_ws)下开始安装依赖,ros distro表示发行版本,比如ros-noetic,就按下面写不改动也行
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
可能运气不好会报错
所以参考这两篇文章
https://www.pythonheidong.com/blog/article/1034234/3dd1c045741b726b607b/
https://blog.csdn.net/learning_man/article/details/119766435
和这篇文章(最后没用到)
https://blog.csdn.net/weixin_44028876/article/details/120201324
如果操作过前两篇文章之一,就不要进行第三篇的操作,否则反而会带来报错
安装abseil-cpp,abseil是从Google内部代码块中抽取出来的一系列最基础的软件库。作为基本的组成部分,这些软件库支撑了几乎全部Google在运行的项目。
src/cartographer/scripts/install_abseil.sh
这里也有一个指向GitHub的git clone
用文本编辑器打开文件,注释这行,也换上gitee
#git clone https://github.com/abseil/abseil-cpp.git
git clone https://gitee.com/dsl11/abseil-cpp.git
接下来执行
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
但我好像没有,问题不大
开始编译
catkin_make_isolated --install --use-ninja
以后如果修改了cartographer里的内容,也按照这个命令编译,不是用catkin_make
这个会编译一段时间,可以开另一个窗口执行下一步
下载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
注意点
我发现如果再src里增加一个文件(我增加了一个launch文件),再重新编译,就会报错,而且是目前我看来很离谱的报错,报错后就算新增的文件删除,也还是会继续报错。所以尽量只更改不增加,或者编译前自己先预留空白launch文件。
报错我目前唯一的解决方法是删掉三个isolated文件夹,重新编译。
缺少pcl
不知道干了啥(可能是装了ros2) 过了几个月 又报错了
Could not find a package configuration file provided by
“pcl_conversions”
解决:
sudo apt-get install ros-noetic-pcl*
希望跑在本地激光雷达数据
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 = "base_link",
provide_odom_frame = false,
publish_frame_projected_to_2d = false,
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 = true
TRAJECTORY_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-1
POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65
return options
demo_revo_lds.launch:
<!--
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.
-->
<launch>
<param name="/use_sim_time" value="false" />
<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>
更多推荐

所有评论(0)