ROS-Python

2023-05-16

用python来编写ros话题、服务方面常用的几个点:

话题topic

1、初始化节点

rospy.init_node("节点名字")
举例:rospy . init_node("test",anonymous = True )
anonymous=True,表示后面定义相同的node名字时候,按照序号进行排列.
2、定义一个发布者
pub = rospy.Publisher(话题名称,话题数据类型,话题数据队列大小)
举例: vel_pub = rospy . Publisher ( '/cmd_vel' , Twist , queue_size = 8 )
3、定义一个订阅者
rospy.Subscriber(话题名称,话题数据类型,回调函数名称)

举例:rospy.Subscriber('/cmd_vel', Twist, velCallback) 

4、 设置循环频率以及按照循环频率延时

rate = rospy.Rate(频率大小)
rate.sleep()

举例:rate = rospy.Rate(50)

以50Hz的频率发布消息

5、发布消息

发布者对象.publish(消息数据)

举例:vel_pub.publish(vel_msg),这里的msg要与发布者规定的一致。

6、判断节点是否关闭

 rospy.is_shutdown()

常用在循环里边,节点开启,进入循环,节点关闭,退出循环。 

7、导入自定义的msg/srv文件

from PackageName.msg import Defmsg

举例:功能包名字是School_Information,自定义的msg文件是Student且放在School_Information功能包的msg文件夹下,则导入Student类型的msg文件时候,可以写

from School_Information.msg import Student

服务service

1、服务消息

服务消息由请求数据和应答数据组成,请求数据可以理解成函数输入参数,应答数据可以理解成

函数的返回值。需要注意的是,请求数据与应答数据之间,用---间隔开来

举例,定义一个服务数据,请求数据为两个整型数据,应答数据也是一个整数据,

int32 requets_a
int32 request_b
---
int response_c

2、定义一个服务端

def_service = rospy.Service("服务的名字",服务数据类型,服务函数名称)

举例,定义一个服务,名字是Add_int,服务数据类型是Two_Int,服务内容函数名字是Add_proc是把两个请求数据相加后返回它们的和,

s = rospy.Service("Add_int",Two_Int,Add_proc)
def Add_proc(req):
    result = req.request_a + req.request_b;
    return Two_IntRespone(result)

这里的服务函数参数名字必须是req,在调用了该服务时候,会把参数赋值给req.

3、引用请求服务的数据

req.定义服务消息的请求数据的名字

举例,我们定义了一个服务消息类型数据,其中,服务数据的变量名字是request_a,那么再调用这个服务请求数据的时候,就是,

req.request_a

4、返回服务函数服务结果

return 服务数据类型Responese(返回的具体内容)

返回时候需要指定服务数据的类型名字,也就是自定义的服务类型数据的名字,返回的具体内容就是期望返回的数据,这里的数据类型需要与定义服务数据时候定义的应答数据类型一致。举例,

result = req.a + req.b
return Two_IntResponse(result)

5、等待服务

rospy.wait_for_service("服务名称")

举例,

rospy.wait_for_service("Add_int")

 6、创建一个客户端

client = rospy.ServiceProxy("服务名称",服务数据类型)

在创建客户端时,我们需要说明我们需要请求的服务是什么,也就是服务名称,以及我们的服务数据类型,举例,

c = rospy.ServiceProxy("Add_int",Two_int)

7、客户端调用服务

使用函数call,会返回应答数据response,这是是指定的名字,

response = 客户端.call(服务请求数据)

举例,

response = c.call(100,200)

把请求数据发到服务端后作为函数参数传入服务函数,服务端就会计算出应答数据,并且返回,赋值给response,这是个关键词,并不是一个变量的名字

8、调用服务返回的应答数据

respone.服务数据中的应答数据的变量名字

举例,

response.response_c

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS-Python 的相关文章

随机推荐

  • 大陆毫米波雷达ARS408-21xx(内附毫米波雷达使用说明书)使用记录:第一期

    文章目录 前言一 硬件链接二 代码如何使用三 大陆毫米波雷达ARS408 21XX解析代码说明总结 前言 从我个人的学习成长历程来看 xff0c 从0到1确实很难 我个人在对这款毫米波雷达的学习的过程中也比较痛苦 xff0c 资料缺乏 xf
  • 2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~

    前言 昨晚逛了逛GitHub xff0c 无意中看到一位P8大佬的算法刷题笔记 xff0c 感觉发现了宝藏 xff01 有些小伙伴可能已经发现了 xff0c 但咱这里还是忍不住安利一波 xff0c 怕有些小伙伴没有看到 关于算法刷题的困惑和
  • LIO-SAM学习与运行测试数据集

    文章目录 0 说明0 1 环境配置说明0 2 LIO SAM0 3 系统架构0 4 LIO SAM youtube视频演示 xff1a Rotation Dataset Walking Dataset Park Dataset Campus
  • 理解ROS:参数服务器和动态参数

    文章目录 1 程序中的getparam与param1 1 getparam xff08 无默认值 xff09 1 2 param xff08 有默认值 xff09 1 3 删除参数1 4 程序中设置参数1 5 检查参数1 6 搜索参数 2
  • ROS理解:ros中的坐标以及对tf2进行解读

    文章目录 1 ROS中的坐标2 tf到tf2的变化3 发布静态tf24 发布动态tf25 监听tf26 增加自己的frame 官网就是最好的教程 xff0c 如果阅读英文没什么压力 xff0c 强烈推荐以下链接进行全面了解 xff1a 官网
  • gtsam:从入门到使用

    文章目录 一 总览二 贝叶斯网络和因子图三 机器人运动建模3 1 使用因子图建模3 2 建立因子图3 3 因子图与变量3 4 GTSAM中的非线性优化3 5 全后验推论 四 机器人定位4 1 一元测量因子4 2 自定义因子4 3 使用自定义
  • 马尔可夫链、隐马尔科夫模型、贝叶斯网络、因子图

    文章目录 一 马尔可夫链以及隐马尔可夫模型1 1 概念1 2 举例说明隐马尔可夫模型 二 贝叶斯网络三 因子图 贝叶斯网络是很多概率模型的基础 xff0c 对于slam研究也是一项必须掌握的数学理论工具 一 马尔可夫链以及隐马尔可夫模型 1
  • 3D打印机DIY之一------Prusa i3的材料清单和总体结构组装

    自己使用铝件和亚克力板组装了一台Prusa i3 3D打印机 xff0c 现在把详细的过程记录下来 总体效果图 xff1a 一 材料清单 元件数量总价2020欧式铝方管 xff1a 4根400mm 3根340mm 1根150mm 1根130
  • 位置式PID与增量式PID的介绍和代码实现

    PID分为位置式PID与增量式PID 一 位置式PID 1 表达式为 xff1a 2 缺点 xff1a 1 xff09 由于全量输出 xff0c 所以每次输出均与过去状态有关 xff0c 计算时要对ek进行累加 xff0c 工作量大 xff
  • 常见蓝牙模块介绍和AT指令

    目录 一 HC 05主从一体蓝牙模块 二 HC 06从机蓝牙模块 三 低功耗BLE蓝牙4 0模块 cc2540或cc2541 四 JDY 10 蓝牙4 0 BLE模块 五 蓝牙模块LAYOUT注意事项 xff1a 常见的蓝牙模块为 xff1
  • PID参数调节总结

    原文链接 xff1a 点击打开链接 经验 xff1a 1 采样频率低 xff08 如500ms xff09 xff0c Kp一般是0 01级别 xff1b 采样频率高 xff08 如1ms xff09 xff0c Kp一般是1级别 2 先只
  • 为Keil添加注释的快捷键

    Keil刚装上是没有注释快捷键的 xff0c 可以自己添加 xff0c Edit Configuration xff0c 然后选择 Shortcut Keys 标签页 xff0c 下拉找到 Comment Selection xff0c 然
  • C语言__attribute__的使用

    一 介绍 GNU C 的一大特色就是 attribute 机制 attribute 可以设置函数属性 xff08 Function Attribute xff09 变量属性 xff08 Variable Attribute xff09 和类
  • ros(30):while(ros::ok()){}理解与使用示例

    while ros ok 理解 while ros ok 是ros的一种循环模式 xff0c 和ros Rate loop rate ros spinOnce 等结合可以控制程序的执行顺序 ros Rate loop rate 10 设置循
  • Jetson TX2更换软件源

    TX2的软件源为国外服务器 xff0c 网速会很慢 xff0c 需要换国内的ARM源 备份 etc lib路径下的source list文件 xff0c 然后在终端 xff08 按ctrl 43 alt 43 T打开 xff09 执行以下命
  • 使用Dockerfile创建镜像

    Dockerfile是一个文本格式的配置文件 xff0c 可以使用Dockerfile来快速创建自定义的镜像 一 基本结构 Dockerfile由一行行命令语句组成 xff0c 并且支持以 开头的注释行 一般而言 xff0c Dockerf
  • 高质量嵌入式Linux C编程 第二章 数据 学习笔记

    一 什么是数据类型 xff1f 数据类型包含两方面的内容 xff0c 数据的表示和对数据加工的操作 数据的全部可能表示构成数据类型的值的集合 xff0c 数据全部合理的操作构成数据类型的操作集合 二 什么是变量 xff1f 其值在作用域内可
  • 高质量嵌入式Linux C编程 第三章 运算符、表达式学习

    一 运算符有哪几类 xff1f xff08 1 xff09 算数运算符 xff1a 43 43 43 七种 xff08 2 xff09 关系运算符 xff1a gt lt 61 61 gt 61 lt 61 xff01 61 六种 xff0
  • 设计一种可全向移动的球形机器人

    一 前言 之前在网上看到一种球形机器人 xff0c 觉得很有趣 xff0c 而且原理也比较简单 xff0c 大概就是把一辆小车放在一个透明的亚克力球中 xff0c 控制小车使球体滚动 xff0c 姿态控制算法与平衡小车类似 xff0c 然后
  • ROS-Python

    用python来编写ros话题 服务方面常用的几个点 xff1a 话题topic 1 初始化节点 rospy init node 34 节点名字 34 举例 xff1a rospy init node 34 test 34 anonymou