通过python启动参数配置ros参数

在基于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相关的参数,并将其他参数返回

相关推荐
花酒锄作田4 小时前
[python]argparse 包在聊天机器人中的应用
python
NiceCloud喜云6 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
AI玫瑰助手7 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_468466857 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
油炸自行车7 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
肩上风骋7 小时前
C++14特性
开发语言·c++·c++14特性
小糖学代码7 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨8 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
橙橙笔记8 小时前
Python的学习第一部分
python·学习
JAVA社区9 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展