在基于python进行ROS程序开发时,往往遇到这样的问题:想要利用pycharm、vscode等工具对代码进行单步调试,但是程序中有很多参数需要通过roslaunch才能加载,配置roslaunch的调试又有点费劲。
因此,我们可以直接将roslaunch中的参数作为python的启动参数传入 ,然后直接通过python xxx.py进行启动,从而避免了配置roslaunch调试的复杂问题。
以如下launch文件为例
bash
<node name="NodeName" pkg="PkgName" type="Node.py" ns="uav1">
<param name="uav_id" value="1" />
<param name="uav_sum" value="2" />
</node>
该launch文件转写为python脚本启动形式为:
bash
python Node.py __ns:=uav1 _uav_id:=1 _uav_sum:=2
读者可参考此形式自行转写。
此外,如果python程序中本身就带有一些通过argparse读取的参数,可以混合书写这些参数,例如:
bash
python Node.py --trial=317 --epoch=100 --use_tensorrt=1 __ns:=uav1 _uav_id:=1 _uav_sum:=2
不过需要注意的是,argparse是无法区分正常的argparse参数和ros参数的,我们需要将
bash
args = parser().parse_args()
替换为
bash
args = parser().parse_args(rospy.myargv()[1:])
rospy.myargv()[1:]为ros提供的接口,可以自动过滤掉ros相关的参数,并将其他参数返回