创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs
==================
参数命令行使用
rosparam
- 列出当前参数
$rosparam list
- 显示某个参数值
$rosparam get param_key
- 设置某个参数值
$rosparam set param_key param_value
- 保存参数到文件
$rosparam dump file_name
- 从文件读取参数
$rosparam load file_name
- 删除参数
$rosparam delete param_key
-----------------------------------------------------------------
YAML参数文件
background_b:255
background_g:86
background_r:69
rosdistro:'melodic'
roslaunch:
uris:{host_hcx_vpc__43763:'http://hcx-vpc:43763/'}
run_id:077058de-a38b-11e9-818b-000c29d22e4d
现在想改一下小海龟的背景颜色,记住现在的颜色,见证奇迹的时刻
如上图保存的文件,如果想更改文件来更改背景颜色,可以保存文件进行如下操作
===========================
下面展示在命令行里怎么操作:
编程方法(C++)
如何获取/设置参数
- 初始化ROS节点;
- get函数获取参数;
- set函数设置参数;
parameter_config.cpp
/**
* 该例程设置/读取海龟例程中的参数
*/
#include<string>
#include<ros/ros.h>
#include<std_srvs/Empty.h>
int main(int argc,char **argv)
{
int red,green,blue;
// ROS 节点初始化
ros::init(argc,argv,"parameter_config");
// 创建节点句柄
ros::NodeHandle node;
// 读取背景颜色参数
ros::param::get("/background_r",red);
ros::param::get("/background_g",green);
ros::param::get("/background_b",blue);
ROS_INFO("Get Background Color[%d,%d,%d]",red,green,blue);
// 设置背景颜色参数
ros::param::set("/background_r",255);
ros::param::set("/background_g",255);
ros::param::set("/background_b",255);
ROS_INFO("Get Background Color[255,255,255]");
// 读取背景颜色参数
ros::param::get("/background_r",red);
ros::param::get("/background_g",green);
ros::param::get("/background_b",blue);
ROS_INFO("Get Background Color[%d,%d,%d]",red,green,blue);
// 调用服务,刷新背景颜色
ros::service::waitForService("/clear");
ros::ServiceClient clear_background=node.serviceClient<std_srvs::Empty>("/clear");
std_srvs::Empty srv;
clear_background.call(srv);
sleep(1);
return 0;
}
=================
配置代码编译规则
如何配置CMakeList.txt中的编译规则
- 设置需要编译的代码和生成的可执行文件
- 设置链接库
## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executables(${PROJECT_NAME}_node src/learning_topic_node.cpp)
## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
# ${catkin_LIBRARIES}
# )
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})
==============
编译并运行发布者
cd ~/catkin_ws
catkin_make
source devel/setup.bash
roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter paramter_config
这里出现问题,代码显示背景颜色更改成功,但是现实颜色并没有更改,我感觉是cpp里的问题,然后发现的确是,要在background 前面加 /turtlesim
问题解决: