diff --git a/src/model_car_control_alg_node.cpp b/src/model_car_control_alg_node.cpp index 28c23e3138e79ec2cd07327b0265dc6c19ae36d7..8fd656bfe84ab9cda33382e3bc16c6b9b5bea3de 100644 --- a/src/model_car_control_alg_node.cpp +++ b/src/model_car_control_alg_node.cpp @@ -125,8 +125,11 @@ void ModelCarControlAlgNode::cmd_vel_callback(const geometry_msgs::Twist::ConstP if(msg->angular.z==0.0) radius=std::numeric_limits<double>::max(); else - radius=msg->linear.x/msg->angular.z; - this->steer_angle_control=atan2(this->config_.axel_distance,radius); + radius=fabs(msg->linear.x/msg->angular.z); + if(msg->angular.z>0.0) + this->steer_angle_control=atan2(this->config_.axel_distance,radius); + else + this->steer_angle_control=atan2(this->config_.axel_distance,-radius); if(this->steer_angle_control>1.5707) this->steer_angle_control-=3.14159; if(this->steer_angle_control>this->config_.max_steer_angle)