需求描述:?修改turtlesim乌龟显示节点窗体的背景色,已知背景色是通过参数服务器的方式以 rgb
方式设置的。
结果演示:
实现分析:
-
首先,需要启动乌龟显示节点。 -
要通过ROS命令,来获取参数服务器中设置背景色的参数。 -
编写参数设置节点,修改参数服务器中的参数值。
实现流程:
-
通过ros命令获取参数。 -
编码实现服参数设置节点。 -
启动 roscore、turtlesim_node 与参数设置节点,查看运行结果。
1.参数名获取
获取参数列表:
rosparam list
响应结果:
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
查看具体数值
rosparam get /turtlesim/background_b
rosparam get /turtlesim/background_r
rosparam get /turtlesim/background_g
?使用命令修改
rosparam set /turtlesim/background_g 0
rosparam set /turtlesim/background_r 255
rosparam set /turtlesim/background_b 0
再重新启动节点
rosrun turtlesim turtlesim_node
2.参数修改
实现方案A:C++
?
#include "ros/ros.h"
/*
功能:修改海龟GUI背景颜色
不一定需要节点句柄(和后续API有关)
*/
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
ros::init(argc,argv,"param");
// ros::NodeHandle nh("turtlesim"); //加入命名空间
// nh.setParam("background_r",0);
// nh.setParam("background_g",255);
// nh.setParam("background_b",0);
//如果调用ros::param不需要创建节点句柄
// ros::param::set("/turtlesim/background_b",0);
// ros::param::set("/turtlesim/background_r",0);
// ros::param::set("/turtlesim/background_b",0);
ros::NodeHandle nh;
nh.setParam("/turtlesim/background_r",255);
nh.setParam("/turtlesim/background_b",255);
nh.setParam("/turtlesim/background_g",0);
return 0;
}
配置文件
?编译运行
roscore
source ./devel/setup.bash
rosrun plumbing_test test04_param
rosrun turtlesim turtlesim_node
?python
#! /usr/bin/env python
#coding=utf-8
import rospy
if __name__ =="__main__":
rospy.init_node("paramPython")
rospy.set_param("/turtlesim/background_r",255)
rospy.set_param("/turtlesim/background_g",255)
rospy.set_param("/turtlesim/background_b",255)
# rospy.set_param("background_r",255)
# rospy.set_param("background_g",255)
# rospy.set_param("background_b",255) # 调用时,需要传入 __ns:=xxx【动态传入】
记得配置文件
rosrun demo04_test test04_param_p.py __ns:=turtlesim
|