3,ROS参数服务器C++与python

编程知识 行业动态 更新时间:2024-06-13 00:18:45

参数服务器

  • 前言
  • 理论
  • 查看
  • 增加、修改
    • C++
    • python
  • 删除
    • C++
    • python
  • 查询
    • C++
    • python

前言

本文主要是跟着audolabor学习ROS笔记,多为操作性质,并从另一种角度对实现的顺序进行调整,想要多学习,可以参考autolabor教程

理论


参数服务器里存的类似于全局变量,所有节点都可以编程增删改查这些变量,这些变量存储与ROS Master中。参数的类型可以是:

  • 32-int整形
  • bool
  • string
  • double
  • iso8601 dates(时间的一种表示方法)
  • lists
  • 字典

查看

终端中使用以下命令查看

rosparam list     #得到所有的参数的键名
rosparam get key #得到键key对应的参数

增加、修改

增加和修改的语法相同

C++

C++中的所有参数修改有两套API,可以使用节点句柄nh.,也可以使用ros::param::。

#include "ros/ros.h"
int main(int argc,char* argv[])
{
	ros::init(argc,argv,"name");
	ros::NodeHandle nh;
	//增加参数
	nh.setParam("radius",10);
	ros::param::set("radius_ros",10);
	//修改参数
	nh.setParam("radius",20);
	ros::param::set("radius_ros",30);
}

python

import rospy

if __name__ == "__main__":
	rospy.init_node("python")
	# 新增
	rospy.set_param("type","minions")
	# 修改
	rospy.set_param("type","dragon")

删除

初始化等框架不在赘述

C++

// 传参为键名,返回值为删除是否成功的bool值
ros::param::del("radius");
nh.deleteParam("radius")

python

# python中如果删除不成功程序会报错,所以建议使用try语法
try:
	rospy.delete_param("type")
except Exception as e:
	rospy.loginfo("删除失败")

查询

C++

nh.param("radius",-1.);
ros::param::param("radius",-1.);//输入的是键名和如果没有找到相应值返回的默认值
double radius
nh.getParam("radius",radius)
bool flag = ros::param::get("radius",radius);//将radius键查到的数值带入到radius里,返回一个bool类型的值,表示有没有查到
string key;
nh.searchParam("radius",key);
bool flag2 = ros::param::search("radius",key);//查找是否有radius参数,如果有将键名保存到key中
nh.getParamCached("radius",radius);
bool flag3 = ros::param::getCached("radius",radius);
nh.hasParam("radius");
bool flag4 = ros::param::has("radius");//参数是否存在
std::vector<std::string> keys;
nh.getParamNames(keys);
ros::param::search(keys);//将所有的键名存入keys中

python

type = rospy.get_param("type","None")
type = rospy.get_param_cached("type","None")
rospy.has_param("type")#返回是否查到
name = rospy.get_param_names()#返回所有参数的名字
key = rospy.search_param("type")#返回键的全名

更多推荐

3,ROS参数服务器C++与python

本文发布于:2023-03-27 04:49:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/e52565ef411f9d4383d80a351fab768f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:参数   服务器   ROS   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!