turtlebot3 多機器人協作,機器人跟隨

item-機器人跟隨demo

@kdy

代碼地址:

GitHub:https://github.com/kdongyi/turtlebot

碼雲:https://gitee.com/kdongyi/turtlebot3

覺得有用請Star、Fork ^_^


一、item功能:鍵盤控制robot1,robot2根據robot1座標跟隨

  1. 鍵盤控制robot1實現移動
  2. robot1向tf發佈自身姿態數據信息
  3. robot2向tf發佈自身姿態數據信息
  4. robot1與robot2進行tf座標轉換,建立統一座標系
  5. 計算robot1與robot2座標間的距離差與角度差,將該數據發佈
  6. robot2監聽距離差與角度差,並控制自身移動

二、跟隨過程

  • 首先在item_tf.launch文件中建立兩個節點,分別獲取兩個機器人的姿態數據信息(當前位置距離各自座標系原點的位置和角度)

  • 獲取姿態數據信息後,通過tf座標轉換,分別將robot1和robot2的座標變換到map座標系下,向tf發佈各自變換到map座標系後的數據,此時就建立了以map座標系爲基準的統一座標系統

  • 然後在item_tf.launch文件中建立座標監聽節點,監聽robot1和robot2的座標,通過listener.lookupTransform()函數得到以robot2爲原點的robot1的姿態信息(平移和旋轉)

  • 通過平移和旋轉信息計算得到robot2要前往robot1座標點 需要的線速度和角速度

  • 將計算得到的線速度和角速度,將其發佈到控制robot2運動的/robot2/cmd_vel topic上

在這裏插入圖片描述

三、運行方法

  • 啓動ROSCORE
$ roscore
  • 啓動兩個turtlebot3機器人:
$ ROS_NAMESPACE=robot1 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="robot1" set_lidar_frame_id:="robot1/base_scan"
$ ROS_NAMESPACE=robot2 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="robot2" set_lidar_frame_id:="robot2/base_scan"
  • 啓動跟隨launch文件
$ roslaunch item item_tf.launch
  • 啓動robot1鍵盤控制:
$ ROS_NAMESPACE=robot1 rosrun turtlebot3_teleop turtlebot3_teleop_key

  • 同時也可以啓動狀態監視工具:
$ rosrun rqt_graph rqt_graph
$ rqt #調出TF Tree
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章