message: idm classic maintain first acceleration
diff: #include <cmath>
  #include <limits>
  #include <memory>
  -#include <utility>
  #include <tuple>
  +#include <utility>
  #include "bark/commons/transformation/frenet.hpp"
  #include "bark/world/observed_world.hpp"
  @@ -29,11 +29,9 @@ using bark::world::objects::AgentPtr;
  using bark::world::map::LaneCorridor;
  using bark::world::map::LaneCorridorPtr;
  -
  std::tuple<Trajectory, Action> BehaviorIDMClassic::GenerateTrajectory(
  const world::ObservedWorld &observed_world,
  - const LaneCorridorPtr& lane_corr,
  - const IDMRelativeValues& rel_values,
  + const LaneCorridorPtr &lane_corr, const IDMRelativeValues &rel_values,
  double dt) const {
  double t_i = 0., acc = 0.;
  geometry::Line line = lane_corr->GetCenterLine();
  @@ -42,6 +40,7 @@ std::tuple<Trajectory, Action> BehaviorIDMClassic::GenerateTrajectory(
  dynamic::State ego_vehicle_state = observed_world.CurrentEgoState();
  geometry::Point2d pose = observed_world.CurrentEgoPosition();
  + double initial_acceleration = 0.0f;
  if (!line.obj_.empty()) {
  // adding state at t=0
  traj.block<1, StateDefinition::MIN_STATE_SIZE>(0, 0) =
  @@ -59,10 +58,14 @@ std::tuple<Trajectory, Action> BehaviorIDMClassic::GenerateTrajectory(
  std::tie(acc, rel_distance) =
  GetTotalAcc(observed_world, rel_values, rel_distance, dt);
  BARK_EXPECT_TRUE(!std::isnan(acc));
  + // Set initial acceleration to maintain action value
  + if (i == 1) {
  + initial_acceleration = acc;
  + }
  s_i += 0.5f * acc * dt * dt + vel_i * dt;
  const float temp_velocity = vel_i + acc * dt;
  - vel_i = std::max(std::min(
  - temp_velocity, GetMaxVelocity()), GetMinVelocity());
  + vel_i =
  + std::max(std::min(temp_velocity, GetMaxVelocity()), GetMinVelocity());
  t_i = static_cast<float>(i) * dt + start_time;
  geometry::Point2d traj_point = GetPointAtS(line, s_i);
  float traj_angle = GetTangentAngleAtS(line, s_i);
  @@ -81,7 +84,7 @@ std::tuple<Trajectory, Action> BehaviorIDMClassic::GenerateTrajectory(
  }
  }
  - Action action(acc);
  + Action action(initial_acceleration);
  return std::tuple<Trajectory, Action>(traj, action);
  }
  