• 03软件(softwares)
  • ROBOTIS相关软件
  • DYNAMIXEL-Protocol-1
  • DYNAMIXEL-Protocol-2
  • Dynamixel-wizard2
  • Robotis-Manipulator库
  • 04单片机欧宝体育娱乐app官
  • 02-OpenRB-150欧宝体育娱乐app官
  • OpenCM9.04欧宝体育娱乐app官
  • 01_OpenCM9-04欧宝体育娱乐app官介绍
  • 02_OpenCM9-04硬件介绍
  • 03_OpenCM9-04供电方式
  • 04-OpenCM9-04软件安装
  • 05-如何安装windows驱动
  • 06-OpenCM9-04的Recovery模式
  • 05资料下载
  • ROBOTIS产品相关下载
  • ROBOTIS产品相关软件
  • ROBOTIS相关产品图纸下载
  • 07-TurtleBot3-ROS机器人
  • 01-概览
  • 01-1-TurtleBot3概述
  • 01-2-TurtleBot3纪事
  • 02-产品特征
  • 03-快速入门
  • 03-1-PC设置
  • 03-2-SBC设置
  • 03-3-OpenCR设置
  • 03-4-硬件装配
  • 03-5-启动
  • 03-6-基本操作
  • 04-SLAM
  • 05-Navigation导航
  • 06-Simulation模拟仿真
  • 06-1-Gazebo仿真
  • 06-2-SLAM仿真
  • 06-3-Navigation仿真
  • 06-4-Fake节点仿真
  • 06-5-独立运行Gazebo仿真
  • 07-机械手
  • 07-1-TurtleBot3机械手基本操作
  • 07-2-TurtleBot3家庭服务挑战
  • 08-自动驾驶
  • 08-1-自动驾驶基本操作
  • 08-2-TurtleBot3自动驾驶挑战赛2019
  • 09-机器学习
  • 10-Examples范例
  • 11-其他拓展样例
  • 12-其他学习资料
  • 13-更多相关资源
  • 14-FAQ常见问题
  • 07-2-TurtleBot3家庭服务挑战

    小芽科技 2022-07-26 11:58:28
    Categories: Tags:

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

    7.10 TurtleBot3家庭服务挑战

  • 注意

  • 本说明在Ubuntu 16.04ROS Kinetic Kame上测试。
  • 更多信息,请参阅OpenMANIPULATOR e-Manual和[ROS 1] Turtlebot3 Manipulation
  • img

    家庭服务挑战赛场和对象

    bad asset path...

    7.10.1 入门指南

  • 注意。在PC中安装家庭服务挑战包之前,请务必完成以下说明。
  • TurtleBot3电脑设置
  • TurtleBot3 SBC设置
  • OpenMANIPULATOR-X软件包
  • 先决条件

    1
    TurtleBot3 Waffle Pi
  • 它是使用家庭服务挑战包进行移动复制的基本模式。
  • 提供的源代码,家庭服务挑战包,是基于TurtleBot3 Waffle Pi制作的。
  • 1
    OpenMANIPULATOR-X
  • OpenMANIPULATOR-X是一个官方机器人平台,可以在家庭服务挑战赛中与Turtlebot3一起使用移动复制功能。
  • 1
    Remote PC
  • 它与Turtlebot3上的单板计算机(SBC)进行通信。
  • 笔记本电脑、台式机或其他带有 ROS 1 的设备。
  • 远程 PC 设置

    1. [远程PC] 安装 Home Service Challenge 软件包.

      1
      2
      3
      $ cd ~/catkin_ws/src/
      $ git clone -b kinetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_home_service_challenge.git
      $ cd ~/catkin_ws && catkin_make
    2. [远程PC] 在远程电脑上安装额外的依赖包

      1
      $ sudo apt-get install ros-kinetic-ar-track-alvar ros-kinetic-ar-track-alvar-msgs
    3. [远程PC] 在RViz上用OpenMANIPULATOR加载TurtleBot3 Waffle(或Waffle Pi)。

      1
      2
      $ export TURTLEBOT3_MODEL=${TB3_MODEL}
      $ roslaunch turtlebot3_manipulation_description turtlebot3_manipulation_view.launch use_gui:=true

      注意: 在执行命令前,指定${TB3_MODEL}wafflewaffle_pi。按照Export TURTLEBOT3_MODEL指令设置永久导出设置。

      turtlebot3_manipulation_view

      Rviz 界面

    4. [远程PC] 为了远程使用你的电脑,你需要制作SSH密钥。创建一个脚本文件来生成SSH密钥。

    1
    $ nano ~/tb3_ssh_keygen
    1. [远程PC] 复制并粘贴以下内容到脚本中,并保存。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      #!/bin/bash
      argc=$#
      args=("$@")
      if [ 0 -eq $argc ]
      then
      echo "need to argument that host ip for ssh connection"
      echo "Usage: $0 [ip address] ..."
      exit 1
      fi
      for((index = 0; index < $#; index++ ))
      do
      ssh-keygen -R ${args[$index]}
      ssh-keyscan ${args[$index]} >> ~/.ssh/known_hosts
      done
    2. [远程PC] 使文件可执行。

      1
      $ chmod +x ~/tb3_ssh_keygen
    3. [远程PC]用TurtleBot3的IP地址执行该文件。确保远程电脑TurtleBot3连接在**同一WiFi下。

      1
      $ ~/tb3_ssh_keygen {IP_ADDRESS_OF_TURTLEBOT3}
    4. 检查~/.ssh/known_hosts文件是否成功生成了SSH。

      known_hosts

    SBC 设置

    1. [Turtlebot3 SBC] 使用机器标签,创建位于/home/pi的env.bash文件。

      1
      $ nano ~/env.bash
    2. [Turtlebot3 SBC] 复制并粘贴以下内容到脚本中,并保存。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      #!/bin/bash
      # check if other turtlebot3_core is already running
      is_running=`ps ax | grep turtlebot3_core`
      IFS=' ' read -ra is_runnings <<< "$is_running"
      process_name=${is_runnings[4]}
      if [ ${process_name} == "python" ]
      then
      echo "other turtlebot3_core is already running."
      exit 1
      fi
      #### ROS ####
      source /opt/ros/kinetic/setup.bash
      source ~/catkin_ws/devel/setup.bash
      #### ROS Network ####
      ip_address=`hostname -I`
      ip_address_trim=${ip_address%% * }
      ip_address_no_space="$(echo -e "${ip_address_trim}" | tr -d '[:space:]')"
      export ROS_HOSTNAME=${ip_address_no_space}
      ##### Set TURTLEBOT3 Model ####
      export TURTLEBOT3_MODEL=waffle_pi
      exec "$@"
    3. 使文件可执行。

      1
      $ chmod +x ~/env.bash

    OpenCR 设置

  • 请参阅 OpenCR Setup
  • Hardware 设置

  • 请参阅 Hardware Setup
  • 7.10.2 Camera 标定

    校准相机以减少或尽量减少失真。按照相机校准过程一步步进行。

    Camera 设置

    1. [远程PC] 使用以下命令来远程运行摄像机。请确保输入TurtleBot3和远程PC连接在一起的IP地址。
      请确保远程电脑和TurtleBot3连接在同一个IP下。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools turtlebot3_pi_cam_remote.launch address:=TURTLEBOT_IP
    2. [远程PC] 执行rqt_image_view。

      1
      $ rqt_image_view
    3. 在复选框上选择**/raspicam_node/image/compressed(或/raspicam_node/image/**)主题。

      camera view

    4. [远程计算机] 执行rqt_reconfigure。

      1
      $ rosrun rqt_reconfigure rqt_reconfigure
    5. 点击raspicam_node,并修改参数值以看到摄像机的清晰图像。

      camera setting

    6. 打开位于turtlebot3_home_service_challenge_tools/config/camera_calibration的camera.yaml**文件。

    7. 将修改后的值写入文件。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      ISO: 400
      awb_mode: auto
      brightness: 50
      contrast: 0
      exposureCompensation: 0
      exposure_mode: auto
      hFlip: false
      saturation: 0
      sharpness: 0
      shutterSpeed: 0
      vFlip: false
      videoStabilisation: false
      zoom: 1.0

    摄像头内参标定

  • 在A4大小的纸上打印一个棋盘。该棋盘用于本征相机校准。

  • ROS Wiki下载一个棋盘。

  • 关于相机校准的详细信息,请参阅ROS Wiki的camera_calibration

  • checkerboard

    格子板

    1. [远程PC] 使用以下命令来远程运行摄像机。使用该命令时,请务必包括IP地址。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools turtlebot3_pi_cam_remote.launch enable_raw:=true address:=TURTLEBOT_IP

      注意。请确保远程电脑TurtleBot3连接在同一IP下。

    2. [远程PC] 运行相机内参校准

      1
      $ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/raspicam_node/image camera:=/raspicam_node

      注意。正方形的大小可能因打印纸的尺寸A3、A4或其他而不同。在这种情况下,**根据打印纸的方形尺寸,调整给定命令中-square选项的值(0.024)。

      calibration display

    3. 使用格子板来校准相机,并点击CALIBRATE

      注意。将棋盘向左、右、上、下和各种角度移动和倾斜,以获得XYSizeSkew校准数据。当数据被充分计算后,X,Y,SizeSkew将有一个绿色条。

      calibraion

    4. 点击Commit,将本征校准数据保存到默认文件夹(~/.ros/camera_info)。

      commit

    5. 打开位于**~/.ros/camera_info**的camerav2_1280x720.yaml文件,从Turtlebot SBC中查看保存的数据,其形式如下面的脚本。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      image_width: 1280
      image_height: 720
      camera_name: camerav2_1280x720
      camera_matrix:
      rows: 3
      cols: 3
      data: [1280.628466572832, 0, 658.384219880362, 0, 1277.989132765768, 360.8363923435625, 0, 0, 1]
      distortion_model: plumb_bob
      distortion_coefficients:
      rows: 1
      cols: 5
      data: [0.2032697817127332, -0.4147569733010375, -0.001420915782245743, 0.003110652248245379, 0]
      rectification_matrix:
      rows: 3
      cols: 3
      data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
      projection_matrix:
      rows: 3
      cols: 4
      data: [1312.630981445312, 0, 661.4149459665205, 0, 0, 1312.107055664062, 360.0239481801327, 0, 0, 0, 1, 0]

    7.10.3 SLAM

    SLAM是指同步定位和绘图。利用这一功能,TurtleBot3可以绘制地图。更多相关信息,见SLAM

    1. [远程PC] 使用以下命令来远程运行摄像机。使用该命令时,请务必包括IP地址。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools turtlebot3_robot_remote.launch address:=TURTLEBOT_IP

      注意。请确保远程电脑TurtleBot3连接在同一IP下。

    2. [远程 PC] 运行 slam 节点。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools slam.launch
    3. [远程PC] 运行键盘远程操作节点。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools mobile_teleop_key.launch

      节点运行后,以下控制器将显示在终端窗口。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      Control Your TurtleBot3!
      ---------------------------
      Moving around:
      w
      a s d
      x

      w/x : increase/decrease linear velocity
      a/d : increase/decrease angular velocity
      space key, s : force stop

      CTRL-C to quit
    4. 用键盘控制器更新一个地图。

      making_map

    5. [远程PC]在地图完全更新后保存。

      1
      $ ROS_NAMESPACE=tb3_hsc rosrun map_server map_saver -f tb3_hsc

      map

    7.10.4 任务

    1. [远程PC] 运行演示包。在使用该命令时,请确保包括IP地址。这个软件包包含各种功能。带机器标签的远程调出,Moveit,导航,相机感应。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools turtlebot3_home_service_challenge_demo_remote.launch address:=TURTLEBOT_IP

      注意。请确保远程电脑TurtleBot3连接在同一IP下。

      demo_01

    2. [远程PC] 运行用于执行家庭服务挑战赛任务的经理包。

      1
      $ roslaunch turtlebot3_home_service_challenge_manager manager.launch

    指令

    **[远程PC]**在家庭服务挑战期间使用以下命令。

  • Ready:TurtleBot3将准备开始一项任务。

    1
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String ready_mission
  • Start:TurtleBot3将开始一个任务。

    1
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String start_mission
  • Stop : TurtleBot3将停止运行一个任务。

    1
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String stop_mission
  • Restart:TurtleBot3将按给定的方案重新启动任务。

    1
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String restart_mission:SCENARIO_NAME

    注意。当使用这个命令时,请确保包括一个scenario.yaml文件中的senario名称。关于情景的详细信息,请参见本节下面的配置描述。

  • 操作测试

    **[远程PC]**发布以下主题,以测试一个导航或操作功能。

  • Navigation 导航

    1
    2
    3
    4
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String nav_start
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String nav_ar_marker_0
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String nav_ar_marker_1
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String nav_ar_marker_2
  • Manipulation 机械手操作

    1
    2
    3
    4
    5
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String arm_home
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String arm_joint
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String arm_task
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String open_gripper
    $ rostopic pub -1 /tb3_hsc/command std_msgs/String close_gripper
  • 配置

    **[远程PC]**根据给定环境修改配置文件中的数据。

  • scenario.yaml:该文件包含一个场景的数据。

  • 文件路径 : /turtlebot3_home_service_challenge_manager/script/scenario.yaml

  • 脚本

  • 1
    2
    3
    4
    5
    6
    7
    SCENARIO_NAME: # start - scenario - finish
    task: TASK_NAME
    args: [0, 1, 2]
    timeout: 10 #sec, 0 : no time out
    next_scenario: find_object
    scenario_on_failure: standby
    retry_times: 0 #times, 0 : no retry
  • room.yaml:该文件包含家庭服务挑战赛的场馆数据。

  • 文件路径 : /turtlebot3_home_service_challenge_manager/config/room.yaml

  • 脚本

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    room_1:
    name: toilet
    object:
    marker: ar_marker_0
    position: [0.25, 0, 0.15]
    target:
    marker: ar_marker_4
    position: [0.25, 0, 0.15]
    x: [1.5, 0.6]
    y: [1.5, 0.2]
  • config.yaml:这个配置文件包含经理包的数据。

  • 文件路径。**/turtlebot3_home_service_challenge_manager/config/config.yaml**
  • 关于家庭服务任务的细节

    家庭服务挑战赛的目标是按照给定的规则将四个不同的物体从客厅移动到一个特定的地方,并返回到起点。

    使用演示包,《Home Service Challenge》中移动物体的过程如下:

    1. 在客厅里导航到一个目标。
  • 找到一个目标,并使用导航包到达该目标。
  • demo_02

    1. 接近目标。
  • 为了精确地接近目标,TurtleBot3的轮子是通过计算AR标记的目标位置直接控制的。(使用的主题:/tb3_hsc/cmd_vel)。为了产生可靠的性能,闭环和控制系统可用于指定次数。
  • demo_03

    1. 用OpenMANIPULATOR-X的夹持器挑选目标。
  • 使用moveit软件包(关节空间控制、任务空间控制和抓手控制)挑选目标对象。
  • manipulation_diagram

    MoveIt 流程图

    demo_04

    使用MoveIt 软件包抓取物体

    1. 离开到下一个房间放置物体(使用的主题:/tb3_hsc/cmd_vel)。

    2. 当从目标处往回走时,车轮直接由经理程序使用/tb3_hsc/cmd_vel主题控制。
    3. 导航到将放置物体的地方。

    4. 寻找下一个目标,并使用导航包到达它。
    5. demo_05

    6. 接近目标。

    7. 使用抓手放置物体。

    8. 使用导航包返回到起始点。

      demo_06

    7.10.5 模拟仿真

    在Gazebo做TurtleBot3 使用 OpenMANIPULATOR-X 抓取物体。

    1. [远程 PC] 运行 Gazebo.

      1
      $ roslaunch turtlebot3_home_service_challenge_simulation competition.launch

      gazebo

    2. [远程 PC] 在 Gazebo 中运行一个仿真样例。

      1
      $ roslaunch turtlebot3_home_service_challenge_tools turtlebot3_home_service_challenge_demo_simulation.launch

      simulation_rviz

    3. [远程 PC] 运行家庭服务管理器

      1
      $ roslaunch turtlebot3_home_service_challenge_manager manager.launch
    4. 使用家庭服务挑战命令,见命令

    08-1-自动驾驶基本操作
    07-1-TurtleBot3机械手基本操作