05 ROS Parameter服务器实例

简介: 本文介绍了如何在ROS(机器人操作系统)中使用参数服务器,包括获取和设置参数,并通过示例代码展示了如何读取和修改海龟仿真(turtlesim)的背景颜色参数。

0.参数管理机制

1.Talker利用RPC通信向ROS MASTER发送参数及其数据,ROS MASTER将其保存在参数列表
2.Listener发送请求给ROS MASTER,查找已知参数名对应的参数值
3.ROS MASTER将参数值发送给Listener

1.建立功能包

catkin_create_pkg learning_parameter roscpp rospy std_srvs

2.编写源码

/*
Node Function:
Get Parameter from Parameter Server in ROSMASTER
*/

#include<string>
#include<ros/ros.h>
#include<std_srvs/Empty.h>

int main(int argc,char **argv)
{
   
    int red,green,blue;
    //ROS_INIT
    ros::init(argc,argv,"parameter_config");

    //NodeHandle_INIT
    ros::NodeHandle n;

    //Read background color Parameter and set variables
    ros::param::get("/turtlesim/background_r",red);
    ros::param::get("/turtlesim/background_b",blue);
    ros::param::get("/turtlesim/background_g",green);

    //Print INFO of current color
    ROS_INFO("Get backround Color[%d,%d,%d]",red,green,blue);

    //Set background color Parameter
    ros::param::set("/turtlesim/background_r",255);
    ros::param::set("/turtlesim/background_g",255);
    ros::param::set("/turtlesim/background_b",255);

    //Print INFO
    ROS_INFO("Set Background Color[255,255,255]");

    //Read background color Parameter again
    ros::param::get("/turtlesim/background_r",red);
    ros::param::get("/turtlesim/background_b",blue);
    ros::param::get("/turtlesim/background_g",green);

    //Print INFO of current color
    ROS_INFO("Get backround Color[%d,%d,%d]",red,green,blue);

    //Call Service /clear to refresh background
    ros::service::waitForService("/clear");
    ros::ServiceClient clear_background = n.serviceClient<std_srvs::Empty>("/clear");
    std_srvs::Empty srv;
    clear_background.call(srv);

    sleep(1);

    return 0;
}
clear_background.call(srv);

值得注意的是,在源码中,此处若无.call则报错如下

error: no match for call to ‘(ros::ServiceClient) (std_srvs::Empty&)’
47 | clear_background(srv);
| ^ make[2]: *** [learning_parameter/CMakeFiles/parameter_config.dir/build.make:63:
learning_parameter/CMakeFiles/parameter_config.dir/src/parameter_config.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:1020:
learning_parameter/CMakeFiles/parameter_config.dir/all] Error 2 make:
*** [Makefile:141: all] Error 2

3.修改CMakeLists.txt

在build下添加

add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${
   catkin_LIBRARIES})
相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
10月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
2230 5
|
10月前
|
存储 弹性计算 安全
阿里云渠道商:新手如何选择阿里云ECS实例?
阿里云ECS凭借弹性扩展、稳定可靠与安全防护,助力企业高效上云。本文系统解析实例规格选择关键因素:业务场景匹配、性能评估、成本优化、地域部署与扩展规划,结合计费模式与实际需求,提供科学选型建议,助您精准匹配资源,提升云上效能。(238字)
|
11月前
|
存储 弹性计算 网络协议
阿里云服务器ECS通用算力型u2a实例,CPU采用AMD EPYC处理器,睿频最高3.7 GHz
阿里云ECS通用算力型u2a实例搭载AMD EPYC处理器,睿频高达3.7GHz,基于CIPU架构,网络与存储突发带宽最高25Gbps,I/O性能强、延迟低。支持多种云盘及IPv4/IPv6,适用于中小型数据库、APP服务等场景,性价比高,官网价降低9%-22%,是中小企业上云优选。
1295 0
|
11月前
|
存储 人工智能 容灾
阿里云服务器2核8G、4核16G、8核32G配置热门实例性能对比与场景化选型指南
2核8G/4核16G/8核32G配置的阿里云服务器在阿里云活动中目前有经济型e、通用算力型u1、通用型g7、通用型g8y和通用型g9i五种实例可选,目前2核8G配置选择u1实例活动价格652.32元1年起,4核16G月付选择经济型e实例最低89元1个月,8核32G配置160元1个月起,本文将为大家解析经济型e、通用算力型u1、通用型g7及通用型g8y实例,帮助用户根据自身需求合理选择最适合的实例规格和配置。

推荐镜像

更多
  • ros