本文介绍: 2. 课程中的所有示例代码均已跑通,且对Pyhon版本代码也都做了运行验证,并附带验证过程错误均已修正);# 发现/spawn服务后,创建一个服务客户端连接名为/spawn的service。// 读取背景颜色参数。// 读取背景颜色参数

目录

说明:

1. 参数模型(全局字典)

2. 实现过程(C++)

创建功能包

参数命令行的使用

YAML参数文件

rosparam命令

使用示例

编程方法(C++)

配置代码编译规则

编译并运行

编译

运行

3. 实现过程(Python)

编程方法(Python)

运行效果


说明

1. 本系列学习笔记基于B站:古月居《ROS入门21讲》课程,且使用的Ubuntu与ROS系统版本课程完全一致;

虚拟机版本 Linux系统版本 ROS系统版本
VMware WorkStation Pro 16 Ubuntu18.04 Melodic

2. 课程中的所有示例代码均已跑通,且对Pyhon版本的代码也都做了运行验证,并附带验证过程错误均已修正);

3. 本节是整个笔记的第14节,对应视频课程的第16节,请自行对应学习

4. 整个系列笔记基本已经完结,但部分章节仍需润色修改 ,后面会陆续发布,请大家持续关注,      创作不易,感谢支持


1. 参数模型全局字典

image-20230605111945829

2. 实现过程(C++)

创建功能

cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs

image-20230605124139080

参数命令行使用

YAML参数文件

image-20230605125219488

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

使用示例

显示设置某个参数

image-20230605150526061

保存当前参数到某个文件(文件路径就在当前终端工作路径)

image-20230605150823088

从文件中修改读取参数

image-20230605151455882

删除某个参数

image-20230605152623932

编程方法(C++)

cd ~/catkin_ws/src/learning_parameter/src
touch 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("turtlesim/background_r", red);
    ros::param::get("turtlesim/background_g", green);
    ros::param::get("turtlesim/background_b", blue);
​
    ROS_INFO("Get Backgroud Color[%d, %d, %d]", red, green, blue);
​
    // 设置背景颜色参数
    ros::param::set("turtlesim/background_r", 255);
    ros::param::set("turtlesim/background_g", 255);
    ros::param::set("/background_b", 255);
​
    ROS_INFO("Set Backgroud Color[255, 255, 255]");
​
    // 读取背景颜色参数
    ros::param::get("turtlesim/background_r", red);
    ros::param::get("turtlesim/background_g", green);
    ros::param::get("turtlesim/background_b", blue);
​
    ROS_INFO("Re-get Backgroud 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;
}

image-20230605160016032

配置代码编译规则

add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})

image-20230605153809877

编译运行

编译
cd ~/catkin_wscatkin_makesource devel/setup.bash(如已配置 **.bashrc**文件,则此步不需要,配置方法在publisher的章节里)

image-20230605154237433

运行
roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config

image-20230605161950473

3. 实现过程(Python

编程方法(Python)

cd ~/catkin_ws/src/learning_parameter
mkdir scripts
cd scripts
touch parameter_config.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 该例程设置/读取海龟例程中的参数
​
import sys
import rospy
from std_srvs.srv import Empty
​
def parameter_config():
    # ROS节点初始化
    rospy.init_node('parameter_config', anonymous=True)
​
    # 读取背景颜色参数
    red   = rospy.get_param('turtlesim/background_r')
    green = rospy.get_param('turtlesim/background_g')
    blue  = rospy.get_param('turtlesim/background_b')
​
    rospy.loginfo("Get Backgroud Color[%d, %d, %d]", red, green, blue)
​
    # 设置背景颜色参数
    rospy.set_param("turtlesim/background_r", 255);
    rospy.set_param("turtlesim/background_g", 255);
    rospy.set_param("turtlesim/background_b", 100);
​
    rospy.loginfo("Set Backgroud Color[255, 255, 100]");
​
    # 读取背景颜色参数
    red   = rospy.get_param('turtlesim/background_r')
    green = rospy.get_param('turtlesim/background_g')
    blue  = rospy.get_param('turtlesim/background_b')
​
    rospy.loginfo("Get Backgroud Color[%d, %d, %d]", red, green, blue)
​
    # 发现/spawn服务后,创建一个服务客户端连接名为/spawn的service
    rospy.wait_for_service('/clear')
    try:
        clear_background = rospy.ServiceProxy('/clear', Empty)
​
        # 请求服务调用输入请求数据
        response = clear_background()
        return response
    except rospy.ServiceException, e:
        print "Service call failed: %s"%e
​
if __name__ == "__main__":
    parameter_config()

image-20230605164034212

给parameter_config.py文件赋作为可执行文件权限python文件不需要编译,直接运行即可

image-20230605163456745

运行效果

roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config.py

image-20230605164548361

原文地址:https://blog.csdn.net/2201_75902080/article/details/134659874

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_12391.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注