如何启动一个节点,在ROS2参数?(How to launch a node with a para

2019-10-29 13:09发布

迁移ROS1包ros2和想不出如何在一个ros2推出放慢参数。

随着ROS1我有指一个配置文件,并从CPP代码,我使用node.getParam一个启动文件

启动文件:

<launch>
    <arg name="node_name" default="collector" />
    <arg name="config_file" default="" />
    <node name="$(arg node_name)" pkg="collector" type="collector" respawn="true">
      <rosparam if="$(eval config_file!='')" command="load" file="$(arg config_file)"/>
    </node>
</launch>

配置文件:

my_param: 5

CPP代码:

double my_param = 0;
n.getParam("my_param", my_param);

我的问题是如何将那转化为ROS2?

Answer 1:

对于ROS2,请参阅以下链接和该链接 。

作为参考,这个帖子的,ROS2已经有三个版本。 虽然水晶Clemmens支持Python节点,以前的版本,快活Bolson,其实不然。 同样,未来的版本可能会增加对如何/在何处输入配置文件更多的支持。

所述ROS2维基引用使用.yaml配置文件来存储参数,并且运行ROS2节点时,通过配置文件作为命令行参数。

ROS2维基: 节点参数

例如demo_params.yaml文件:

talker:
    ros__parameters:
        some_int: 42
        a_string: "Hello world"
        some_lists:
            some_integers: [1, 2, 3, 4]
            some_doubles : [3.14, 2.718]`

然后运行以下命令:

ros2 run demo_nodes_cpp talker __params:=demo_params.yaml



Answer 2:

我想扩大从@PSA答案这是非常好的一点。

如前所述,把你的参数在.yaml文件

talker:
    ros__parameters:
        some_int: 42
        a_string: "Hello world"
        some_lists:
            some_integers: [1, 2, 3, 4]
            some_doubles : [3.14, 2.718]

要在ROS2启动文件,现在内置在Python中使用它,通过.yaml文件路径作为参数, parameters如下描述https://github.com/ros2/launch/blob/master/launch_ros/launch_ros/actions/node的.py像这样:

ld = LaunchDescription([
        launch_ros.actions.Node(
            package='nmea_navsat_driver', node_executable='nmea_serial_driver_node', output='screen',
            parameters=["config.yaml"])
    ])

这里config.yaml是参数文件。

如果你想手动启动节点,开始它在@PSAs说回答: ros2 run demo_nodes_cpp talker __params:=demo_params.yaml

更新:参数期待的配置文件列表。



文章来源: How to launch a node with a parameter in ROS2?
标签: ros ros2