blob: d83fdc29c0d16fe307f02887a441d7fee35d07f6 [file] [log] [blame]
commit 19f5f19f48def0a2c5808a7266151eb8e06d7b63
Author: Steven Peters <scpeters@osrfoundation.org>
Date: Tue Apr 14 18:10:36 2015 -0700
Use Joint::SetParam for joint velocity motors
Before gazebo5, Joint::SetVelocity and SetMaxForce
were used to set joint velocity motors.
The API has changed in gazebo5, to use Joint::SetParam
instead.
The functionality is still available through the SetParam API.
diff --git a/gazebo_plugins/src/gazebo_ros_diff_drive.cpp b/gazebo_plugins/src/gazebo_ros_diff_drive.cpp
index 004fb90..68265a8 100644
--- a/gazebo_plugins/src/gazebo_ros_diff_drive.cpp
+++ b/gazebo_plugins/src/gazebo_ros_diff_drive.cpp
@@ -100,8 +100,8 @@ void GazeboRosDiffDrive::Load ( physics::ModelPtr _parent, sdf::ElementPtr _sdf
joints_.resize ( 2 );
joints_[LEFT] = gazebo_ros_->getJoint ( parent, "leftJoint", "left_joint" );
joints_[RIGHT] = gazebo_ros_->getJoint ( parent, "rightJoint", "right_joint" );
- joints_[LEFT]->SetMaxForce ( 0, wheel_torque );
- joints_[RIGHT]->SetMaxForce ( 0, wheel_torque );
+ joints_[LEFT]->SetParam ( "fmax", 0, wheel_torque );
+ joints_[RIGHT]->SetParam ( "fmax", 0, wheel_torque );
@@ -170,8 +170,8 @@ void GazeboRosDiffDrive::Reset()
pose_encoder_.theta = 0;
x_ = 0;
rot_ = 0;
- joints_[LEFT]->SetMaxForce ( 0, wheel_torque );
- joints_[RIGHT]->SetMaxForce ( 0, wheel_torque );
+ joints_[LEFT]->SetParam ( "fmax", 0, wheel_torque );
+ joints_[RIGHT]->SetParam ( "fmax", 0, wheel_torque );
}
void GazeboRosDiffDrive::publishWheelJointState()
@@ -214,15 +214,15 @@ void GazeboRosDiffDrive::publishWheelTF()
void GazeboRosDiffDrive::UpdateChild()
{
- /* force reset SetMaxForce since Joint::Reset reset MaxForce to zero at
+ /* force reset SetParam("fmax") since Joint::Reset reset MaxForce to zero at
https://bitbucket.org/osrf/gazebo/src/8091da8b3c529a362f39b042095e12c94656a5d1/gazebo/physics/Joint.cc?at=gazebo2_2.2.5#cl-331
(this has been solved in https://bitbucket.org/osrf/gazebo/diff/gazebo/physics/Joint.cc?diff2=b64ff1b7b6ff&at=issue_964 )
and Joint::Reset is called after ModelPlugin::Reset, so we need to set maxForce to wheel_torque other than GazeboRosDiffDrive::Reset
(this seems to be solved in https://bitbucket.org/osrf/gazebo/commits/ec8801d8683160eccae22c74bf865d59fac81f1e)
*/
for ( int i = 0; i < 2; i++ ) {
- if ( fabs(wheel_torque -joints_[i]->GetMaxForce ( 0 )) > 1e-6 ) {
- joints_[i]->SetMaxForce ( 0, wheel_torque );
+ if ( fabs(wheel_torque -joints_[i]->GetParam ( "fmax", 0 )) > 1e-6 ) {
+ joints_[i]->SetParam ( "fmax", 0, wheel_torque );
}
}
@@ -248,8 +248,8 @@ void GazeboRosDiffDrive::UpdateChild()
( fabs ( wheel_speed_[LEFT] - current_speed[LEFT] ) < 0.01 ) ||
( fabs ( wheel_speed_[RIGHT] - current_speed[RIGHT] ) < 0.01 ) ) {
//if max_accel == 0, or target speed is reached
- joints_[LEFT]->SetVelocity ( 0, wheel_speed_[LEFT]/ ( wheel_diameter_ / 2.0 ) );
- joints_[RIGHT]->SetVelocity ( 0, wheel_speed_[RIGHT]/ ( wheel_diameter_ / 2.0 ) );
+ joints_[LEFT]->SetParam ( "vel", 0, wheel_speed_[LEFT]/ ( wheel_diameter_ / 2.0 ) );
+ joints_[RIGHT]->SetParam ( "vel", 0, wheel_speed_[RIGHT]/ ( wheel_diameter_ / 2.0 ) );
} else {
if ( wheel_speed_[LEFT]>=current_speed[LEFT] )
wheel_speed_instr_[LEFT]+=fmin ( wheel_speed_[LEFT]-current_speed[LEFT], wheel_accel * seconds_since_last_update );
@@ -264,8 +264,8 @@ void GazeboRosDiffDrive::UpdateChild()
// ROS_INFO("actual wheel speed = %lf, issued wheel speed= %lf", current_speed[LEFT], wheel_speed_[LEFT]);
// ROS_INFO("actual wheel speed = %lf, issued wheel speed= %lf", current_speed[RIGHT],wheel_speed_[RIGHT]);
- joints_[LEFT]->SetVelocity ( 0,wheel_speed_instr_[LEFT] / ( wheel_diameter_ / 2.0 ) );
- joints_[RIGHT]->SetVelocity ( 0,wheel_speed_instr_[RIGHT] / ( wheel_diameter_ / 2.0 ) );
+ joints_[LEFT]->SetParam ( "vel", 0, wheel_speed_instr_[LEFT] / ( wheel_diameter_ / 2.0 ) );
+ joints_[RIGHT]->SetParam ( "vel", 0, wheel_speed_instr_[RIGHT] / ( wheel_diameter_ / 2.0 ) );
}
last_update_time_+= common::Time ( update_period_ );
}
diff --git a/gazebo_plugins/src/gazebo_ros_skid_steer_drive.cpp b/gazebo_plugins/src/gazebo_ros_skid_steer_drive.cpp
index fdaf61f..a24aba5 100644
--- a/gazebo_plugins/src/gazebo_ros_skid_steer_drive.cpp
+++ b/gazebo_plugins/src/gazebo_ros_skid_steer_drive.cpp
@@ -256,10 +256,10 @@ namespace gazebo {
gzthrow(error);
}
- joints[LEFT_FRONT]->SetMaxForce(0, torque);
- joints[RIGHT_FRONT]->SetMaxForce(0, torque);
- joints[LEFT_REAR]->SetMaxForce(0, torque);
- joints[RIGHT_REAR]->SetMaxForce(0, torque);
+ joints[LEFT_FRONT]->SetParam("fmax", 0, torque);
+ joints[RIGHT_FRONT]->SetParam("fmax", 0, torque);
+ joints[LEFT_REAR]->SetParam("fmax", 0, torque);
+ joints[RIGHT_REAR]->SetParam("fmax", 0, torque);
// Make sure the ROS node for Gazebo has already been initialized
if (!ros::isInitialized())
@@ -308,10 +308,10 @@ namespace gazebo {
// Update robot in case new velocities have been requested
getWheelVelocities();
- joints[LEFT_FRONT]->SetVelocity(0, wheel_speed_[LEFT_FRONT] / (wheel_diameter_ / 2.0));
- joints[RIGHT_FRONT]->SetVelocity(0, wheel_speed_[RIGHT_FRONT] / (wheel_diameter_ / 2.0));
- joints[LEFT_REAR]->SetVelocity(0, wheel_speed_[LEFT_REAR] / (wheel_diameter_ / 2.0));
- joints[RIGHT_REAR]->SetVelocity(0, wheel_speed_[RIGHT_REAR] / (wheel_diameter_ / 2.0));
+ joints[LEFT_FRONT]->SetParam("vel", 0, wheel_speed_[LEFT_FRONT] / (wheel_diameter_ / 2.0));
+ joints[RIGHT_FRONT]->SetParam("vel", 0, wheel_speed_[RIGHT_FRONT] / (wheel_diameter_ / 2.0));
+ joints[LEFT_REAR]->SetParam("vel", 0, wheel_speed_[LEFT_REAR] / (wheel_diameter_ / 2.0));
+ joints[RIGHT_REAR]->SetParam("vel", 0, wheel_speed_[RIGHT_REAR] / (wheel_diameter_ / 2.0));
last_update_time_+= common::Time(update_period_);
diff --git a/gazebo_plugins/src/gazebo_ros_tricycle_drive.cpp b/gazebo_plugins/src/gazebo_ros_tricycle_drive.cpp
index 97c5ebb..0e83d2a 100644
--- a/gazebo_plugins/src/gazebo_ros_tricycle_drive.cpp
+++ b/gazebo_plugins/src/gazebo_ros_tricycle_drive.cpp
@@ -108,8 +108,8 @@ void GazeboRosTricycleDrive::Load ( physics::ModelPtr _parent, sdf::ElementPtr _
odomOptions["world"] = WORLD;
gazebo_ros_->getParameter<OdomSource> ( odom_source_, "odometrySource", odomOptions, WORLD );
- joint_wheel_actuated_->SetMaxForce ( 0, wheel_torque_ );
- joint_steering_->SetMaxForce ( 0, wheel_torque_ );
+ joint_wheel_actuated_->SetParam ( "fmax", 0, wheel_torque_ );
+ joint_steering_->SetParam ( "fmax", 0, wheel_torque_ );
// Initialize update rate stuff
@@ -235,7 +235,7 @@ void GazeboRosTricycleDrive::motorController ( double target_speed, double targe
applied_speed = current_speed - wheel_deceleration_ * dt;
}
}
- joint_wheel_actuated_->SetVelocity ( 0, applied_speed );
+ joint_wheel_actuated_->SetParam ( "vel", 0, applied_speed );
double current_angle = joint_steering_->GetAngle ( 0 ).Radian();
if(target_angle > +M_PI / 2.0) target_angle = +M_PI / 2.0;
@@ -249,7 +249,7 @@ void GazeboRosTricycleDrive::motorController ( double target_speed, double targe
} else {
applied_steering_speed = -steering_speed_;
}
- joint_steering_->SetVelocity ( 0, applied_steering_speed );
+ joint_steering_->SetParam ( "vel", 0, applied_steering_speed );
}else {
#if GAZEBO_MAJOR_VERSION >= 4
joint_steering_->SetPosition ( 0, applied_angle );