turtlebot3在自己搭建的gazebo仿真中建图与导航

前面采用别的小车进行仿真实验,能实现SLAM建图,但是出现的问题也是需要解决的(目前暂时不知道如何解决,同样这里出现)本文更换成了turtlebot3进行仿真实验

1.下载编译(由于是放假前做到这一步,总所周知收假后忘干净了,我后续完成整个实验后将会重新在新的虚拟机中从0开始并做成专栏,方便学习)

#1.我用的环境是20.04所以采用的noetic版本,对应自己的版本下载
#2.文件夹可按自己的来,或者一样命名也是可以的

mkdir -p ~/test_ws/src/ 

cd ~/test_ws/src/

#下载网络问题的话可以1.科学上网2.采用安装包方式下载

git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git

git clone https://github.com/ROBOTIS-GIT/turtlebot3.git

git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

cd ~/test_ws 

catkin_make


#该开源项目一共有两个机器人模型,分别为:burger 和 waffle

export TURTLEBOT3_MODEL=burger  

source ~/test_ws/devel/setup.bash

roslaunch turtlebot3_gazebo turtlebot3_world.launch



#我当时出现了些报错,但是不记得了可以直接搜索有解决方法

打开终端运行gazebo仿真地图(由于没有将source加入,因此每次打开新的终端需要source一下环境)

cd ~/test_ws/
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch

打开一个新的终端运行SLAM建图(功能包中写了好几种建图算法,按实际需要来进行选择)

1.采用Gmapping算法进行仿真:

cd ~/test_ws/
source devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch 

用键盘控制小车进行移动并实时定位建图

cd ~/test_ws/
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

我在后续运行roslaunch turtlebot3_gazebo turtlebot3_world.launch这个仿真环境时我发现test_ws工作空间中并未有这个turtlebot3_gazebo功能包,我roscd turtlebot3_gazebo发现在默认下载的位置下:opt/ros/noetic/share,我将功能包复制到test_ws下载编译不成功报错:

目前交流的原因:由于之前那个下载的是包装好的,里面没有camke.lists不能移动后编译

暂时未解决camke的问题,目前不影响后续,有会的希望指导一下(后续肯定需要弄好的)

现在我重新下载部分功能,cd到turtlrbot3下添加了几个功能包

cd test_ws/src/turtlebot3

git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

重新catkin_make编译成功,重新测试运行没问题

2.cartographer算法进行仿真(前提已经安装好了cartographer)

安装在一个工作空间src下好处:不会出现找不到cartographer_ros的问题,

不安装在一个工作空间src下好处:工作空间整洁(O(∩_∩)O哈哈~)

没有安装在同一个工作空间下文中有简单解决方法,cartographe安装教程很多,小鱼ros也有一键安装,但是没试过)

首先将test_ws/src/turtlebot3/turtlebot3_slam/launch/turtlebot3_cartographer.launch文件中修改为

  <!-- cartographer_node -->
  <node pkg="cartographer_ros" type="cartographer_node" name="cartographer_node" 
        args="-configuration_directory $(find turtlebot3_slam)/config
              -configuration_basename turtlebot3_lds_2d_gazebo.lua"
        output="screen">
    <remap from="/imu" to="/flat_imu"/>
    <!--remap from="points2" to="/camera/depth/points" / -->
  </node>

打开终端进入到自己的工作空间下source,运行仿真环境

cd test_ws
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch 

 打开新终端,运行

cd test_ws
source devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer 

出现报错:找不到cartographer_ros

(在之前我已经安装好了cartographer,但是在不同的工作空间下)

解决方法:直接找到cartographer_ros功能包复制到当前工作空间test_ws/home/ply1/test_ws/src下

再cd回到test_ws进行catkin_make编译成功

重新运行成功(我在rviz中关了local map和global map,所有点不一样)

通过键盘控制完成整个地图的构建

保存地图,生成pgm和yaml格式文件

#保存地址根据自己的需要修改,建议统一保存在turtlebot3_navigation/maps方便管理
rosrun map_server map_saver -f /test_ws/src/turtlebot3/turtlebot3_navigation/maps

#先把这两个复制到home下,代码中find包还未修改,若不放到home下回报错找不到map,后续修改后将会补充

给地图权限,防止报错

   chmod 777 ~/test_ws/src/turtlebot3/turtlebot3_navigation/maps/map.yaml

SLAM导航

#加载仿真环境
roslaunch turtlebot3_gazebo turtlebot3_world.launch 

#加载导航节点
roslaunch turtlebot3_navigation turtlebot3_navigation.launch

目前小车的定位不准确发散,在rviz页面上方中采用2D Nav Estimate来对小车进行定位,然后通过键盘控制小车旋转来定位。

cd ~/test_ws/
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

随着绿色箭头的聚集,定位到小车准确位置。

在rviz页面上方中采用2D Nav Goal来选择小车移动的目标点并进行导航规划路线。

上述完成了整个demo的测试,现在开始在自己搭建的gazebo仿真环境中进行实验

参考:创建Gazebo仿真环境控制小车(搬运工和报错解决)-CSDN博客

当时用的别人实验的小车在tf中有问题再换成的现在的turtlebot小车

将创建好的仿真环境模型model.config文件和model.sdf文件放在同一个文件下(我这里是test文件夹)然后将test文件夹复制到test_ws/src/turtlebot3/turtlebot3_gazebo/models下

将地图保存,我命名为test.world,另存为/test_ws/src/turtlebot3/turtlebot3_gazebo/worlds文件夹

打开vscode,在/test_ws/src/turtlebot3/turtlebot3_gazebo/launch下创建test.launch文件

代码可复制其他launch文件再修改相应的部分即可,我的如下:

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="x_pos" default="0.0"/>
  <arg name="y_pos" default="0.0"/>
  <arg name="z_pos" default="0.0"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_world.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

  <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
</launch>

同理打开自己的环境和采用合适的SLAM算法进行建图,结果如图,到此完整完成,可以开始建图

 最后将建好的地图进行保存,用于后续的导航地图(保存到maps下面自己的路径和名字)

rosrun map_server map_saver -f ~/catkin_ws/src/mbot_navigation/maps/图片名

其他算法同理可自行下载编译运行(持续更新)

### Ubuntu 20.04 上使用 TurtleBot2 和 Cartographer 进行 SLAM 建 对于希望在Ubuntu 20.04上利用TurtleBot2和Cartographer实现SLAM建的开发者而言,重要的是理解不同组件之间的兼容性和配置方法。由于Ubuntu 20.04支持ROS Noetic版本[^1],因此所有操作都将基于此环境。 #### 安装 ROS Noetic 并设置工作空间 确保已经成功安装了ROS Noetic,并创建了一个新的Catkin工作区用于后续开发: ```bash sudo apt update && sudo apt install ros-noetic-desktop-full source /opt/ros/noetic/setup.bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash ``` #### 安装并配置 TurtleBot2 软件包 为了使TurtleBot2能够在ROS环境中正常运行,需下载官方提供的软件包集合: ```bash git clone https://github.com/turtlebot/turtlebot.git src/turtlebot git clone https://github.com/turtlebot/turtlebot_apps.git src/turtlebot_apps git clone https://github.com/turtlebot/turtlebot_interactions.git src/turtlebot_interactions git clone https://github.com/turtlebot/turtlebot_simulator.git src/turtlebot_simulator ``` 之后编译整个项目以确保所有依赖项都已解决: ```bash rosdep install --from-paths src --ignore-src -r -y catkin_make ``` #### 配置 Cartographer 接下来获取Cartographer及其对应的ROS接口库,并将其集成到现有的Catkin工作区内: ```bash cd ~/catkin_ws/src vcs import < turtlebot_cartographer.repos ``` 完成上述命令后再次执行`catkin_make`来构建更新后的源码树结构。 #### 启动测试 一切准备就绪后可以尝试启动完整的导航堆栈以及Cartographer节点来进行实时地绘制实验: ```bash roslaunch turtlebot_bringup minimal.launch roslaunch turtlebot_navigation amcl_demo.launch map_file:=<path_to_map> roslaunch turtlebot_cartographer demo_2d.launch ``` 通过RViz可视化工具观察机器人运动轨迹及所生成的地效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值