acceleration_cmd_closeloop = speed_pid_controller_.Control(speed_controller_input_limited, ts); debug->set_pid_saturation_status( speed_pid_controller_.IntegratorSaturationStatus()); if (enable_leadlag) { acceleration_cmd_closeloop = speed_leadlag_controller_.Control(acceleration_cmd_closeloop, ts); debug->set_leadlag_saturation_status( speed_leadlag_controller_.InnerstateSaturationStatus()); }
时间: 2024-01-18 19:02:29 浏览: 62
这段代码对闭环加速度命令值进行控制计算。
首先,使用speed_pid_controller_.Control()函数计算出速度PID控制器的输出值,并将其赋值给acceleration_cmd_closeloop。该函数使用speed_controller_input_limited和时间间隔ts作为参数进行控制计算。
接下来,通过调用speed_pid_controller_.IntegratorSaturationStatus()获取速度PID控制器的积分饱和状态,并将其设置到debug变量的pid_saturation_status字段中,用于调试或记录。
然后,如果enable_leadlag为true,表示启用了Leadlag控制,将使用speed_leadlag_controller_.Control()函数对acceleration_cmd_closeloop进行进一步的控制计算。该函数使用acceleration_cmd_closeloop和时间间隔ts作为参数进行控制计算,并将结果重新赋值给acceleration_cmd_closeloop。
最后,通过调用speed_leadlag_controller_.InnerstateSaturationStatus()获取速度Leadlag控制器的内部状态饱和状态,并将其设置到debug变量的leadlag_saturation_status字段中,用于调试或记录。
相关问题
debug->set_station_error_limited(station_error_limited); debug->set_speed_offset(speed_offset); debug->set_speed_controller_input_limited(speed_controller_input_limited); debug->set_acceleration_cmd(acceleration_cmd); debug->set_throttle_cmd(throttle_cmd); debug->set_brake_cmd(brake_cmd); debug->set_acceleration_lookup(acceleration_lookup); debug->set_acceleration_lookup_limit(acceleration_lookup_limit); debug->set_speed_lookup(chassis_->speed_mps()); debug->set_calibration_value(calibration_value); debug->set_acceleration_cmd_closeloop(acceleration_cmd_closeloop);
这段代码用于设置调试信息(debug)对象的各个属性值,将相关变量的值赋给对应的属性。
具体来说,代码中通过debug对象的set方法将以下变量的值分别赋给对应的属性:
- station_error_limited的值赋给station_error_limited属性。
- speed_offset的值赋给speed_offset属性。
- speed_controller_input_limited的值赋给speed_controller_input_limited属性。
- acceleration_cmd的值赋给acceleration_cmd属性。
- throttle_cmd的值赋给throttle_cmd属性。
- brake_cmd的值赋给brake_cmd属性。
- acceleration_lookup的值赋给acceleration_lookup属性。
- acceleration_lookup_limit的值赋给acceleration_lookup_limit属性。
- chassis_->speed_mps()的值赋给speed_lookup属性。
- calibration_value的值赋给calibration_value属性。
- acceleration_cmd_closeloop的值赋给acceleration_cmd_closeloop属性。
这段代码的目的是将相关变量的值记录到调试信息对象中,方便后续调试和分析。具体的实现细节可能因为代码上下文而有所不同。
if (FLAGS_enable_csv_debug && speed_log_file_ != nullptr) { fprintf(speed_log_file_, "%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f," "%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %d,\r\n", debug->station_reference(), debug->station_error(), station_error_limited, debug->preview_station_error(), debug->speed_reference(), debug->speed_error(), speed_controller_input_limited, debug->preview_speed_reference(), debug->preview_speed_error(), debug->preview_acceleration_reference(), acceleration_cmd_closeloop, acceleration_cmd, debug->acceleration_lookup(), debug->acceleration_lookup_limit(), debug->speed_lookup(), calibration_value, throttle_cmd, brake_cmd, debug->is_full_stop()); }
这段代码用于将调试信息(debug)中的相关属性值以CSV格式写入到speed_log_file_文件中,前提是FLAGS_enable_csv_debug为真且speed_log_file_不为空。
具体来说,代码使用fprintf函数将以下属性值按照指定的格式写入到文件中:
- debug->station_reference()
- debug->station_error()
- station_error_limited
- debug->preview_station_error()
- debug->speed_reference()
- debug->speed_error()
- speed_controller_input_limited
- debug->preview_speed_reference()
- debug->preview_speed_error()
- debug->preview_acceleration_reference()
- acceleration_cmd_closeloop
- acceleration_cmd
- debug->acceleration_lookup()
- debug->acceleration_lookup_limit()
- debug->speed_lookup()
- calibration_value
- throttle_cmd
- brake_cmd
- debug->is_full_stop()
每个属性值都会按照%.6f的格式进行格式化,并以逗号分隔。最后,使用\r\n进行换行。
这段代码的目的是将调试信息中的相关属性值以CSV格式记录到文件中,方便后续分析和查看。具体的实现细节可能因为代码上下文而有所不同。
阅读全文