Nvidia Tx2 + RpLidar A2 + ROS Kinetic 配置Google Cartographer
最近在利用Gmapping 在进行建图的时候发现效果并不是特别好,可能是因为Gmapping 只时候建小地图以及没有回环检测的原因,所以建出来的图并不是很好,效果如下图。所以决定使用一下google的Cartographer。
配置环境:
ROS版本: Kinetic
ubuntu版本:16.04LTS
电脑:Nvidia Tx2
第一步:安装Cartographer:
Tx2安装Cartographer(官方安装方法)
# Install wstool and rosdep.
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
# Create a new workspace in 'catkin_ws'.
mkdir catkin_ws
cd catkin_ws
wstool init src
# Merge the cartographer_turtlebot.rosinstall file and fetch code for dependencies.
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_turtlebot/master/cartographer_turtlebot.rosinstall
#vim src/.rosinstall 该文件默认是隐形状态,进入到src文件夹后ctrl+h 即可显示出来
#更改ceres-solver中地址改为下面的地址:
#>>uri: https://github.com/ceres-solver/ceres-solver.git
wstool update -t src
# Install deb dependencies.
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
# Build and install.
catkin_make_isolated --install --use-ninja
source install_isolated/setup.ba
测试 cartographer
运行 cartographer,首先 编辑用于运行 rplidar 的配置文件:
1、 修改 revo_lds_.lua:
位于/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files文件夹下,修改了 22 和 23 行。
-- 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,
use_odometry = 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.,
imu_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
2、修改 demo_revo_lds.launch :
位于~/catkin_ws/src/cartographer_ros/cartographer_ros/launch文件夹下,注意 23 和 25 行。
主要修改两个地方,<remap from="scan"to="horizontal_laser_2d"/> 这一句后面的 horizontal_laser_2d改成 scan;最后的 playbag 节点删掉。
<!--
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="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>
3、重新编译
$ cd ~/catkin_ws
$ catkin_make_isolated --install --use-ninja
启动两个终端,分别运行 rplidar 的节点和 cartographer_ros 节点:
第一个终端:
$ roslaunch rplidar_ros rplidar.launch
第二个终端:
$ roslaunch cartographer_ros demo_revo_lds.launch
其实在配置的过程中还是遇到了很多的问题,其中有一个比较大的问题就是,Tx2自带的protobuf是2.6.1版本的,而在编译过程中需要用到protobuf3.0.0及其以上的版本,废了不少功。如果在配置上遇到了什么别的问题,可以在留言里提出,我会尽量回复。
posted on 2022-08-13 16:15 DylanYeung 阅读(69) 评论(0) 编辑 收藏 举报