ROS 用python实现窗体指定位置生成一乌龟

本文详细描述了如何通过ROS编程接口,获取turtlesim的Spawn服务信息,创建服务客户端,发送SpawnRequest请求,在特定位置生成一个新的乌龟。主要包括服务获取、服务请求节点实现和编译运行过程。
摘要由CSDN通过智能技术生成

需求描述:编码实现向 turtlesim 发送请求,在乌龟显示节点的窗体指定位置生成一乌龟,这是一个服务请求操作。

实现分析:

  1. 首先,需要启动乌龟显示节点。
  2. 要通过ROS命令,来获取乌龟生成服务的服务名称以及服务消息类型。
  3. 编写服务请求节点,生成新的乌龟。

实现流程:

  1. 通过ros命令获取服务与服务消息信息。
  2. 编码实现服务请求节点。
  3. 启动 roscore、turtlesim_node 、乌龟生成节点,生成新的乌龟。

服务名称与服务消息获取

简单实现,通过命令的形式调用服务并生成一只小乌龟

服务客户端实现

创建功能包需要依赖的功能包: roscpp rospy std_msgs turtlesim

#! /usr/bin/env python
import rospy
from turtlesim.srv import Spawn,SpawnRequest,SpawnResponse
"""
    需求:向服务器发送请求生成一只乌龟
        话题:/spawn
        消息:turtlesim/Spawn

    1、导包
    2、初始化ROS节点
    3、创建服务的客户端对象
    4、组织数据并发送请求
    5、处理响应结果
"""

if __name__=="__main__":
    #2、初始化ROS节点
    rospy.init_node("service_call_p")
    #3、创建服务的客户端对象
    client=rospy.ServiceProxy("/spawn",Spawn)
    #4、组织数据并发送请求
    request = SpawnRequest()
    request.x=4.5
    request.y=2.0
    request.theta=-3
    request.name="turtle3"
    #4-2 判断服务器状态并发送
    client.wait_for_service()#客户端等待服务,若服务端没有启动则挂起
    try:
        response=client.call(request)
        #5、处理响应结果
        rospy.loginfo("生成乌龟的名字叫:%s",response.name)
    except Exception as e:
        rospy.logerr("请求处理异常")

修改scripts权限

修改CMakeLists.txt文件

编译运行

结果显示

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值