ROS2核心概念之代码示例四

ROS2参数使用详解

上一篇写了Action,这一篇写Parameter。

Parameter

Parameter,就是参数,参数怎么传递;直接看代码,如下:

class ParameterNode : public rclcpp::Node
{
    public:
        ParameterNode()
        : Node("param_declare")                                             // ROS2节点父类初始化
        {
            this->declare_parameter("robot_name", "mbot");

            timer_ = this->create_wall_timer(                               
                1000ms, std::bind(&ParameterNode::timer_callback, this));   // 创建一个定时器,定时执行回调函数
        }
         
        // 创建定时器周期执行的回调函数 
        void timer_callback()     
        {
            std::string robot_name_param = this->get_parameter("robot_name").as_string();                // 从ROS2系统中读取参数的值
            RCLCPP_INFO(this->get_logger(), "Hello %s!", robot_name_param.c_str());                      // 输出日志信息,打印读取到的参数值
            std::vector<rclcpp::Parameter> all_new_parameters{rclcpp::Parameter("robot_name", "mbot")};  // 重新将参数值设置为指定值
            this->set_parameters(all_new_parameters);                                                    // 将重新创建的参数列表发送给ROS2系统
        }

    private:
        rclcpp::TimerBase::SharedPtr timer_;
};

// ROS2节点主入口main函数
int main(int argc, char ** argv)                         
{

    // ROS2 C++接口初始化
    rclcpp::init(argc, argv);       
    
    // 循环等待ROS2退出                   
    rclcpp::spin(std::make_shared<ParameterNode>());   
    
    // 关闭ROS2 C++接口
    rclcpp::shutdown();                                
      
    return 0;
}

看下使用方法,还挺简单的;3个步骤,先去调用declare_parameter;然后在定时器里去获取,get_parameter;最后set_parameters,把所有的更新了。

看完这些,应该觉得不难吧;如果觉得难,可以去学习下C++,具体参考这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值