跑例程:在Gazebo仿真环境中实现SLAM(cartogarpher)

设置环境变量

echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc

是一个将ROS2 环境变量添加到 ~/.bashrc 文件中的命令。通过执行这个命令,每次打开一个新的终端窗口时,都会自动执行。dev_ws是你所创建的工作空间。

目录

1.在Gazebo仿真环境中实现SLAM(cartogarpher)

1.1依赖包安装

1.2开始建图

1.3 初始化机器人的位置

1.4 给定目标点动起来


1.在Gazebo仿真环境中实现SLAM(cartogarpher)

1.1依赖包安装

首先需要安装Gazebo11,默认安装完的ROS2是不包含的:

$ sudo apt-get install ros-foxy-gazebo-*

后续我们会使用Cartographer进行SLAM,所以还需要安装Cartographer相关的功能包:

$ sudo apt install ros-foxy-cartographer
$ sudo apt install ros-foxy-cartographer-ros

接下来安装Turtlebot3相关的功能包:

$ sudo apt install ros-foxy-turtlebot3*
$ sudo apt install ros-foxy-turtlebot3-simulations

问题:在启动gazebo时gazebo黑屏以及加载缓慢。

解决:

cd ~/.gazebo/
mkdir -p models
cd ~/.gazebo/models/
wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf

1.2开始建图

1.配置

export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:`ros2 pkg \
prefix turtlebot3_gazebo \
`/share/turtlebot3_gazebo/models/

2.启动建图
分别打开三个终端
终端1启动gazebo仿真

export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

终端2启动建图

export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

终端3启动键盘控制节点

export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard

 地图位置可以使用相对目录

ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=true map:=map/my_map.yaml 

1.3 初始化机器人的位置

启动后,机器人最初并不知道它在哪里。默认情况下,导航程序等待您给出一个大致的起始位置。

我们必须手动机器人的初始位置和方向。此方法应用于 AMCL 定位算法。

以通过点击RVIZ上的位置估计按钮初始化

  • 单击"2D 姿势估计"按钮
  • 单击机器人所在的地图中的近似点,拖动箭头指出机器人所面朝的方向

如果一次搞定最好不过,不行可以多搞机器人,在导航过程中也可以使用这种方法来优化机器人位置的精准性。

设置完成初始化为自后,tf树就搞定了,接着就可以让机器人出发了。

1.4 给定目标点动起来

同样使用RVIZ来操作

    单击 2D 导航目标按钮(也位于顶部菜单中)
    单击地图中的特定点以设置目标位置,并将光标拖动到 TurtleBot 最后应该面对的方向

    绿色小箭头群是适应性蒙特卡洛定位 (AMCL)的可视化。每个绿色箭头代表机器人的可能位置和方向。请注意,在开始时,其分布分布分布在整个地图上。一旦机器人移动箭头得到更新,因为该算法纳入了新的测量。在运动过程中,箭头的分布变得不那么混乱,并越来越定居到机器人的位置,这最终意味着算法越来越确定机器人在地图中的姿势。

参考资料:ROS2入门教程——30. 在Gazebo仿真环境中实现SLAM - 古月居

https://blog.csdn.net/qq_27865227/category_11623115.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个非常有趣的问题!首先,让我们来了解一下ROS和Gazebo。 ROS(机器人操作系统)是一个用于机器人开发的开源框架,它提供了一系列工具和库,使得机器人软件开发更加简单和高效。 Gazebo是一个基于物理的仿真平台,可以用于仿真机器人、车辆、飞行器等。它提供了高度可配置的物理引擎、传感器模型和环境模型,使得用户可以快速构建各种仿真场景。 现在,我们可以开始回答你的问题了。对于移动机器人的导航和避障仿真,通常需要以下步骤: 1. 构建机器人模型 在Gazebo,我们可以使用URDF(通用机器人描述格式)来定义机器人模型。可以使用各种工具如SolidWorks、Blender等来创建URDF文件,也可以使用ROS提供的工具如URDF编辑器等。 2. 添加传感器 为了使机器人能够感知环境,我们需要添加各种传感器,如激光雷达、摄像头等。在Gazebo,可以使用ROS提供的各种传感器模型,或者自己编写传感器模型。 3. 编写控制程序 在ROS,可以使用ROS Navigation Stack来实现机器人的导航和避障功能。该软件包提供了各种算法和工具,如SLAM(同时定位和地图构建)、路径规划、障碍物检测等。 4. 运行仿真 一旦完成了机器人模型、传感器和控制程序的编写,我们可以在Gazebo运行仿真。可以使用ROS提供的launch文件来启动仿真,并且可以通过ROS的可视化工具RViz来监视机器人的状态和环境。 通过这些步骤,我们可以在不同场景下对移动机器人进行导航和避障仿真。同时,我们可以根据需要调整机器人模型、传感器和控制程序,以便更好地适应不同的应用场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值