10-Examples范例

小芽科技 2022-07-26 12:04:58
Categories: Tags:

本文档由北京小芽科技翻译,原文来自于ROBOTIS官方技术文档

电子手册中的内容可能会在没有事先通知的情况下进行更新。因此,一些视频可能与电子手册中的内容有所不同。

10.1 使用交互式移动标记

TurtleBot3可以通过RViz上的[Interactive Markers](http://wiki.ros.org/interactive_markers)进行移动。你可以使用交互式标记将TurtleBot3移动到旋转或线性。

**[远程PC]**打开一个新的终端,启动远程文件。

TIP。在执行这个命令之前,你必须指定TurtleBot3的模型名称。${TB3_MODEL}是你在burgerwafflewaffle_pi中使用的模型名称。如果你想永久设置导出设置,请参考[Export TURTLEBOT3_MODEL](https://emanual.robotis.com/docs/en/platform/turtlebot3/export_turtlebot3_model)页面。

1
2
$ export TURTLEBOT3_MODEL=${TB3_MODEL}
$ roslaunch turtlebot3_bringup turtlebot3_remote.launch

**[远程PC]**启动交互式标记文件。

1
$ roslaunch turtlebot3_example interactive_markers.launch

**[远程PC]**用RViz对模型进行三维可视化。

1
$ rosrun rviz rviz -d `rospack find turtlebot3_example`/rviz/turtlebot3_interactive.rviz

10.2 障碍物检测

TurtleBot3可以通过LDS数据进行移动或停止。当TurtleBot3移动时,当它检测到前方有障碍物时就会停止。

**[远程PC]**启动障碍物文件。

1
$ roslaunch turtlebot3_example turtlebot3_obstacle.launch

10.3 位置控制

注意。此功能适用于冲刺。

10.4 点操作

TurtleBot3可以通过2D点(x,y)z-angular移动。例如,如果你插入(0.5,0.3,60),TurtleBot3会移动到点(x = 0.5m,y = 0.3m),然后旋转60度。

**[远程PC]**启动 pointop 文件。

1
$ roslaunch turtlebot3_example turtlebot3_pointop_key.launch

10.5 循迹运动

TurtleBot3可以通过自定义路线移动。有三种路线(矩形、三角形和圆形)。这个例子使用行动主题。动作客户端将巡逻数据(模式、面积、计数)翻译给动作服务器。然后行动服务器将cmd_vel翻译给TurtleBot3。请参考上面的教程视频了解更详细的用法。

**[远程PC]**启动循迹服务器文件。

1
$ rosrun turtlebot3_example turtlebot3_server

**[远程电脑]**启动循迹客户端文件。

1
$ roslaunch turtlebot3_example turtlebot3_client.launch

10.6 TurtleBot 跟随例程

为了尝试下面的例子,你必须安装turtlebot3_applicationsturtlebot3_applications_msgs软件包。

**[远程PC]**进入catkin workspace目录(/home/(user_name)/catkin_ws/src),克隆turtlebot3_applications和turtlebot3_applications_msgs仓库。然后运行catkin_make来构建新的软件包。

1
2
3
4
5
6
$ sudo apt-get install ros-kinetic-ar-track-alvar
$ sudo apt-get install ros-kinetic-ar-track-alvar-msgs
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_applications.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_applications_msgs.git
$ cd ~/catkin_ws && catkin_make
  1. [远程PC] 安装scikit-learnNumPyScyPy软件包。

    1
    2
    3
    $ sudo apt-get install python-pip
    $ sudo pip install -U scikit-learn numpy scipy
    $ sudo pip install --upgrade pip
  2. [远程PC] 安装完成后,在远程电脑上运行roscore。

    1
    $ roscore
  3. [TurtleBot] 运行Bringup软件包。

    1
    $ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  4. [远程PC] 为TurtleBot3 Burger设置环境变量,并启动turtlebot3_follow_filter。

    1
    2
    $ export TURTLEBOT3_MODEL=burger
    $ roslaunch turtlebot3_follow_filter turtlebot3_follow_filter.launch
  5. **[远程PC]**启动turtlebot3_follower

1
$ roslaunch turtlebot3_follower turtlebot3_follower.launch

10.7 TurtleBot全景图演示

  1. [TurtleBot] 启动turtlebot3_rpicamera文件

    1
    $ roslaunch turtlebot3_bringup turtlebot3_rpicamera.launch
  2. [远程 PC] 运行panorama

    1
    $ roslaunch turtlebot3_panorama panorama.launch
  3. [远程 PC] 要启动全景图演示,请输入以下命令:

    1
    $ rosservice call turtlebot3_panorama/take_pano 0 360.0 30.0 0.3
    • 可以发送给rosservice以获得全景图像的参数有。

      • 拍摄照片的模式。

      • 0 : 快照和旋转(即旋转,停止,快照,旋转,停止,快照,…)。

  1. [远程 PC] 要查看结果图像,请输入以下命令。

    1
    $ rqt_image_view image:=/turtlebot3_panorama/panorama

    img

10.8 自动泊车

  1. [远程PC]用以下命令安装NumPy包。如果你已经安装了numpy,你可以跳过以下命令。

    1
    2
    3
    $ sudo apt-get install python-pip
    $ sudo pip install -U numpy
    $ sudo pip install --upgrade pip
  2. [远程PC] 运行roscore.

    1
    $ roscore
  3. [TurtleBot] 调出基本软件包,以启动TurtleBot3应用程序。

    1
    $ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  4. [远程PC] 如果你使用TurtleBot3 Burger,请按以下命令设置TurtleBot3的型号。

    1
    {% dplayer "url=TurtleBot3_51_Machine_Learning_tutorial_3.mp4"%}

    注意: 在执行命令前指定${TB3_MODEL}:burger’, waffle', waffle_pi`。按照Export TURTLEBOT3_MODEL指令设置永久导出设置。

  5. [远程PC] 运行 RViz。

    1
    2
    $ roslaunch turtlebot3_bringup turtlebot3_remote.launch
    $ rosrun rviz rviz -d `rospack find turtlebot3_automatic_parking`/rviz/turtlebot3_automatic_parking.rviz
  6. [远程PC] 启动自动停车文件。

    1
    $ roslaunch turtlebot3_automatic_parking turtlebot3_automatic_parking.launch
    • 你可以在RViz中选择LaserScan话题。
    • /scan

    img

    • /scan_spot

    img

10.9 视觉自动泊车

  1. [远程 PC] 运行 roscore.

    1
    $ roscore
  2. [TurtleBot] 调出基本软件包,以启动TurtleBot3应用程序。

    1
    $ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  3. [TurtleBot] 启动树莓派相机节点。

    1
    $ roslaunch turtlebot3_bringup turtlebot3_rpicamera.launch
  4. [远程PC]树莓派软件包将发布压缩类型的图像,以便快速通信。然而,在 image_proc 节点的图像整顿中需要的是原始类型的图像。因此,压缩后的图像应该被转换为原始图像。

    1
    $ rosrun image_transport republish compressed in:=raspicam_node/image raw out:=raspicam_node/image
  5. [远程PC] 然后,应进行图像矫正。

    1
    $ ROS_NAMESPACE=raspicam_node rosrun image_proc image_proc image_raw:=image _approximate_s=true _queue_size:=20
  6. [远程PC]现在应该开始AR标记检测。在运行相关的启动文件之前,应该导出本示例代码将使用的模型。运行启动文件后,RViz将在预设的环境下自动运行。

    1
    2
    $ export TURTLEBOT3_MODEL=waffle_pi
    $ roslaunch turtlebot3_automatic_parking_vision turtlebot3_automatic_parking_vision.launch

    TurtleBot3 Automatic Parking Vision

10.10 加载多个TurtleBot3s

注意:此应用程序必须设置固件版本1.2.1或更高。

  1. [远程 PC] 运行 roscore.

    1
    $ roscore
  2. 用不同的命名空间调出多个Turtlebot3。我们建议命名空间包括常见的词语,如tb3_0tb3_1my_robot_0my_robot_1

    • **[TurtleBot(tb3_0)]**调出基本包,ROS NAMESPACE为节点,multi_robot_name为tf前缀,set_lidar_frame_id为激光雷达框架id。这些参数必须是相同的。

      1
      $ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="tb3_0" set_lidar_frame_id:="tb3_0/base_scan"
    • **[TurtleBot(tb3_1)]**调出基本包,ROS NAMESPACE为节点,multi_robot_name为tf前缀,set_lidar_frame_id为激光雷达框架id。这些参数必须是相同的,但不同的其他机器人。

      1
      $ ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="tb3_1" set_lidar_frame_id:="tb3_1/base_scan"
  3. 然后你启动的终端tb3_0将代表以下信息。你可以看到TF信息的前缀是tb3_0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    SUMMARY
    ========

    PARAMETERS
    * /rosdistro: kinetic
    * /rosversion: 1.12.13
    * /tb3_0/turtlebot3_core/baud: 115200
    * /tb3_0/turtlebot3_core/port: /dev/ttyACM0
    * /tb3_0/turtlebot3_core/tf_prefix: tb3_0
    * /tb3_0/turtlebot3_lds/frame_id: tb3_0/base_scan
    * /tb3_0/turtlebot3_lds/port: /dev/ttyUSB0

    NODES
    /tb3_0/
    turtlebot3_core (rosserial_python/serial_node.py)
    turtlebot3_diagnostics (turtlebot3_bringup/turtlebot3_diagnostics)
    turtlebot3_lds (hls_lfcd_lds_driver/hlds_laser_publisher)

    ROS_MASTER_URI=http://192.168.1.2:11311

    process[tb3_0/turtlebot3_core-1]: started with pid [1903]
    process[tb3_0/turtlebot3_lds-2]: started with pid [1904]
    process[tb3_0/turtlebot3_diagnostics-3]: started with pid [1905]
    [INFO] [1531356275.722408]: ROS Serial Python Node
    [INFO] [1531356275.796070]: Connecting to /dev/ttyACM0 at 115200 baud
    [INFO] [1531356278.300310]: Note: publish buffer size is 1024 bytes
    [INFO] [1531356278.303516]: Setup publisher on sensor_state [turtlebot3_msgs/SensorState]
    [INFO] [1531356278.323360]: Setup publisher on version_info [turtlebot3_msgs/VersionInfo]
    [INFO] [1531356278.392212]: Setup publisher on imu [sensor_msgs/Imu]
    [INFO] [1531356278.414980]: Setup publisher on cmd_vel_rc100 [geometry_msgs/Twist]
    [INFO] [1531356278.449703]: Setup publisher on odom [nav_msgs/Odometry]
    [INFO] [1531356278.466352]: Setup publisher on joint_states [sensor_msgs/JointState]
    [INFO] [1531356278.485605]: Setup publisher on battery_state [sensor_msgs/BatteryState]
    [INFO] [1531356278.500973]: Setup publisher on magnetic_field [sensor_msgs/MagneticField]
    [INFO] [1531356280.545840]: Setup publisher on /tf [tf/tfMessage]
    [INFO] [1531356280.582609]: Note: subscribe buffer size is 1024 bytes
    [INFO] [1531356280.584645]: Setup subscriber on cmd_vel [geometry_msgs/Twist]
    [INFO] [1531356280.620330]: Setup subscriber on sound [turtlebot3_msgs/Sound]
    [INFO] [1531356280.649508]: Setup subscriber on motor_power [std_msgs/Bool]
    [INFO] [1531356280.688276]: Setup subscriber on reset [std_msgs/Empty]
    [INFO] [1531356282.022709]: Setup TF on Odometry [tb3_0/odom]
    [INFO] [1531356282.026863]: Setup TF on IMU [tb3_0/imu_link]
    [INFO] [1531356282.030138]: Setup TF on MagneticField [tb3_0/mag_link]
    [INFO] [1531356282.033628]: Setup TF on JointState [tb3_0/base_link]
    [INFO] [1531356282.041117]: --------------------------
    [INFO] [1531356282.044421]: Connected to OpenCR board!
    [INFO] [1531356282.047700]: This core(v1.2.1) is compatible with TB3 Burger
    [INFO] [1531356282.051355]: --------------------------
    [INFO] [1531356282.054785]: Start Calibration of Gyro
    [INFO] [1531356284.585490]: Calibration End
  4. [远程PC]以相同的命名空间启动机器人状态发布器。

    • [TurtleBot(tb3_0)]

      1
      $ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup turtlebot3_remote.launch multi_robot_name:=tb3_0
    • [TurtleBot(tb3_1)]

      1
      $ ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_bringup turtlebot3_remote.launch multi_robot_name:=tb3_1
  5. 在启动另一个应用程序之前,检查主题和TF树以打开rqt。

    1
    $ rqt

    img

为了使用这种设置,每个Turtlebot3使用SLAM制作地图,这些地图由multi_map_merge软件包同步合并。你可以访问Virtual SLAM by Multiple TurtleBot3s部分来获得更多的信息。