ROS仿真笔记之——基于gazebo的ROS多机器人仿真

之前一直想用gazebo来做多机器人的ROS仿真。然后看了gazebo教程,gazebo+ROS的教程。但是感觉教程异常的多,重点不突出。最终就是看完了,好像也看懂了但是却还是不懂怎么在gazebo里面仿真ROS多机器人。只知道添加一个ROS插件到多个机器人里面,可能要修改机器人的URDF文件。

但是其实之前博文《 ROS学习笔记之——移动机器人的导航》本人已经实现了单ROS机器人的gazebo仿真。

通过运行(roslaunch turtlebot3_gazebo turtlebot3_world.launch)就可以开启具备ROS通信功能的gazebo环境。那么实际上,不就是只需要在对应的launch文件修改成多个机器人(由一个变成多个)就可以实现gazebo多机器人ROS仿真了嘛hhhh

打开turtlebot3_gazebo/launch里面的turtlebot3_world. launch文件如下

ROS仿真笔记之——基于gazebo的ROS多机器人仿真_第1张图片

好了,问题来了。。。。里面本身就已经有multi robot 的launch文件了hhh(但是这里先不管,后面会写博客介绍)先直接修改turtlebot3_world.launch文件(为了避免丢失原来的文件,先复制然后重命名为m_turtlebot3_world.launch)


  
  
  
  

  
    
    
    
    
    
    
  

  

  

修改如下


  

  
  
  


  
  
  

  
  
  

  
  
  



  
    
    
    
    
    
    
  




  
    

     
  




  
     

     
  




  
    

     
  



如果继续添加多个机器人,可参考上面进行更改(代码结构较简单),主要更改的地方是前面的这里定义一个turtlebot3的名字还有他的初始位置,最后面那里仿制我的写法就可以了;然后中间载入世界地图那里,可以根据需要自己在gazebo里面建好一个地图然后把它放入 ../turtlebot3_simulations/turtlebot3_gazebo/world 文件夹里面,再更改上面的的路径就可以了

编译一下

cd ~/catkin_ws && catkin_make

运行下面命令

export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_gazebo m_turtlebot3_world.launch

ROS仿真笔记之——基于gazebo的ROS多机器人仿真_第2张图片

关于多个机器人的键盘控制。打开新终端,分别键入下面命令,就可以分别控制几个机器人

ROS_NAMESPACE=tb3_0 rosrun turtlebot3_teleop turtlebot3_teleop_key
ROS_NAMESPACE=tb3_1 rosrun turtlebot3_teleop turtlebot3_teleop_key
ROS_NAMESPACE=tb3_2 rosrun turtlebot3_teleop turtlebot3_teleop_key

而如果一个键盘控制多个机器人。由于这三个机器人分别定义在不同的ROS namespace中。为此最简单的方法是让发布器同时发布三个话题这三个话题是需要对应这三个namespace的topic的

则应该是在文件(/home/kwanwaipang/catkin_ws/src/turtlebot3/turtlebot3_teleop/nodes/turtlebot3_teleop_key)中,

修改如下

pub = rospy.Publisher('cmd_vel', Twist, queue_size=10)
pub0 = rospy.Publisher('/tb3_0/cmd_vel', Twist, queue_size=10)
pub1 = rospy.Publisher('/tb3_1/cmd_vel', Twist, queue_size=10)
pub2 = rospy.Publisher('/tb3_2/cmd_vel', Twist, queue_size=10)


pub.publish(twist)
pub0.publish(twist)
pub1.publish(twist)
pub2.publish(twist)

即可以实现一个键盘同时控制多个ROS机器人运动。

 

 

 

你可能感兴趣的:(ROS,移动机器人)