Ubuntu18.04+ROS Melodic下Turtlebot2控制脚本无报错终止问题排查
问题原因及修复方法
核心原因:类构造函数语法错误
Python 规定类的构造方法必须使用双下划线包裹的__init__,你代码中定义的是单下划线的_init_,该方法不会在类实例化时自动执行。因此你写在该方法内的ROS节点初始化、运动控制循环逻辑完全没有运行,程序实例化GoForward类后无后续可执行逻辑,就会直接退出,自然不会输出任何你定义的日志内容。
其他可能的潜在问题
- 脚本未赋予可执行权限:运行前需要执行
chmod +x goforward_mod.py给脚本加执行权限,否则可能出现静默运行失败的情况 - ROS Master 未启动:如果运行脚本前没有启动
roscore或者包含ROS Master的仿真launch文件,节点初始化会直接失败 - 速度控制话题不匹配:你当前发布的话题是
cmd_vel_mux/input/navi,如果你的Turtlebot 2仿真环境对应的速度控制话题名不一致,会导致机器人没有运动输出,但该问题不会造成程序直接终止
修复方法
直接将类中的def _init_(self):修改为def __init__(self):即可,其余逻辑无需调整,修改后重新运行脚本即可看到日志输出,机器人也会按照设定的参数旋转。
内容的提问来源于stack exchange,提问作者sm29
相关产品推荐
相关产品推荐

