ROS-参数服务器(python)方向的基本实现流程及代码演示

这篇具有很好参考价值的文章主要介绍了ROS-参数服务器(python)方向的基本实现流程及代码演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

声明

首先是创造工作空间等等这里就不再赘述,下文使用的工作空间叫 ilove02_01_ws;功能包名字叫做:ilovezero2。

参数服务器的一套简单流程就是围绕:增删改查;这四个字组成的。

其中由增改这两个字组成一个主体文件,后面就叫它为 set文件。实行查与删功能的文件后面我就分别叫它们get文件和del文件

SET文件:增改

实现增改功能的语句是:rospy.set_param(),我们通过这个语句对它相关属性进行赋值操作,以下是set文件代码演示:

#! /usr/bin/env python
# coding=utf-8
import rospy
"""
   演示参数的新增与修改;
   需求:在参数服务器中实现机器人的属性,型号,半径
   实现:
       rospy.set_param()
"""
if __name__=="__main__":
    # 初始化ros节点
    rospy.init_node("param_set_p")
    # 新曾参数
    rospy.set_param("type_p","xiaohuangche")
    rospy.set_param("radius",0.15)
    # 修改参数
    rospy.set_param("radius",0.2)
    pass

这行串代码是实现的功能是建立两个参数 一个是typ_p ,它对应的型号是xiaohuangche

另一个是描述这个小车或机器人的半径是0.15然后通过该代码改为了0.2。

GET文件:查

查的对象是我原来已经赋值好的set文件,可以通过查的方式经行set文件中相关属性的查询操作,下面get文件会带来5种方法来查找set文件的相关属性。

get文件的代码演示如下:

1.get_param(x,y) x是前文的相关的键,y是自己定义的默认值,如果前面已经定义好了默认值会被前面所定义好的值所代替。y是一个可写可不写的值。

get_param就相当于是运行之后得到前面定义好的键的值 。

2.get_param_cached 这个语句是和1.功能是一样的,但是区别就是1. 的值是从内存中提取出来的,而2.是从本地中直接拿出来的,因此2.的效率比1.快。

3.get_param_names 它的作用是获得所有的键,这也就包括的系统本身的键和自身所定义的键。

4.has_param 这个语句就是判断是否有某一个键(要结合if语句)

5.search_param 这是用来寻找是否有某一个键的,并输出键名。

下面代码是将各类方法对set文件的radius进行的操作:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
"""
   演示相关参数的查询
"""
if __name__=="__main__":
    # 初始化ros节点
    rospy.init_node("get_param_p")
    # 1.get_param
    radius1 = rospy.get_param("radius",0.5)
    radius2 = rospy.get_param("radius_x",0.5)
    rospy.loginfo("radius1 = %.2f",radius1)
    rospy.loginfo("radius2 = %.2f",radius2)
    # 2.get_param_cached 与1.的区别就是2.的效率更高
    radius3 = rospy.get_param("radius",0.5)
    radius4 = rospy.get_param("radius_x",0.5)
    rospy.loginfo("radius3 = %.2f",radius1)
    rospy.loginfo("radius4 = %.2f",radius2)
    # 3.get_param_names 获取所有的建
    names = rospy.get_param_names()
    for name in names:
        rospy.loginfo("name = %s",name)
    # 4.has_param 表示某一个建是否存在
    flag1 = rospy.has_param("radius")
    if flag1:
        rospy.loginfo("radius 存在")
    else:
        rospy.loginfo("radius 不存在")
    flag2 = rospy.has_param("radius_x")
    if flag2:
        rospy.loginfo("radius_x 存在")
    else:
        rospy.loginfo("radius_x 不存在")
    # 5.search_param 查找某一个建,并输出建名
    key = rospy.search_param("radius")
    rospy.loginfo("key = %s",key)

DEL文件:删

语句:delete_param,这个语句是用来删除指定的键的,值得注意的是第一次删除时,代码正常运行,如果连续删除的话,那就会出现报错的情况,因为你的键已经删掉了。所以我使用了try——except这给捕获错误的语句做了一个优化,提示无此键了。

以下时del文件的代码演示:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
"""
   delet_param
"""
if __name__=="__main__":
    rospy.init_node("del_param_p")
    
    try:
        # 删除参数
        rospy.delete_param("radius")
    except Exception as e:
        rospy.loginfo("被删除的参数不存在")
    

---------------------------------------------------------------------------------------------------------------------------

下面我来运行这三个文件:

首先是set文件它的结果是

ROS-参数服务器(python)方向的基本实现流程及代码演示,ROS的知识,服务器,python,运维,ubuntu

其次我再运行get文件:

ROS-参数服务器(python)方向的基本实现流程及代码演示,ROS的知识,服务器,python,运维,ubuntu

我们可以从上面这个照片看到键radius,接下来我们运行del文件将会删除这个键

运行del文件并使用list查看:

ROS-参数服务器(python)方向的基本实现流程及代码演示,ROS的知识,服务器,python,运维,ubuntu

此时我们会发现radius这个键就没了。

下面我们再次运行一遍del文件:

ROS-参数服务器(python)方向的基本实现流程及代码演示,ROS的知识,服务器,python,运维,ubuntu

你就会发现它会出现我们上述优化之后的日志结果。

-------------------------------------------------------------------------------------------

下面经行总结:

ROS-参数服务器(python)方向的基本实现流程及代码演示,ROS的知识,服务器,python,运维,ubuntu文章来源地址https://www.toymoban.com/news/detail-813141.html

到了这里,关于ROS-参数服务器(python)方向的基本实现流程及代码演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【手把手做ROS2机器人系统开发五】使用C++实现编写简单的服务器和客户端

    目录 使用C++实现编写简单的服务器和客户端 一、程序编写 1、创建软件包  2、编译软件包 3、软件配置 4、服务器程序编写 5、客户端程序编写 6、软件包设置 7、设置编译选项 二、程序测试 1、编译程序 2、开启节点测试运行 3、执行效果展示          上一讲我们讲解了如

    2024年02月10日
    浏览(30)
  • python实现/直播服务器/聊天服务器/的多种解决方案

    在Python中,您可以使用以下技术栈来实现直播服务器: Flask:Flask是一个轻量级的Web框架,可用于构建直播服务器的后端。您可以使用Flask编写API端点来处理直播流的控制和管理。 Django:Django是一个功能强大的Web框架,提供了许多内置功能和插件,可用于构建复杂的直播服务

    2024年02月11日
    浏览(31)
  • python实现UDP服务器

    import socket   # 创建UDP socket udp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)   # 绑定地址和端口 server_address = (\\\'localhost\\\', 12000) udp_server_socket.bind(server_address)   # 服务器循环 while True:     # 接收客户端消息     message, client_address = udp_server_socket.recvfrom(1024)     print(f\\\"Received

    2024年04月27日
    浏览(30)
  • Python实现搭建-简单服务器教程

    Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文件的环境) 3.提取出文件的环境之后,利用截断取片的方法将文件名转化为模块

    2023年04月18日
    浏览(28)
  • python实现跨域代理服务器

    准备环境 python3.7+ 依赖:aiohttp 代码实现(代理服务器,返回响应体和进行跨域处理后的headers) 测试 写个get的方法 下载测试 结果 可以正常下载 并且在响应头中能看到Server:is my server 同时可以看到添加成功的Allow-Origin响应头

    2024年02月16日
    浏览(34)
  • 21.12 Python 实现网站服务器

    Web服务器本质上是一个提供Web服务的应用程序,运行在服务器上,用于处理HTTP请求和响应。它接收来自客户端(通常是浏览器)的HTTP请求,根据请求的URL、参数等信息生成HTTP响应,并将响应返回给客户端,完成客户端的请求。Web服务器可以使用多种编程语言和技术实现,通

    2024年02月06日
    浏览(25)
  • ROS主机搭建NFS服务器,虚拟机通过挂载访问及修改主机文件

       本文主要介绍在ROS主机中搭建NFS服务器,虚拟机(从机)通过nfs挂载的方式访问及修改主机中文件的方法    一、ROS主机NFS服务器搭建:    若机器人配有显示屏,此部分可直接在机器人上操作,否则,可通过SSH远程登录的方式,在虚拟机上进行远程登录后操作,下

    2023年04月22日
    浏览(35)
  • docker使用与服务器上的可视化(ROS rviz等)

    安装docker:官网教程,按照官网命令一步步来即可。 添加当前用户到 docker 用户组: 【docker】添加用户到docker组,这样后面运行docker的时候前面不需要加 sudo 命令,否则运行 docker 的时候一直需要在前面加 sudo ,即 sudo docker xxx 首先区分镜像(images)和容器(containers):他们

    2024年02月15日
    浏览(29)
  • 【Python】OPC UA模拟服务器实现

     在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于平台的方式来访问实时数据。在本文中,我们将探讨如何使用Python和OPC UA库来创建一个高效的数据服务器,该服务器能够从CSV文件

    2024年04月29日
    浏览(53)
  • 基于 Python 实现一个简单的 HTTP 服务器

    文章这个题目,让我想起了大学时上《Unix 网络编程》这门专业课的家庭作业,题目几乎一模一样。 HTTP 服务器工作在服务端,主要功能包括处理来自客户端的请求,管理网络资源,以及生成和发送响应给客户端。在实际应用中,HTTP 服务器不仅限于传输 HTML 文档;它还可以传

    2024年03月22日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包