ROS-Python

这篇具有很好参考价值的文章主要介绍了ROS-Python。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用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.服务数据中的应答数据的变量名字

举例,文章来源地址https://www.toymoban.com/news/detail-599033.html

response.response_c

到了这里,关于ROS-Python的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人操作系统ROS(11)Turtlebot3自动避障及其地图构建和导航

    该节需要完成前面一节内容实现turtlebot3正常创建新地图,才可以实现本节的自动避障和导航 启动虚拟机器人有环境的仿真 键盘控制 打开新端口 3. 自动避障 打开新端口 4. 调用rviz 注意:可以通过修改size来变化激光扫描边缘的粗细 之前已经启动无需再起世界地图 启动好后可

    2024年02月02日
    浏览(30)
  • 高翔:《自动驾驶与机器人中的SLAM技术 》-Slam_in_autonomous_driving 编译过程中遇到的问题

    使用的环境是ubuntu20.04 问题1.安装g2o没有问题,不过在编译整个项目工程时候报错: ”openmp_mutex.h: 30:10: fatal error: g2o/config.h: No such file or directory“: 解决办法: 问题2. No rule to make target ’gmock’,needed by \\\'../bin/test_preintegration\\\' . stop src/ch4/CMakeFiles/test_preintegration.dir/all] Error 2:

    2024年02月03日
    浏览(32)
  • ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目

    💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 ROS 2是机器人开发领域中广泛使用的一个框架,ROS 2提供了很多功能强大的工具和

    2024年02月02日
    浏览(40)
  • Python和Pygame绘制自动驾驶和移动机器本地规划器算法

    可视化自动驾驶车辆路径规划和移动机器人中使用的众多不同的本地规划器算法。 该应用程序提供可定制的参数,以更好地了解每种算法的内部工作原理并探索它们的优点和缺点。 它是用 Python 编写的,并使用 Pygame 来渲染可视化。 基类 概率路线图 快速探索随机树 势场 迪

    2024年02月02日
    浏览(32)
  • 无人驾驶系统设计--RoboMaster哨兵机器人

    河北科技大学机器人战队ActorThinker RM2023哨兵导航部分代码 本项目基于ros-noetic 学习时间很短加之本人水平有限,请各位大佬发现问题不吝赐教 有批评问题欢迎各位佬联系QQ:2782760102 user_package软件包下的package.xml,为了不让各位使用它报错,建议删除他或者是删除整个user_pa

    2024年04月27日
    浏览(32)
  • python之钉钉机器人自动发消息——傻瓜式教程

    钉钉、飞书、企业微信在各大企业中算是排得上大号的即时通讯贩子了。 身为一个菜鸡,自然会玩的比较花,这不,N年前,我老大就有个需求。 自动化跑完的结果,需要自动发送到钉钉群,自动将数据、报告、截图等保存至公司内部服务器,钉钉通知的时候,需要有个链接

    2023年04月08日
    浏览(25)
  • 小机器人在现实世界中学会快速驾驶

    小机器人在现实世界中学会快速驾驶 —强化学习加上预训练让机器人赛车手加速前进— Without a lifetime of experience to build on like humans have (and totally take for granted), robots that want to learn a new skill often have to start from scratch. Reinforcement learning lets robots learn new skills through trial and error bu

    2024年02月16日
    浏览(30)
  • python+selenium+docker+飞书机器人部署自动预约程序

    笔者最近需要重复使用一个预约程序,就想实现自动化预约,本以为是一个简单的项目,但从编写到部署还是兜兜转转了好久,写文章记录一下,也分享一下遇到的问题方便读者更快的搭建 selenium是一个web模拟应用,可以模仿用户在浏览器中的行为 在一开始测试的时候,是在

    2023年04月19日
    浏览(43)
  • Python实现企业微信群机器人自动化推送

    人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 ——《百度百科》 实际工作中,有类似这样的场景, 需要将某些通知信息定期发送到企业微信群,需要将公司某些指标的异

    2024年02月09日
    浏览(47)
  • ROS:机器人系统仿真

    通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。 仿真在机器人系统研发过程中占有举足轻重的地位,在研发与测试中较之于实体机器人实现,仿真有如下几点的

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包