外观
踩坑Robotics Stack Exchange2023-06-28
ROS2 OnShutdown 中 ExecuteProcess 不执行
本文由 AI 根据公开内容整理,可能有误,请以原文为准:How to execute a script at shutdown of a launch process(Robotics Stack Exchange #24908)
状态:有绕过办法
问题
在 ROS2 launch 中按 ctrl-C 触发 OnShutdown 后,LogInfo 正常输出,但 ExecuteProcess(cmd=['echo', ...]) 被忽略,无法执行用于清理网络配置的 bash 脚本。
环境
ROS 2
解决办法
- 将
OnShutdown(on_shutdown=...)的参数改为一个可调用函数,函数签名包含event, context。 - 在该函数内部用
os.system('echo ...')或相同方式调用需要的 bash 脚本。 - 函数可返回
LogInfo记录关闭原因;但返回的ExecuteProcess仍不会执行。
原问题作者:TheotimeBlg;采纳答案作者:danzimmerman。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。
来源
本页事实对应的公开页面,以原文为准。