parameter/argument-两大参数

参数

每个结点都有参数,且以字典的形式存储
使用参数而不是程序中的变量的好处是可以动态修改关键值,而不需要重新编译代码,特别适合调试

ros2 param
ros2 param list        列出当前运行结点的参数列表
ros2 param get <node> <param>获取某个结点的某个参数值
ros2 param set <node> <param>设置某个结点的某个参数值
ros2 param dump <node>打印某个结点的所有参数
ros2 param dump <node> >> xxx.yaml将结点的参数全部保存到文件
ros2 param load <node> xxx.yaml将参数文件值应用到node中
ros2 param describle <node> <param>查看某节点参数的含义

1.节点中接口定义参数

接口手动生成

# 声明参数并设置默认值
self.declare_parameter('initial_point',[0.0,0.0,0.0])
self.declare_parameter('initial_point',[0.0,0.0,0.0])
# 获取指定参数的默认值
self.initial_point = self.get_parameter('initial_point').value
self.target_points = self.get_parameter('target_points').value

运行时加载 

# 单一参数的使用命令行即可
ros2 run <package_name> <executable_name> --ros-args -p <parameter_name>:=<value>

声明的参数你可以在命令行中动态指定,多好

2.参数文件中定义参数

文件自动生成

# 先启动节点
ros2 run autopartol_robot autopartol_node

# 在另一个终端生成参数文件
ros2 param dump /autopartol_node > autopartol_params.yaml

 autopartol_params.yaml

/node_name:
  ros__parameters:
    param1: value1
    param2: value2

运行时加载

# 多参数还是建议使用yaml文件组织
ros2 run autopartol_robot autopartol_node --ros-args --params-file params.yaml

parameter-结点级参数

定义:结点的编写过程中就进行参数定义:本质上属于结点的内容参数

赋值:在结点内赋默认初值,在laucn封装节结点时可重新赋值

应用:常规应用场景比如:修改A*算法的启发式权重值 H_weight : 1.0

argument-命令级参数

定义:launch文件的编写过程中参数定义赋值:本质上属于结点的启动参数

使用:使用LaunchConfiguration 通过键来获取值如作为路径拼接的一环

应用:常规应用场景比如:修改Rviz启动时的配置文件   -d xxx.rviz

《parameter》

# 编写结点时声明​并赋默认值
self.declare_parameter('my_int_param', 42)  # 声明并赋值参数
self.get_parameter('my_int_param').value    # 获取其值来使用
​
# 编写launch时赋予其新的值
 Node(
        package="my_pkg",
        executable="my_node",
        parameters=[{"my_int_param": 42},{"my_str_param": "hello"}]
      )

from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration

# 在launch文件中参数声明
arg_model = DeclareLaunchArgument(
    name='model',                   # 参数名
    default_value='default.urdf',   # 默认值
    description='URDF 文件路径'      # 描述
)

# 在launch文件中参数使用
LaunchConfiguration(‘model’)
Executing action: all (aliases: build) Running ninja in directory /home/wokwi/esp-project-esp32s3/build Executing "ninja all"... [1/9] Performing build step for 'bootloader' [1/1] cd /home/wokwi/esp-project-esp32s3/build/bootloader/esp-idf/esptool_py && /opt/esp/python_env/idf5.3_py3.10_env/bin/python /opt/esp/idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/wokwi/esp-project-esp32s3/build/bootloader/bootloader.bin Bootloader binary size 0x5260 bytes. 0x2da0 bytes (36%) free. [2/7] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/src/main.c.obj FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/src/main.c.obj ccache /opt/esp/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc -DESP_PLATFORM -DIDF_VER=\"v5.3.1\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DUNITY_INCLUDE_CONFIG_H -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/home/wokwi/esp-project-esp32s3/build/config -I/home/wokwi/esp-project-esp32s3/main/src -I/opt/esp/idf/components/newlib/platform_include -I/opt/esp/idf/components/freertos/config/include -I/opt/esp/idf/components/freertos/config/include/freertos -I/opt/esp/idf/components/freertos/config/xtensa/include -I/opt/esp/idf/components/freertos/FreeRTOS-Kernel/include -I/opt/esp/idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I/opt/esp/idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -I/opt/esp/idf/components/freertos/esp_additions/include -I/opt/esp/idf/components/esp_hw_support/include -I/opt/esp/idf/components/esp_hw_support/include/soc -I/opt/esp/idf/components/esp_hw_support/include/soc/esp32s3 -I/opt/esp/idf/components/esp_hw_support/dma/include -I/opt/esp/idf/components/esp_hw_support/ldo/include -I/opt/esp/idf/components/esp_hw_support/port/esp32s3/. -I/opt/esp/idf/components/esp_hw_support/port/esp32s3/include -I/opt/esp/idf/components/heap/include -I/opt/esp/idf/components/log/include -I/opt/esp/idf/components/soc/include -I/opt/esp/idf/components/soc/esp32s3 -I/opt/esp/idf/components/soc/esp32s3/include -I/opt/esp/idf/components/hal/platform_port/include -I/opt/esp/idf/components/hal/esp32s3/include -I/opt/esp/idf/components/hal/include -I/opt/esp/idf/components/esp_rom/include -I/opt/esp/idf/components/esp_rom/include/esp32s3 -I/opt/esp/idf/components/esp_rom/esp32s3 -I/opt/esp/idf/components/esp_common/include -I/opt/esp/idf/components/esp_system/include -I/opt/esp/idf/components/esp_system/port/soc -I/opt/esp/idf/components/esp_system/port/include/private -I/opt/esp/idf/components/xtensa/esp32s3/include -I/opt/esp/idf/components/xtensa/include -I/opt/esp/idf/components/xtensa/deprecated_include -I/opt/esp/idf/components/lwip/include -I/opt/esp/idf/components/lwip/include/apps -I/opt/esp/idf/components/lwip/include/apps/sntp -I/opt/esp/idf/components/lwip/lwip/src/include -I/opt/esp/idf/components/lwip/port/include -I/opt/esp/idf/components/lwip/port/freertos/include -I/opt/esp/idf/components/lwip/port/esp32xx/include -I/opt/esp/idf/components/lwip/port/esp32xx/include/arch -I/opt/esp/idf/components/lwip/port/esp32xx/include/sys -I/opt/esp/idf/components/esp_driver_gpio/include -I/opt/esp/idf/components/esp_pm/include -I/opt/esp/idf/components/mbedtls/port/include -I/opt/esp/idf/components/mbedtls/mbedtls/include -I/opt/esp/idf/components/mbedtls/mbedtls/library -I/opt/esp/idf/components/mbedtls/esp_crt_bundle/include -I/opt/esp/idf/components/mbedtls/mbedtls/3rdparty/everest/include -I/opt/esp/idf/components/mbedtls/mbedtls/3rdparty/p256-m -I/opt/esp/idf/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m -I/opt/esp/idf/components/esp_app_format/include -I/opt/esp/idf/components/esp_bootloader_format/include -I/opt/esp/idf/components/app_update/include -I/opt/esp/idf/components/bootloader_support/include -I/opt/esp/idf/components/bootloader_support/bootloader_flash/include -I/opt/esp/idf/components/esp_partition/include -I/opt/esp/idf/components/efuse/include -I/opt/esp/idf/components/efuse/esp32s3/include -I/opt/esp/idf/components/esp_mm/include -I/opt/esp/idf/components/spi_flash/include -I/opt/esp/idf/components/pthread/include -I/opt/esp/idf/components/esp_timer/include -I/opt/esp/idf/components/esp_driver_gptimer/include -I/opt/esp/idf/components/esp_ringbuf/include -I/opt/esp/idf/components/esp_driver_uart/include -I/opt/esp/idf/components/vfs/include -I/opt/esp/idf/components/app_trace/include -I/opt/esp/idf/components/esp_event/include -I/opt/esp/idf/components/nvs_flash/include -I/opt/esp/idf/components/esp_driver_pcnt/include -I/opt/esp/idf/components/esp_driver_spi/include -I/opt/esp/idf/components/esp_driver_mcpwm/include -I/opt/esp/idf/components/esp_driver_ana_cmpr/include -I/opt/esp/idf/components/esp_driver_i2s/include -I/opt/esp/idf/components/sdmmc/include -I/opt/esp/idf/components/esp_driver_sdmmc/include -I/opt/esp/idf/components/esp_driver_sdspi/include -I/opt/esp/idf/components/esp_driver_sdio/include -I/opt/esp/idf/components/esp_driver_dac/include -I/opt/esp/idf/components/esp_driver_rmt/include -I/opt/esp/idf/components/esp_driver_tsens/include -I/opt/esp/idf/components/esp_driver_sdm/include -I/opt/esp/idf/components/esp_driver_i2c/include -I/opt/esp/idf/components/esp_driver_ledc/include -I/opt/esp/idf/components/esp_driver_parlio/include -I/opt/esp/idf/components/esp_driver_usb_serial_jtag/include -I/opt/esp/idf/components/driver/deprecated -I/opt/esp/idf/components/driver/i2c/include -I/opt/esp/idf/components/driver/touch_sensor/include -I/opt/esp/idf/components/driver/twai/include -I/opt/esp/idf/components/driver/touch_sensor/esp32s3/include -I/opt/esp/idf/components/esp_phy/include -I/opt/esp/idf/components/esp_phy/esp32s3/include -I/opt/esp/idf/components/esp_vfs_console/include -I/opt/esp/idf/components/esp_netif/include -I/opt/esp/idf/components/wpa_supplicant/include -I/opt/esp/idf/components/wpa_supplicant/port/include -I/opt/esp/idf/components/wpa_supplicant/esp_supplicant/include -I/opt/esp/idf/components/esp_coex/include -I/opt/esp/idf/components/esp_wifi/include -I/opt/esp/idf/components/esp_wifi/wifi_apps/include -I/opt/esp/idf/components/esp_wifi/wifi_apps/nan_app/include -I/opt/esp/idf/components/esp_wifi/include/local -I/opt/esp/idf/components/unity/include -I/opt/esp/idf/components/unity/unity/src -I/opt/esp/idf/components/cmock/CMock/src -I/opt/esp/idf/components/console -I/opt/esp/idf/components/http_parser -I/opt/esp/idf/components/esp-tls -I/opt/esp/idf/components/esp-tls/esp-tls-crypto -I/opt/esp/idf/components/esp_adc/include -I/opt/esp/idf/components/esp_adc/interface -I/opt/esp/idf/components/esp_adc/esp32s3/include -I/opt/esp/idf/components/esp_adc/deprecated/include -I/opt/esp/idf/components/esp_driver_isp/include -I/opt/esp/idf/components/esp_driver_cam/include -I/opt/esp/idf/components/esp_driver_cam/interface -I/opt/esp/idf/components/esp_driver_jpeg/include -I/opt/esp/idf/components/esp_driver_ppa/include -I/opt/esp/idf/components/esp_eth/include -I/opt/esp/idf/components/esp_gdbstub/include -I/opt/esp/idf/components/esp_hid/include -I/opt/esp/idf/components/tcp_transport/include -I/opt/esp/idf/components/esp_http_client/include -I/opt/esp/idf/components/esp_http_server/include -I/opt/esp/idf/components/esp_https_ota/include -I/opt/esp/idf/components/esp_https_server/include -I/opt/esp/idf/components/esp_psram/include -I/opt/esp/idf/components/esp_lcd/include -I/opt/esp/idf/components/esp_lcd/interface -I/opt/esp/idf/components/esp_lcd/rgb/include -I/opt/esp/idf/components/protobuf-c/protobuf-c -I/opt/esp/idf/components/protocomm/include/common -I/opt/esp/idf/components/protocomm/include/security -I/opt/esp/idf/components/protocomm/include/transports -I/opt/esp/idf/components/protocomm/include/crypto/srp6a -I/opt/esp/idf/components/protocomm/proto-c -I/opt/esp/idf/components/esp_local_ctrl/include -I/opt/esp/idf/components/espcoredump/include -I/opt/esp/idf/components/espcoredump/include/port/xtensa -I/opt/esp/idf/components/wear_levelling/include -I/opt/esp/idf/components/fatfs/diskio -I/opt/esp/idf/components/fatfs/src -I/opt/esp/idf/components/fatfs/vfs -I/opt/esp/idf/components/idf_test/include -I/opt/esp/idf/components/idf_test/include/esp32s3 -I/opt/esp/idf/components/ieee802154/include -I/opt/esp/idf/components/json/cJSON -I/opt/esp/idf/components/mqtt/esp-mqtt/include -I/opt/esp/idf/components/nvs_sec_provider/include -I/opt/esp/idf/components/perfmon/include -I/opt/esp/idf/components/spiffs/include -I/opt/esp/idf/components/touch_element/include -I/opt/esp/idf/components/usb/include -I/opt/esp/idf/components/wifi_provisioning/include -mlongcalls -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=/home/wokwi/esp-project-esp32s3=. -fmacro-prefix-map=/opt/esp/idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/src/main.c.obj -MF esp-idf/main/CMakeFiles/__idf_main.dir/src/main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/src/main.c.obj -c /home/wokwi/esp-project-esp32s3/main/src/main.c /home/wokwi/esp-project-esp32s3/main/src/main.c: In function 'app_main': /home/wokwi/esp-project-esp32s3/main/src/main.c:56:20: error: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'int' [-Werror=format=] 56 | printf("设置角度: %" PRIu32 "°, 占空比: %" PRIu32 "\n", angle, duty); | ^~~~~~~~~~~~~ ~~~~~ | | | int /home/wokwi/esp-project-esp32s3/main/src/main.c:65:20: error: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'int' [-Werror=format=] 65 | printf("设置角度: %" PRIu32 "°, 占空比: %" PRIu32 "\n", angle, duty); | ^~~~~~~~~~~~~ ~~~~~ | | | int cc1: some warnings being treated as errors ninja: build stopped: subcommand failed. ninja failed with exit code 1, output of the command is in the /home/wokwi/esp-project-esp32s3/build/log/idf_py_stderr_output_21792 and /home/wokwi/esp-project-esp32s3/build/log/idf_py_stdout_output_21792 Error: Process exited with 2
08-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值