Added timesync endpoint for the arm velocity control #179
Added timesync endpoint for the arm velocity control #179khughes-bdai merged 7 commits intobdaiinstitute:mainfrom
Conversation
Pull Request Test Coverage Report for Build 18354379025Details
💛 - Coveralls |
|
Hey @khughes-bdai @tcappellari-bdai did you have a chance to check? |
|
Hey @kabirkedia, we can give this a test/review later this week. Sorry been a bit busy! |
|
Okay thank you! |
|
Hey @kabirkedia, so sorry for the delay in the review. First thing, there have been a few changes to My opinion on which way to proceed with this and bdaiinstitute/spot_ros2#734 would be to try the QOS change on the spot ros2 side, and on this side just pass the endpoint appropriately to the robot command. This to me seems like the simplest way to proceed. If this is not enough, then we can evaluate other options like explicitly passing timestamps. Thanks again for all this work, I think it will be super useful to get in! |
|
Hey @khughes-bdai I think I made the correct merge. Please check and let me know! |
|
Thanks @kabirkedia ! Looks like the pre-commit check is failing, could you please run |
|
Hey @khughes-bdai I ran pre-commit on this |
|
Let me know when you merge this since I need to resolve sub module conficts in the spot_ros2 |
khughes-bdai
left a comment
There was a problem hiding this comment.
Just needs a small change to pass CI! Other than that, looks good
spot_wrapper/wrapper.py
Outdated
| v_x: float, | ||
| v_y: float, | ||
| v_rot: float, | ||
| timestamp: float = now_sec(), |
There was a problem hiding this comment.
I found the source of the CI error. Calling now_sec in the arg list like this is causing the failure. Can you replace this with
| timestamp: float = now_sec(), | |
| timestamp: float | None = None, |
|
@khughes-bdai done! |
khughes-bdai
left a comment
There was a problem hiding this comment.
LGTM, thanks @kabirkedia ! I'll merge this in now
This PR addresses bdaiinstitute/spot_ros2#726.
Changes
Updated the arm velocity command callback to include proper timestamp handling.
Instead of restamping with time.time(), the ROS message’s header timestamp is now passed directly into the SDK.
Why this matters
Preserving the original ROS timestamp ensures that the commands reflect the actual time they were generated rather than the time they happened to be processed. This is especially important for teleop scenarios, where even small timing inconsistencies can affect responsiveness and control smoothness.