【ROS】ros学习笔记(11)——通讯实操04_参数服务器

【ROS】ros学习笔记(11)——通讯实操04_参数服务器 ros学习笔记11——通讯实操04_参数服务器1.参数名获取2.功能实现2.1 写cpp文件2.2 修改CMake3.运行4.其他设置方法4.1 命令行实现4.2 启动节点时直接设置参数4.3 通过launch文件传参需求描述:修改turtlesim乌龟显示节点窗体的背景色已知背景色是通过参数服务器的方式以 rgb 方式设置的。结果演示:实现分析:首先需要启动乌龟显示节点。要通过ROS命令来获取参数服务器中设置背景色的参数。编写参数设置节点修改参数服务器中的参数值。实现流程:通过ros命令获取参数。编码实现服参数设置节点。启动 roscore、turtlesim_node 与参数设置节点查看运行结果。1.参数名获取获取参数列表rosparam list响应结果设置背景颜色的三个参数是/turtlesim/background_b/turtlesim/background_g/turtlesim/background_r2.功能实现创建功能包需要依赖的功能包: roscpp rospy std_msgs turtlesim2.1 写cpp文件在功能包下面的src目录下创建新的cpp文件内容如下#includeros/ros.h/* 需求修改参数服务器中turtlesim参数 1.初始化ros节点 2.不一定需要创建节点句柄和后续api有关 3.修改参数 */intmain(intargc,char*argv[]){// 1.初始化ros节点ros::init(argc,argv,change_dgColor);// 2.不一定需要创建节点句柄和后续api有关//------方法一带命名空间的节点句柄---------// ros::NodeHandle nh(turtlesim);// nh.setParam(/background_r,0);// nh.setParam(/background_g,0);// nh.setParam(background_b,0);//-------------方法一---------------------//-------------方法二---------------------ros::NodeHandle nh;nh.setParam(/turtlesim/background_r,0);nh.setParam(/turtlesim/background_g,0);nh.setParam(/turtlesim/background_b,0);//-------------方法二---------------------//-------------方法三---------------------// 3.修改参数//如果调用ros::param不需要创建节点句柄// ros::param::set(/turtlesim/background_r,0);// ros::param::set(/turtlesim/background_g,0);// ros::param::set(/turtlesim/background_b,0);//-------------方法三---------------------return0;}2.2 修改CMake修改功能包下的src下的cmake文件第136行取消注释add_executable(节点名 cpp文件)注意一般节点名选用和cpp文件名一致add_executable(test01_param src/test01_param.cpp)第149-151行target_link_libraries取消注释target_link_libraries(和上一条同名的节点名 ${catkin_LIBRARIES} )即target_link_libraries(test01_param ${catkin_LIBRARIES} )3.运行首先启动 roscore然后启动背景色设置节点最后启动乌龟显示节点最终执行结果与演示结果类似。PS: 注意节点启动顺序如果先启动乌龟显示节点后启动背景色设置节点那么颜色设置不会生效。4.其他设置方法4.1 命令行实现rosparamset/turtlesim/background_b 自定义数值rosparamset/turtlesim/background_g 自定义数值rosparamset/turtlesim/background_r 自定义数值修改相关参数后重启 turtlesim_node 节点背景色就会发生改变了4.2 启动节点时直接设置参数rosrun turtlesim turtlesim_node _background_r:100_background_g0_background_b04.3 通过launch文件传参launchnodepkgturtlesimtypeturtlesim_nodenameset_bgoutputscreen!-- launch 传参策略1 --!-- param namebackground_b value0 typeint / param namebackground_g value0 typeint / param namebackground_r value0 typeint / --!-- launch 传参策略2 --rosparamcommandloadfile$(find demo03_test_parameter)/cfg/color.yaml//node/学习的为赵虚左老师的教程 1.老师的文档 2.老师的视频在笔记上理论部分大量参考了老师的文档