ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/model/vehicle_blue/cmd_vel #这个只能用于重命名节点名称
可以用以下语法直接从命令行中设置参数:
这里很清楚看出来ros2 run name exec --ros-args -p param:=value中的parma指的是ros2内部的参数,不一定是从命令行传递到可执行文件的参数。但是我又觉得那个传入参数一定包含在这个格式里面,因为没有其他的格式了,因该就是用这个方式传入参数的
ros2 run package_name executable_name --ros-args -p param_name:=param_value
下面这个示例可以运行命令:
ros2 run demo_nodes_cpp parameter_blackboard --ros-args -p some_int:=42 -p "a_string:=Hello world" -p "some_lists.some_integers:=[1, 2, 3, 4]" -p "some_lists.some_doubles:=[3.14, 2.718]"
///这个参数是ros2参数服务器的那个参数,不是传递给可执行文件的参数
7 Load parameter file on node startup
To start the same node using your saved parameter values, use:
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
This is the same command you always use to start turtlesim, with the added flags --ros-args
and --params-file
, followed by the file you want to load.
Stop your running turtlesim node, and try reloading it with your saved parameters, using:
ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
The turtlesim window should appear as usual, but with the purple background you set earlier.
格式: ros2 run [-h] [--prefix PREFIX] package_name executable_name ...
Run a package specific executable
positional arguments:
package_name Name of the ROS package
executable_name Name of the executable
argv Pass arbitrary arguments to the executable
options:
-h, --help show this help message and exit
--prefix PREFIX Prefix command, which should go before the executable. Command must be wrapped in quotes if it contains spaces (e.g. --prefix 'gdb -ex run --args').
这个就是ros2 run在launch文件里面的搞法:
<node>
<param name='abc' value='123' />
</node>
/
至少搞清楚一点ros2 launch命令行传递参数格式:
ros2 launch 包名称 launch文件名称 参数:=参数值
//
launch文件里面的<arg>标签用于从命令行获取数据,是在launch文件里面的变量
用于从命令行获取参数用<arg>:例如ros2 launch pkg lauch.xml 参数:=参数值
ros2 launch命令行-------------------------->launch文件
/
用于向命令行传递参数用<param> 我觉得是向ros run这样的命令行传递参数,因为exec是一个可执行文件,不是launch文件
launch文件------------------->ros2 run命令行/不是ros2 launch命令行