当前位置: 代码迷 >> 综合 >> 在自己的机器人上跑 Cartographer pure location纯定位
  详细解决方案

在自己的机器人上跑 Cartographer pure location纯定位

热度:63   发布时间:2023-10-22 03:36:16.0

本文基于本人的2D Cartographer SLAMhttps://blog.csdn.net/qq_34935373/article/details/107181281

话不多说:

依然三个项目文件配置:

launch文件:

<launch><param name="/use_sim_time" value="false" /><param name="robot_description"textfile="$(find cartographer_ros)/urdf/myself_robot.urdf" /><node name="robot_state_publisher" pkg="robot_state_publisher"type="robot_state_publisher" /><node name="cartographer_node" pkg="cartographer_ros"type="cartographer_node" args="-configuration_directory $(find cartographer_ros)/configuration_files-configuration_basename myself_backpack_2d_localization.lua-load_state_filename /home/dcz/bag/map.pbstream" output="screen"><remap from="/points2" to="/rslidar_points" /></node><!-- cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc //occupancy_grid_publisher_.publish(*msg_ptr); /--><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>

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 "myself_rslidar_2d.lua"
TRAJECTORY_BUILDER.pure_localization = true
POSE_GRAPH.optimize_every_n_nodes = 20return options

其余配置和运行说明:

1.launch文件,第一行是实时在线跑,所以设置为false,如果是跑数据demo或者bag,设置为true。

2.这里使用了之前博客的lua文件和urdf文件,已经建好的地图pbstream文件。需要自行查询,也可以include你的lua,或者设置成你的urdf文件,还有建图和定位的分辨率必须一致,这里都为0.05

2.需要修改/cartographer_ros/cartographer_ros/occupancy_grid_node_main.cc 的源码,在main函数上面3行作用,注释掉下面这句。原因是因为他会发布新的地图覆盖原来的地图,建图的时候请记得打开奥。

occupancy_grid_publisher_.publish(*msg_ptr);

然后catkin_make下或者独立安装的catkin_make_isolated --install --use-ninja.

然后需要source下环境,注意devel和devel_isolate和上面对应。

3.在显示的时候使用了cartographer自带的demo_2d.rviz文件。

 

运行:

1.先启动雷达运行节点;

2.启动上面配置的launch文件;

3.在rviz中如果有问题,可以尝试换下全局坐标系,我这里配置的是/map,如果你lua文件是别的请自行更换,并修改rviz文件。

4.如果有问题可以跑下官方demo,理解下就好了,然后看下节点图,在运行自己的,根据消息节点图进行修改和重映射。

效果图如下。

在自己的机器人上跑 Cartographer pure location纯定位

 

3D的pure location配置文件差不多,不过需要额外的发布imu消息才能争取定位,关于定位参数的调整参考官网建议。

  相关解决方案