IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【ROS学习】动态调参 -> 正文阅读

[人工智能]【ROS学习】动态调参

最近在调试移动机器人的PID参数,我在想如果像以前那样调参的话,每次都要反反复复重新下载代码更新参数,如果有一种可以直接可视化修改参数,并且能实时更新底层控制,那该多好啊!其实这个问题ROS已经为你想好了!那就是非常好用的功能包——dynamic_reconfigure!!!

开始搞起来!

目录

一、创建功能包

1、进入工作空间

2、创建一个新的功能包(名为dynamic_reconfigure_test)

?二、编写配置文件

1、新建一个cfg文件夹

2、新建一个cfg文件(我们的可视化界面内容)

3、编写cfg文件(我创建了一个名为pid.cfg)

4、给配置文件设置权限

三、配置CMakeList文件以及package.xml文件

1、CMakeList文件

2、package.xml文件

四、先进行编译!

五、创建服务器节点

七、运行~!~


一、创建功能包

1、进入工作空间

cd robot_ws/src

2、创建一个新的功能包(名为dynamic_reconfigure_test)

注:后面是需要的依赖功能包

catkin_create_pkg dynamic_reconfigure_test rospy roscpp dynamic_reconfigure

?二、编写配置文件

1、新建一个cfg文件夹

mkdir cfg

2、新建一个cfg文件(我们的可视化界面内容)

touch pid.cfg

?3、编写cfg文件(我创建了一个名为pid.cfg)

#!/usr/bin/env python
PACKAGE = "dynamic_reconfigure_test"

# 导入dynamic_reconfigure功能包提供的参数生成器(parameter generator)
from dynamic_reconfigure.parameter_generator_catkin import *

# 创建一个参数生成器
gen = ParameterGenerator()

# 定义动态配置的参数

gen.add("KP", double_t, 0, "KP_param", 0.0,  0, 500)
gen.add("KI", double_t, 0, "KI_param", 0.0,  0, 500)
gen.add("KD", double_t, 0, "KD_param", 0.0,  0, 500)

# 退出
exit(gen.generate(PACKAGE, "dynamic_PID", "pid"))

?add(name,type,level,description,default,min,max)

  • name:参数名,用字符串表示
  • type:数据类型,(int_t,double_t,str_t,bool_t)
  • level:掩码(可用于查看参数是否修改)默认写0就行
  • description:描述,用于描述该参数的作用,简单明了即可~
  • default:默认值,设置参数的默认值
  • min:参数的最小值
  • max:参数的最大值

4、给配置文件设置权限

我们先查看当前文件的权限:

ll

我们可以发现该文件其实没有可执行的功能!

故我们给它添加可执行的功能!

chmod a+x pid.cfg 

a+x:表示给所有用户添加可执行功能

三、配置CMakeList文件以及package.xml文件

1、CMakeList文件

因为我们一开始创建新的功能包就包含了dynamic_reconfigure 这个功能包,所以已经有了!

如果是后面在自己的原有基础上加功能的话,记得写上!

?

往下查找可以看到这个,修改成自己的cfg文件名?

继续往下查找,将这一行取消注释即可

如果是后面在自己的原有基础上加功能的话,记得写上!

?

?2、package.xml文件

?因为我们一开始创建新的功能包就包含了dynamic_reconfigure 这个功能包,所以已经有了!

如果是后面在自己的原有基础上加功能的话,记得写上!

?四、先进行编译!

先进行编译的目的是生成需要的头文件

我们只对该功能包编译,可以这样写:

catkin_make -DCATKIN_WHITELIST_PACKAGES="dynamic_reconfigure_test"

我们可以看到生成的一个名为pidConfig.h的头文件!后面的文件我们需要包含它!

?这样的话我们的配置文件就初步完成了!接下来编写服务器节点!

五、创建服务器节点

1、创建一个cpp文件(名dynamic_test.cpp)

dynamic_test.cpp

#include <ros/ros.h>
#include <dynamic_reconfigure/server.h>
#include <dynamic_reconfigure_test/pidConfig.h>

float KP = 0.0;
float KI = 0.0;
float KD = 0.0;


//回调函数
void Callback(dynamic_reconfigure_test::pidConfig &config)
{
    KP = config.KP;
    KI = config.KI;
    KD = config.KD;

    ROS_INFO("KP KI KD = [%f %f %f]",KP,KI,KD);
}


int main(int argc,char **argv)
{
    //初始化,创建节点
    ros::init(argc,argv,"dynamic_test");

    //创建一个参数动态配置的服务器实例
    dynamic_reconfigure::Server<dynamic_reconfigure_test::pidConfig> server;
    //定义回调函数
    dynamic_reconfigure::Server<dynamic_reconfigure_test::pidConfig>::CallbackType f;

    //将回调函数和服务端绑定,当客户端请求修改参数时,服务器跳转到回调函数进行处理
    f = boost::bind(&Callback,_1);
    server.setCallback(f);

    ros::spin();

    return 0;
}

六、配置CMakeList文件

?开始编译!!

七、运行~!~

roscore
rosrun dynamic_reconfigure_test dynamic_test
rosrun rqt_reconfigure rqt_reconfigure 

?

?这样的话动态调参就OK啦!如果后续想实现远程调参,这可以将数据下发到底层,而底层将数据上报,实现双向数据互换~就可以远程调参啦!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:26:47  更:2022-04-24 09:29:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:36:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码