本文使用 Zhihu On VSCode 创作并发布

65afcb4a07a59862350563ac280c4fe3.png
强烈推荐原文网站 ROBOTIS e-Manual

OS version: Ubuntu 18.04
ROS version: melodic

TurtleBot3支持在仿真中使用虚拟机器人进行编程和开发的开发环境,这就对吃土的年轻人们很有好了。为此,有两种开发环境,一种使用fake节点和3D可视化工具RViz,另一种使用3D机器人模拟器Gazebofake节点方法适用于使用机器人模型和运动进行测试,但不能使用传感器。如果需要测试SLAM和导航,建议使用Gazebo,它可以在仿真中使用IMU,LDS和摄像机等传感器。

First of all,打开一个终端运行

roscore

再开始下面的故事。

安装 TurtleBot3 Simulation

首先,为TurtleBot3控件安装依赖软件包

$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ sudo apt-get install ros-melodic-rosserial-python ros-melodic-tf

构建软件包(每次安装完新的软件包都要记得要重新catkin_make一下)

$ cd ~/catkin_ws && catkin_make

如果catkin_make命令已完成而没有任何错误,则TurtleBot3的准备工作已经完成。

在工作空间下载turtlebot3_simulation

cd ~/catkin_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/catkin_ws && catkin_make

要在rviz启动并键鼠控制虚拟机器人,请在两个不同终端中执行程序包中的turtlebot3_fake.launch文件turtlebot3_fake。

${TB3_MODEL}是你正在使用的模型的名称burgerwafflewaffle_pi
(可以都试试看,只是机器人的样子不同而已)接下来的例子都以 burger 模型为例,方便大家复制。

ee3799a5eba77b8d0a7b67a4a4a71cb6.png
$ #export TURTLEBOT3_MODEL=${TB3_MODEL} (可自选)
$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_fake turtlebot3_fake.launch

0b077491bf76790af37cfc9532253349.png

teleop开头的一般都是键盘控制

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

13be74b6fca60b6924d9966f410f8958.png 自己用
w a s x d 控制一下机器人玩玩吧。
至此,安装完成(无报错的话)。

Gazebo 模拟环境

空世界

新终端运行

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

a8e7eca4b8d6ca9ca167a7eecd958ccb.png

TurtleBot3世界

TurtleBot3 world主要用于SLAM和Navigation等测试。

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

cb47fcabee73b4de2387f55265d0ba86.png

Crtl+Shift+鼠标 可控制画面旋转

6653e191b619d64e8d437349fcc03caa.png

TurtleBot3之家

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch

a69f632f51b4065c13cdb0aee1bf6851.png

SLAM 仿真

打开 Gazebo

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

开始 SLAM

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

鼠标控制移动,以完成对整个地图的建图

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

当看起来扫描地比较完全地时候,将所建地地图保存下来。(左gazebo,右rviz)

$ rosrun map_server map_saver -f ~/map

d3639e33269df8a5a936b033cf6b42a2.png

在文件夹中你可以看到如下图的地图:

d50745735e9d224a183dcede3dce9086.png

Navigation 仿真

打开 Gazebo

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

用刚刚保存的地图开始导航

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

估计初始位姿

首先,应该执行机器人的初始姿态估计。在RViz菜单中按2D Pose Estimate,会出现一个非常大的绿色箭头。将其移动到给定地图中实际机器人所在的位姿,并在按住鼠标左键的同时,将绿色箭头拖动到机器人正面朝向的方向:

  1. 点击2D Pose Estimate按钮。
  2. 单击地图中TurtleBot3所在的近似点,然后拖动光标以指示TurtleBot3正面朝向的方向。
  3. 然后使用turtlebot3_teleop_keyboard来回移动机器人(使用后终止掉),以收集周围的环境信息并找出机器人当前在地图上的位置。
    $ export TURTLEBOT3_MODEL=burger
    $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
    
  4. 完成此过程后,机器人将绿色箭头指定的位置和方向用作初始姿势,以估算其实际位置和方向。如果图形未正确显示图形,请单击2D Pose Estimate按钮重复定位TurtleBot3

937aa0b7bd429dd16530cf0dcf0fdded.png

发送导航目标

如果按RViz菜单中的2D Nav Goal,则会出现一个非常大的绿色箭头。该绿色箭头是可以指定机器人目的地的标记。箭头的根是机器人的x和y位置,箭头所指的theta方向是机器人的方向。在机器人将要移动的位置单击此箭头:

  1. 点击2D Nav Goal按钮。
  2. 单击地图中的特定点以设置目标位置,然后将光标拖到TurtleBot最终应面向的方向。
  3. 机器人将根据地图创建一条路径,以避开障碍物。
  4. 然后,机器人会沿着这个路径移动。当突然检测到障碍物,机器人会避开障碍物而移动到目标点。

03411182688c2924ac7a5d470e107e0e.png
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐