ROS机器人-从零开始每日日志记录day8
·
这周很疲惫。为了将机器人接入上层调度系统,刚修好调度端目标点收发的时序问题,导航层又暴露出新的逻辑漏洞;导航状态机对齐了,调度端的反馈机制又出岔子。
一个人搞的要崩溃了。
本周没有什么新东西,积累一些经验叭!
1. AI辅助编程的正确姿势:让AI成为你的“调试搭档”
在使用AI生成或重构代码时,不要只盯着业务逻辑。我发现一个极其有效的Prompt技巧:
“请在实现上述功能的同时,添加适当粒度的日志输出(包含关键变量值、状态流转及时间戳),以便于后续定位问题。”
有什么益处?
- 可观测性前置:AI生成的代码往往“能跑但难调”。提前要求日志,相当于把调试工作左移。
- 上下文锚点:带有状态名的日志能帮助你快速定位到是哪个
if-else分支出了问题。 - 建议规范:可以让AI遵循ROS2的日志规范(如使用
RCLCPP_INFO/WARN/ERROR),并区分调试日志与运行日志的级别。
2. Systemd托管服务Restart卡住
现象:
使用systemctl restart my_robot_node时,命令长时间挂起无响应,过了很久才重启成功。
分析:
这不是systemd的bug,而是很可能程序“不听话”。
- systemd发送
SIGTERM信号请求进程优雅退出。 - 你的程序可能正卡在某个阻塞调用(如网络IO、死锁、或未处理的回调)中,也有可能不同的程序架构捕获
SIGTERM信号的方式不同,没有捕获并响应关闭信号。 - systemd默认等待 90秒(
TimeoutStopSec=90s)。 - 超时后,systemd才会发送
SIGKILL强制杀掉进程,然后才执行restart。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)