【Dynamic Parameter Reconfig】線上更新參數

photo-1465917031443-a76ab279572f

情境:

  • PID Control 參數調控

  • 調控 Sensor Update Rate 平衡 bandwidth

rqt_reconfigure 好工具 不用嗎!

rqt_reconfigure_nav

設定方法 for python:

STEP 1、建立 cfg 檔案

位置:

在 package 內 建立一 cfg 資料夾,建立 參數設定檔名.cfg 

開頭:

#!/usr/bin/env python
PACKAGE = “package name

from dynamic_reconfigure.parameter_generator_catkin import *

gen = ParameterGenerator()

設定:

gen.add(“參數名稱", 類別, 0, “說明欄", 初始設定值, 上限,下限)

結尾:

exit(gen.generate(PACKAGE, “讀取參數的程式名稱", “參數設定檔檔名"))

STEP 2、加 cfg 進 CMakeLists.txt 檔案,進入編譯程序。

 

1、Dependency:

find_package(catkin REQUIRED COMPONENTS

dynamic_reconfigure

message_runtime

)

catkin_package(
DEPENDS CATKIN DEPENDS

dynamic_reconfigure

message_runtime
)

2、Build:

generate_dynamic_reconfigure_options(

cfg/odom.cfg

)

STEP 3、加 dependency 進 package.xml檔案,進入編譯程序。

<build_depend>dynamic_reconfigure</build_depend>
<build_depend>message_runtime</build_depend>

<run_depend>dynamic_reconfigure</run_depend>
<run_depend>message_runtime</run_depend>

STEP 4、執行 catkin_make 編譯

程式內部設定 MEMO

導入含式

from dynamic_reconfigure.server import Server
from package_name.cfg import cfg_file_nameConfig

設定讀取 Parameter 的函數

algebra_name = rospy.get_param(“~parameter_name“, default_value)

設定 Service 和 rqt_reconfigure 對接

設定:

srv = Server(參數設定檔名Config, self.dynamic_reconfigure_callback)

※參數設定檔名:odom.cfg →odomConfig

Service 含式

def dynamic_reconfigure_callback(self, config, level):
    if algebra_name != config['parameter_name']:
        algebra_name = config['parameter_name']
        ... + anything you need to update ...
    return config

【參考資料】

廣告
本篇發表於 未分類。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s