0
点赞
收藏
分享

微信扫一扫

[Python][ROS] 服务器的运作

凯约 2022-03-11 阅读 59

[Python] 服务器的运作

在这篇文章中,您将了解另一种可用于跨ROS网络传输数据/信息和调用操作的通信方法:ROS服务。您将了解如何将ROS服务与您已经了解的标准发布者/订阅者原则结合使用,以便更有效地控制机器人进行某些操作。

本课程结束时,您将能够:
1.认识到ROS服务与标准的基于主题的发布者-订阅者方法有何不同,并确定此类消息传递系统的适当用例。
2.实现Python节点对以执行服务并观察它们的工作方式。
3.将相同的原则应用于许多不同的服务消息类型。
4.开发自己的Python服务节点来执行特定的机器人任务。
5.利用服务,结合激光雷达数据,实现一些基本的避障。
6.通过开发一个包含本课程和本课程前几部分内容的Python节点,展示您对ROS的理解。

在ROS节点之间传递数据的另一种方法是使用服务。这些消息不同于消息,因为“服务调用”(即请求服务的过程)只在一个节点和另一个节点之间发生:
一个节点(服务客户端)向另一个节点发送请求。
另一个节点(服务服务器)处理该请求,执行操作,然后返回响应。

因此,服务是同步的:当ROS节点向服务(作为服务客户端)发送请求时,在服务完成且服务服务器返回响应之前,它无法执行任何其他操作。这对于许多不同的场景都很有用

离散的、短期的行动
机器人可能需要先做一些事情,然后才能移动到其他地方,也就是说,它需要先看到一些东西,然后才能向它移动。
高清摄像头会产生大量数据并消耗电池电量,因此您可能希望将摄像头打开一段特定时间(例如,直到拍摄到图像),然后再次关闭。
请记住,ROS是基于网络的,因此您可能希望将一些计算转移到远程计算机或机器人上的其他设备上,例如:客户机可能会发送一些数据,然后等待另一个进程(服务器)处理并返回结果。还值得注意的是,任何数量的ROS客户端节点都可以调用单个服务,但只能有一个服务器节点提供给定的服务。

student@WSL-ROS(2201b):~$ cd ~/catkin_ws/src
student@WSL-ROS(2201b):~/catkin_ws/src$ catkin_create_pkg week4_services rospy geometry_msgs com2009_msgs
Created file week4_services/package.xml
Created file week4_services/CMakeLists.txt
Created folder week4_services/src
Successfully created files in /home/student/catkin_ws/src/week4_services. Please adjust the values in package.xml.
student@WSL-ROS(2201b):~/catkin_ws/src$ catkin build week4_services

student@WSL-ROS(2201b):~/catkin_ws/src$ src
Sourcing bashrc...
student@WSL-ROS(2201b):~/catkin_ws/src$  roscd week4_services/src
student@WSL-ROS(2201b):~/catkin_ws/src/week4_services/src$ touch move_server.py
student@WSL-ROS(2201b):~/catkin_ws/src/week4_services/src$ chmod +x move_server.py

您刚刚用Python创建了一个节点来启动服务。该节点充当服务器,无限期地等待服务被调用。然后,我们通过命令行发出对服务的调用,然后提示我们的服务服务器执行我们在Python代码中定义的任务,即:启动计时器。向机器人发出速度指令,使其向前移动。等5秒钟。发出速度指令,使机器人停止。
准备服务响应,并将其发送给我们调用服务的终端。

如果对你有帮助的话,麻烦点个赞吧

举报

相关推荐

0 条评论