ROS(10)turtlebot仿真(利用cartographer_ros)

12 篇文章 4 订阅

10. turtlebot仿真(利用cartographer_ros替换karto)

参考链接
https://blog.csdn.net/qq_34935373/article/details/111991920
https://www.freesion.com/article/9794248452/

10.1. 官方纯定位Pure localization仿真测试

10.1.1. 下载数据集

wget -P mnt/e/wsl/cartographer_demo/pureLoc/ https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-05-14-44-52.bag  
wget -P mnt/e/wsl/cartographer_demo/pureLoc/ https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-27-12-31-41.bag

第一个用于建图,第二个用于定位。

10.1.2. 建图

自己的路径:

roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=/mnt/e/wsl/cartographer_demo/pureLoc/b2-2016-04-05-14-44-52.bag

生成.pbstream的地图文件.

10.1.3. 定位

自己的路径:

roslaunch cartographer_ros demo_backpack_2d_localization.launch \
   load_state_filename:=/mnt/e/wsl/cartographer_demo/pureLoc/b2-2016-04-05-14-44-52.bag.pbstream \
   bag_filename:=/mnt/e/wsl/cartographer_demo/pureLoc/b2-2016-04-27-12-31-41.bag

这里第一个参数是用的地图,第二个参数是下载的数据集进行定位测试。

10.2. turtlebot3仿真建图

  • 首先修改/opt/ros/melodic/share/turtlebot3_slam/config/turtlebot3_lds_2d.lua中的tracking_frame = "base_footprint"

  • 然后执行:
    roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer

  • 保存地图,参考https://google-cartographer-ros.readthedocs.io/en/latest/assets_writer.html:
    rosservice call /write_state /mnt/e/wsl/maps/carto.pbstream 1
    rosrun map_server map_saver -f /mnt/e/wsl/maps/carto

写的地图数据可以通过assets_writer_backpack_3d.lua来进行配置。

  • pbstream转pgm地图:
    rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/Downloads/mymap -pbstream_filename=${HOME}/Downloads/mymap.pbstream -resolution=0.05

10.3. turtlebot3仿真导航

[关键]上个步骤中实际已经启动了move_base节点,可以一边扫图一边导航控制。具体可查看turtlebot3_cartographer.launch文件。

10.3.1. turtlebot3_cartographer.launch最终文件

在建图和导航时,分别注释掉相关部分即可。
建图和导航的指令均为:roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer

<launch>
  <!-- Arguments -->
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="configuration_basename" default="turtlebot3_lds_2d.lua"/>
  <arg name="map_file" default="/mnt/e/wsl/maps/carto.yaml"/>
  <arg name="load_state_filename" default="/mnt/e/wsl/maps/carto.pbstream"/>

  <!-- move_base -->
  <include file="$(find turtlebot3_navigation)/launch/move_base.launch">
    <arg name="model" value="$(arg model)" />
  </include>

  <!-- cartographer_node 只有在建图的时候打开-->
  <node pkg="cartographer_ros" type="cartographer_node" name="cartographer_node" 
        args="-configuration_directory $(find turtlebot3_slam)/config
              -configuration_basename $(arg configuration_basename)"
        output="screen">
    <remap from="/imu" to="/flat_imu"/>
  </node>
  <!-- cartographer_occupancy_grid_node 只有在建图的时候打开-->
  <node pkg="cartographer_ros" type="cartographer_occupancy_grid_node"
        name="cartographer_occupancy_grid_node" 
        args="-resolution 0.05" />

  <!-- Map server 建图的时候屏蔽该节点,只在导航时候打开
  <node pkg="map_server" name="map_server" type="map_server" args="$(arg map_file)"/>-->
  <!-- cartographer_node 只在导航时候打开
  <node pkg="cartographer_ros" type="cartographer_node" name="cartographer_node" 
        args="-configuration_directory $(find turtlebot3_slam)/config
              -configuration_basename $(arg configuration_basename)
              -load_state_filename $(arg load_state_filename)"
        output="screen">
    <remap from="/imu" to="/flat_imu"/>
  </node>-->

  <!-- flat_world_imu_node -->
  <node pkg="turtlebot3_slam" type="flat_world_imu_node" name="flat_world_imu_node" output="screen">
    <remap from="imu_in" to="/imu" />
    <remap from="imu_out" to="/flat_imu" />
  </node>
</launch>


10.3.2. 建图或导航节点关系图

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
差速小车在仿真环境中的路径规划可通过ROS中的Cartographer和Move_base功能包来实现。 首先,我们需要将仿真环境的地图信息输入到Cartographer中,进行建图。Cartographer是一个实时SLAM(Simultaneous Localization and Mapping)系统,它能够使用激光雷达等传感器数据生成精确的环境地图。在启动Cartographer之前,需要先配置传感器参数和机器人模型等信息。然后在launch文件中指定map_publisher和trajectory_node,并连接激光雷达数据源。启动Cartographer后,它将不断地从传感器接收数据,并根据这些数据实时生成地图。 接下来,我们可以使用move_base功能包进行路径规划。move_base是ROS中的导航功能包,它可以根据Cartographer生成的地图信息,使用全局路径规划器(如global_planner)和局部路径规划器(如base_local_planner),实现差速小车的路径导航。 在配置move_base之前,需要定义在规划过程中使用的局部和全局costmap(代表机器人周围的障碍物信息),并将Cartographer生成的地图信息传入costmap。同时,还要设置机器人的起点和目标点。 在launch文件中,需要加载move_base节点,并连接costmap和地图信息。move_base节点将使用全局路径规划器进行全局路径规划,然后将路径传递给局部规划器,以生成差速小车的速度和方向指令。 一旦配置完成,启动move_base节点后,差速小车将根据全局路径规划器生成的路径,实时导航并移动到目标点。 综上所述,通过Cartographer和Move_base功能包的配合,我们可以实现差速小车在仿真环境中的路径规划。通过Cartographer建图,生成地图信息,然后使用Move_base进行路径规划和导航,使得差速小车可以自主地在仿真环境中移动和导航。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值