int main(int argc, char **argv) {
    ros::init(argc, argv, "controller_debugger");
    ros::NodeHandle node_handle;
    Debugger debugger;

    ros::Subscriber cte_subscriber = node_handle.subscribe("controller/cross_track_error", 2,
                                     &Debugger::updateCTEPlotData, &debugger);
    ros::Subscriber pose_subscriber = node_handle.subscribe("localization/pose", 2,
                                      &Debugger::updateCurrentPath, &debugger);
    ros::Subscriber path_subscriber = node_handle.subscribe("local_planner/path", 2,
                                      &Debugger::updateTargetPath, &debugger);

    ros::Rate loop_rate(100);
    while (ros::ok()) {
        int debug_mode = 0;
        node_handle.getParam("/controller_debugger/debug_mode", debug_mode);
        debugger.display(debug_mode);
        ros::spinOnce();
        loop_rate.sleep();
    }
}