Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Polishing up for DART 5.0 #404

Merged
merged 21 commits into from
Jun 15, 2015
Merged

Polishing up for DART 5.0 #404

merged 21 commits into from
Jun 15, 2015

Conversation

jslee02
Copy link
Member

@jslee02 jslee02 commented Jun 14, 2015

This pull request

  • removes the deprecated API
  • suppresses all the warnings from gcc and clang (and most of warnings from cppcheck 1.67)
  • replace NULL with nullptr.

@jslee02 jslee02 added this to the Release DART 5.0 milestone Jun 14, 2015
@mxgrey
Copy link
Member

mxgrey commented Jun 15, 2015

I actually think we should keep computeForwardKinematics(), just in case someone has a time-sensitive application and wants to perform all the FK computations during a particular time window rather than waiting for it to be computed at the time that it's needed.

One example would be a real time controller. Let's say it gets encoder data at time t0 but needs to wait until t1 before it receives the force-torque sensor data that it needs in order to compute output for an operational space controller. Instead of being idle from t0 to t1, it could use that time to compute the FK by calling computeForwardKinematics().

@jslee02
Copy link
Member Author

jslee02 commented Jun 15, 2015

It makes sense. I'll restore it with some comment.

@jslee02
Copy link
Member Author

jslee02 commented Jun 15, 2015

I just combined your comments as:

  /// Compute forward kinematics
  ///
  /// In general, this function doesn't need to called for forward kinematics
  /// update. Forward kinematics will always be computed when it's needed and
  /// will only perform the computations that are necessary for what the user
  /// requests. This works by performing some bookkeeping internally with dirty
  /// flags whenever a position, velocity, or acceleration gets set, either
  /// internally or by the user.
  ///
  /// On one hand, this results in some overhead due to the extra effort of
  /// bookkeeping, but on the other hand we have much greater code safety, and
  /// in some cases performance can be dramatically improved with the auto-
  /// updating. For example, this function is inefficient when only one portion
  /// of the BodyNodes needed to be updated rather than the entire Skeleton,
  /// which is common when performing inverse kinematics on a lib or on some
  /// subsection of a Skeleton.
  ///
  /// This function might need useful in case that the user wants to perform all
  /// the forward kinematics computations during a particular time window rather
  /// than waiting for it to be computed at the time that it's needed.
  ///
  /// One example would be a real time controller. Let's say it gets encoder
  /// data at time t0 but needs to wait until t1 before it receives the
  /// force-torque sensor data that it needs in order to compute output for an
  /// operational space controller. Instead of being idle from t0 to t1, it
  /// could use that time to compute the forward kinematics by calling this
  /// function.

Could you take a look and revise it if you want?

@mxgrey
Copy link
Member

mxgrey commented Jun 15, 2015

Looks good. I just have a few small grammatical changes:

  /// Compute forward kinematics
  ///
  /// In general, this function doesn't need to be called for forward kinematics to
  /// update. Forward kinematics will always be computed when it's needed and
  /// will only perform the computations that are necessary for what the user
  /// requests. This works by performing some bookkeeping internally with dirty
  /// flags whenever a position, velocity, or acceleration is set, either
  /// internally or by the user.
  ///
  /// On one hand, this results in some small overhead due to the extra effort of
  /// bookkeeping, but on the other hand we have much greater code safety, and
  /// in some cases performance can be dramatically improved with the auto-
  /// updating. For example, this function is inefficient when only one portion
  /// of the BodyNodes needed to be updated rather than the entire Skeleton,
  /// which is common when performing inverse kinematics on a limb or on some
  /// subsection of a Skeleton.
  ///
  /// This function might be useful in a case where the user wants to perform all
  /// the forward kinematics computations during a particular time window rather
  /// than waiting for it to be computed at the exact time that it's needed.
  ///
  /// One example would be a real time controller. Let's say a controller gets 
  /// encoder data at time t0 but needs to wait until t1 before it receives the
  /// force-torque sensor data that it needs in order to compute the output for 
  /// an operational space controller. Instead of being idle from t0 to t1, it
  /// could use that time to compute the forward kinematics by calling this
  /// function.

@jslee02
Copy link
Member Author

jslee02 commented Jun 15, 2015

Thanks!

jslee02 added a commit that referenced this pull request Jun 15, 2015
Polishing up for DART 5.0
@jslee02 jslee02 merged commit dd415ca into release-5.0 Jun 15, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants