需求描述: 修改turtlesim乌龟显示节点窗体的背景色,已知背景色是通过参数服务器的方式以 rgb 方式设置的。
实现分析:
- 首先,需要启动乌龟显示节点。
- 要通过ROS命令,来获取参数服务器中设置背景色的参数。
- 编写参数设置节点,修改参数服务器中的参数值。
实现流程:
- 通过ros命令获取参数。
- 编码实现服参数设置节点。
- 启动 roscore、turtlesim_node 与参数设置节点,查看运行结果。
1. 参数名获取
获取参数列表:
rosparam list
响应结果:
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
2. 参数修改
本次案例在ROS实操_话题发布
创建的dotopic
功能包内进行,因此无需开展功能的包的创建等相关操作,只需在scripts
目录内配置订阅节点相关的python文件即可
touch set_topic.py
#! /usr/bin/env python
# coding=utf-8
import rospy
if __name__ == "__main__":
rospy.init_node("hehe")
# 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
chmod +x set_topic.py
编辑dotopic
下的CmakeLists.txt文件
catkin_install_python(PROGRAMS
scripts/pub_topic.py
scripts/sub_topic.py
scripts/service_topic.py
scripts/set_topic.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
3. 运行
工作空间下,编译并初始化环境变量
catkin_make
source devel/setup.bash
roscore
rosrun dotopic set_topic.py
rosrun turtlesim turtlesim_node
注意节点启动顺序,如果先启动乌龟显示节点,后启动背景色设置节点,那么颜色设置不会生效。
4. 其他设置方式
方式1:修改小乌龟节点的背景色(命令行实现)
rosparam set /turtlesim/background_b 自定义数值
rosparam set /turtlesim/background_g 自定义数值
rosparam set /turtlesim/background_r 自定义数值
方式2:启动节点时,直接设置参数
rosrun turtlesim turtlesim_node _background_r:=100 _background_g=0 _background_b=0
方式3:通过launch文件传参
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="set_bg" output="screen">
<!-- launch 传参策略1 -->
<!-- <param name="background_b" value="0" type="int" />
<param name="background_g" value="0" type="int" />
<param name="background_r" value="0" type="int" /> -->
<!-- launch 传参策略2 -->
<rosparam command="load" file="$(find demo03_test_parameter)/cfg/color.yaml" />
</node>
</