参数
全局字典,所有节点都可以访问
roscore
rosrun turtlesim turtlesim_node
常见命令
rosparam list
rosparam
rosparam get /turtlesim/background_b
# set 既可以修改参数,也可以创建参数
rosparam set /turtlesim/background_b 50
# 调用 服务 进行刷新
rosservice call /clear "{}"
# 将参数保存到文件中
rosparam dump par.yaml
rosparam load par.yaml
rosservice call /clear 双击tab键
举例
创建功能包:
catkin_create_pkg param_pkg rospy roscpp std_msgs
c++
目的:获取turtlesim_node的背景颜色参数值,并修改,重新刷新背景颜色
注:刷新背景需要运行以下服务对其重新调用,这里使用服务/clear,查出该服务的数据类型
创建文件:param_temp.cpp
#include <ros/ros.h>
#include <std_srvs/Empty.h>
int main(int argc,char **argv){
int b;
ros::init(argc,argv,"param_temp");
ros::NodeHandle n;
//获取背景参数
ros::param::get("/turtlesim/background_b",b);
ROS_INFO("get : b:%d",b);
b = 50;
//修改参数 同时,该命令也可以设置新的参数
ros::param::set("/turtlesim/background_b",b);
ROS_INFO("set : b:%d",b);
//设置新参数
ros::param::set("/new_param",123);
//刷新
ros::service::waitForService("/clear");
ros::ServiceClient s = n.serviceClient<std_srvs::Empty>("/clear");
std_srvs::Empty srv;
s.call(srv);
return 0;
}
配置:在CMakeList中:
add_executable(param_temp src/param_temp.cpp)
target_link_libraries(param_temp ${catkin_LIBRARIES})
运行:
roscore
rosrun turtlesim turtlesim_node
rosrun param_pkg param_temp
运行后,背景颜色发生改变,并且新创建了一个 参数
python
创建文件:param_temp.py
#!/usr/bin/env python
import rospy
from std_srvs.srv import Empty
def param_temp():
try:
rospy.init_node("param_temp")
# 得到参数
b = rospy.get_param("/turtlesim/background_b")
rospy.loginfo(f"get b:{b}")
b = 50
# 设置参数
rospy.set_param("/turtlesim/background_b",b)
rospy.loginfo(f"set b:{b}")
# 创建参数
rospy.set_param("/new_py_para",100)
rospy.wait_for_service("/clear")
s = rospy.ServiceProxy("clear",Empty)
# 向服务发出请求
res = s()
except:
pass
if __name__ == "__main__":
param_temp()
运行:
roscore
rosrun turtlesim turtlesim_node
rosrun param_pkg param_temp.py