-
Notifications
You must be signed in to change notification settings - Fork 310
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
Add doc page about joint kinematics #1497
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #1497 +/- ##
===========================================
- Coverage 87.70% 62.67% -25.04%
===========================================
Files 102 96 -6
Lines 8702 11311 +2609
Branches 780 8151 +7371
===========================================
- Hits 7632 7089 -543
+ Misses 790 715 -75
- Partials 280 3507 +3227
Flags with carried forward coverage won't be shown. Click here to find out more. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've reviewed the part of mimic joints and left some comments
Co-authored-by: Sai Kishor Kothakota <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some comments about the transmission interface
Thanks for the nice doc
URDF is the default format to describe robot kinematics in ROS. However, only serial kinematic chains are supported, except for the so-called mimic joints. | ||
See the `URDF specification <http://wiki.ros.org/urdf/XML/joint>`__ for more details. For the mimic joints, we can read | ||
|
||
This tag is used to specify that the defined joint mimics another existing joint. The value of this joint can be computed as value = multiplier * other_joint_value + offset. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok 👍
|
||
Transmission Interface | ||
####################### | ||
Mechanical transmissions transform effort/flow variables such that their product (power) remains constant. Effort variables for linear and rotational domains are force and torque; while the flow variables are respectively linear velocity and angular velocity. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if I understand this part properly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was copied from here :D
ros2_control/transmission_interface/include/transmission_interface/transmission.hpp
Lines 29 to 38 in 16fbde3
* Mechanical transmissions transform effort/flow variables such that their product (power) remains | |
* constant. Effort variables for linear and rotational domains are \e force and \e torque; while | |
* the flow variables are respectively linear velocity and angular velocity. | |
* | |
* In robotics it is customary to place transmissions between actuators and joints. This interface | |
* adheres to this naming to identify the input and output spaces of the transformation. The | |
* provided interfaces allow bidirectional mappings between actuator and joint spaces for effort, | |
* velocity and position. Position is not a power variable, but the mappings can be implemented | |
* using the velocity map plus an integration constant representing the offset between actuator and | |
* joint zeros. |
Any suggestions? Then I'd change that in the docstring, too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well if it is like that in the original docs it's fine.
At least for me the product he is talking about is not clear, I see that point of energy conservation, but within the transmission plugin you transform also position and velocity
Co-authored-by: Sai Kishor Kothakota <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
--------- Co-authored-by: Sai Kishor Kothakota <[email protected]> (cherry picked from commit e122f71)
--------- Co-authored-by: Sai Kishor Kothakota <[email protected]> (cherry picked from commit e122f71)
--------- Co-authored-by: Sai Kishor Kothakota <[email protected]> (cherry picked from commit e122f71) Co-authored-by: Christoph Fröhlich <[email protected]>
--------- Co-authored-by: Sai Kishor Kothakota <[email protected]> (cherry picked from commit e122f71) Co-authored-by: Christoph Fröhlich <[email protected]>
I summarized some results of discussions about mimic joints and how I understand that.
Note, this is different than implemented currently with
ros2_control/hardware_interface/src/mock_components/generic_system.cpp
Lines 568 to 576 in 16fbde3
This came from the time where we defined the mimic joints in the ros2_control tag. IMHO, it does not make sense now using the URDF-specification, where the behavior of the mimic joint changes by switching the command interface from position to velocity, because we use the offset and calculate
velocity = multiplier * other_joint_velocity + offset
Also related to ros-controls/gazebo_ros2_control#297 and ros-controls/gz_ros2_control#276
I also included transmission interfaces, to give an overview what they are and what they aren't (they were not mentioned once in the docs).