本文就总结自己最近开发项目中出现的一些roslaunch有关传参的注意事项说明一下,以免下次有犯错
roslaunch 文件传入到.cpp
- 这里我采用传参比较简单的方式,还有其他方式,不过这种最为简便
nh.param<xxx>("roslaunch中的名字,如A", 变量名, 默认值);
....
- 采用该方式时,要根据roslaunch中的传参语句来
//方式一
ros::NodeHandle nh("~"); // 表示局部话柄
与之配对的launch写法
<node .... >
<param name= "A" value="xxxx"/> // 局部标签
</node>
//方式二
ros::NodeHandle nh;// 表示全局话柄
与之配对的launch写法
<param name="A" value="xxxxx"/> // 全局标签
<node ...>
...
</node>
终端指令传参到roslaunch
- 从终端指令传参也是为了方便应对不同得情况,但是光用 param标签不行,得配合 arg标签
- 以上面方式一为例:
<launch>
<arg name="arg_port" default="/dev/ttyUSB0"/>
<node ...>
<param name="port" value="$(arg arg_port)"/>
</node>
</launch>
roslaunch modbus_serial_test modbus_motor.launch arg_port:="/dev/ttyUSB1"
- 这样即可在指令时关闭相应的值
示例: