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

[jtc] Improve trajectory sampling efficiency #1297

Conversation

RobertWilbrandt
Copy link
Contributor

This PR addresses the increasing effort required in Trajectory::sample() raised in #1293 by exploiting the monotonically increasing access time for any trajectory. Instead of scanning through the complete trajectory to find the relevant trajectory points for the current sampling time, the Trajectory class keeps track of the last accessed index and only searches from there on. This supersedes the proposed binary search in #1294 and is based on #474.

Based on the requests in #474, i added checks for the new trajectory state to existing tests and added a new test to make sure that the index is correctly reset when calling Trajectory::update(). I verified that this indeed solves the problem by re-running the trajectory from #1293 and again plotting the periods between write() calls in my hardware interface:

jtc_cmp

The upper plot shows the progression of the period before this change, the lower one the behavior wtih this PR applied. The large spikes at the beginning and end are the start and end of the trajectory, the spikes in the middle are probably a result of me testing this on my normal laptop without RT kernel and doing some things on the side.

Copy link
Contributor

@christophfroehlich christophfroehlich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

Copy link

codecov bot commented Sep 27, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 80.63%. Comparing base (7c89c17) to head (aa5aff5).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1297      +/-   ##
==========================================
+ Coverage   80.57%   80.63%   +0.06%     
==========================================
  Files         109      109              
  Lines        9553     9594      +41     
  Branches      832      834       +2     
==========================================
+ Hits         7697     7736      +39     
  Misses       1578     1578              
- Partials      278      280       +2     
Flag Coverage Δ
unittests 80.63% <100.00%> (+0.06%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...include/joint_trajectory_controller/trajectory.hpp 75.00% <100.00%> (+1.66%) ⬆️
joint_trajectory_controller/src/trajectory.cpp 91.30% <100.00%> (+0.14%) ⬆️
...int_trajectory_controller/test/test_trajectory.cpp 100.00% <100.00%> (ø)

... and 3 files with indirect coverage changes

@christophfroehlich
Copy link
Contributor

we have a deadlock now with the binaries: main fails because of the variants not being synced, and testing fails because of the broken API in the admittance controller 🙈 I triggered the debian image to be rebuilt, so we will have at least one green

@christophfroehlich
Copy link
Contributor

I'll merge that, the failing tests are already on master as well #1356 :/

@christophfroehlich christophfroehlich merged commit b0391e2 into ros-controls:master Nov 7, 2024
8 of 18 checks passed
@christophfroehlich christophfroehlich added backport-humble This label should be used by maintaines only! Label triggers PR backport to ROS2 humble. backport-iron This label should be used by maintaines only! Label triggers PR backport to ROS2 Iron. labels Nov 7, 2024
mergify bot pushed a commit that referenced this pull request Nov 7, 2024
---------

Co-authored-by: Christoph Fröhlich <[email protected]>
Co-authored-by: Bence Magyar <[email protected]>
(cherry picked from commit b0391e2)
mergify bot pushed a commit that referenced this pull request Nov 7, 2024
---------

Co-authored-by: Christoph Fröhlich <[email protected]>
Co-authored-by: Bence Magyar <[email protected]>
(cherry picked from commit b0391e2)
christophfroehlich pushed a commit that referenced this pull request Nov 7, 2024
---------

Co-authored-by: Christoph Fröhlich <[email protected]>
Co-authored-by: Bence Magyar <[email protected]>
(cherry picked from commit b0391e2)

Co-authored-by: RobertWilbrandt <[email protected]>
christophfroehlich pushed a commit that referenced this pull request Nov 11, 2024
---------

Co-authored-by: Christoph Fröhlich <[email protected]>
Co-authored-by: Bence Magyar <[email protected]>
(cherry picked from commit b0391e2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-humble This label should be used by maintaines only! Label triggers PR backport to ROS2 humble. backport-iron This label should be used by maintaines only! Label triggers PR backport to ROS2 Iron.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[jtc] Required time for controller update increases over the course of trajectory
4 participants