ROS2 在GAZEBO实时生成多个机器人

GAZEBO 插件

用ROS2 的 python脚本在GAZEBO中生成机器人,需要用到GAZEBO的系统插件,打开一个命令窗口,输入:

gazebo --verbose -s libgazebo_ros_factory.so

在另一个命令窗口,用下面的命令查看服务

ros2 service list

在最下面,我们可以看到一个 /spawn_entity 服务,只需要将ROS2的客户端和这个服务相连,就能生成机器人,接下来先用命令行简单生成一个机器人。

使用ROS2 命令行生成一个机器人

ros2 service call /spawn_entity 'gazebo_msgs/SpawnEntity' '{name: "sdf_ball", xml: "<?xml version=\"1.0\" ?><sdf version=\"1.5\"><model name=\"will_be_ignored\"><static>true</static><link name=\"link\"><visual name=\"visual\"><geometry><sphere><radius>1.0</radius></sphere></geometry></visual></link></model></sdf>"}'

命令解析

ros2 service call <服务的名字> <服务的消息类型> <具体的服务内容>
ros2 通过命令行向服务发送请求,GAZEBO 将会在接受请求并相应生成机器人。

使用ROS2 脚本生成多个机器人

进入工作空间,创建一个包(具体创建过程省略,可以参考 http://docs.ros.org/en/rolling/ ),编写脚本。

import os
import sys
import rclpy
import time
from ament_index_python.packages import get_package_share_directory
from gazebo_msgs.srv import SpawnEntity

def main():
    """ Main for spwaning turtlebot node """
    # Get input arguments from user
    

    # Start node
    rclpy.init()
   
    node = rclpy.create_node("entity_spawner")

    node.get_logger().info(
        'Creating Service client to connect to `/spawn_entity`')
    client = node.create_client(SpawnEntity, "/spawn_entity")

    node.get_logger().info("Connecting to `/spawn_entity` service...")
    if not client.service_is_ready():
        client
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值