-
Notifications
You must be signed in to change notification settings - Fork 55
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
Joint Positions Not Updating in Real Time #226
Comments
hi @anselmo-parnada. Thank you for reporting this issue. This is quite odd indeed. Maybe this is specific to ros2 topic echo /lbr/state --field measured_joint_position The FRI provides another output, called One more thing you can do is to bring up the visualization and check if it updates accordingly ros2 launch lbr_bringup rviz.launch.py rviz_cfg:=config/hardware.rviz Thanks for checking! |
Hi @mhubii, I looked into it yesterday and have found a workaround for the issue. In line 63 in state.cpp, the measured joint position is copied to memory like so within std::memcpy(state_.measured_joint_position.data(), joint_position.data(),
(double) * fri_state_t::NUMBER_OF_JOINTS); But in line 23 of state.cpp , the measured joint position is copied to memory in a different way within std::memcpy(state_.measured_joint_position.data(), state.getMeasuredJointPosition(),
sizeof(double) * fri_state_t::NUMBER_OF_JOINTS); I'm no expert on your codebase, but it seems Based on this assumption, I changed line 63 in state.cpp to match line 23 of state.cpp and it seemed to allow the joint positions to be updated in real time! Not sure if this because of my version of FRI or ROS2, but it seemed to work. I think the Might be worth looking into. Hope this helps! |
Thank you for sharing your findings. The rational is open vs closed-loop. There is a configuration
When |
This can be an issue in impedance / cartesian impedance control. So maybe for verification @anselmo-parnada, did you run the robot in impedance control mode? Thank you very much for this |
From my experience, I do not think the issue is tied to the control mode. This issue occured regardless of the control mode chosen, as I experienced the issue on all the sine overlay demos within the lbr_demos_py package. I ensured the the client's yaml files and the LBRServer application were configured according to the documentation, too. |
For reference, I did first notice this issue when I was playing around with the wrench_sine_overlay.py demo. I'm not sure if that helps narrow things down. |
(cherry picked from commit 250611c)
hi @anselmo-parnada. This issue is now fixed on the I do want to apologize for the bug and hope it did not cause any damage. I do my best to support all different cases but am doing this mostly in my spare time. Do keep in mind to always execute in |
Hi everyone,
For my application, I need to use the real-time joint positions of the robot to feed it into my custom controller.
Upon trying all the sine overlay demos whilst echoing the LBRState in the ROS2 CLI, I found that that measured joint positions do not update in real time. The joint positions printed remain the same even though the robot is performing an oscillating motion. The joint positions will only update when I release the enable key on the SmartPad to halt the LBRServer program that was running on the controller.
Ideally, I would like to have these update with the motion. Oddly enough, the joint efforts are updated in real time, so it does not seem to be a connection issue.
Can somebody please help me with issue? Thank you in advance!
Some hardware/sofware specifications, for reference:
The text was updated successfully, but these errors were encountered: