-
Notifications
You must be signed in to change notification settings - Fork 21
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
Compatibility with "Absolute Accuracy Compensation" #206
Comments
I'm going to mention #199 just to keep things linked, as it mentions the same/similar functions. |
I wasn't aware that function was available on the YRC. My first inclination is to say that this function should not be used with MotoROS2.
|
@ted-miller: while there doesn't appear to be a direct advantage to using absolute accuracy together with MotoROS2, as we indeed currently don't have any Cartesian interfaces, nor do we use Cartesian motion primitives while executing motion, could we perhaps find a way to make MotoROS2 compatible with it? As mentioned, we can't just wholesale switch to @yeu-geissdoerfer: are you mostly interested in just being able to use MotoROS2 on a YRC1000 with Absolute Accuracy enabled -- but not necessarily absolute accurate motions, or do you really want/need to also have absolute accurate motions with MotoROS2? The former could potentially be possible. The latter probably wouldn't be. |
I would be interested in absolute accurate motions with MotoROS2 as this seems to be particularly important for the HC series. |
Unless I've misunderstood, the absolute accurate motions will only improve Cartesian motions. MotoROS2 does not support those.
Your OP mentions a YRC1000 controller. Should that be a 1000 micro then? |
It is a YRC1000 controller, no micro. |
@yeu-geissdoerfer: it's clear it would be good for MotoROS2 to be able to at least still move a robot with abs acc compensation enabled. But that would be something different from being able to use abs acc compensation with motions controlled by MotoROS2. From the documentation (
From chapter 5:
Chapter 6 then continues to explain when abs acc should be disabled. It also specifically mentions pulse based motions. |
@gavanderhoorn what would be a scenario for you in which it is necessary to move the robot with MotoROS2 and Abs Acc Compensation activated? |
I can think of two:
basically it would include all motions performed by MotoROS2 which do not make use of / can't benefit from abs acc. Which would be all of its motion, IIUC. We're only using pulse based joint motion at this time. Edit: note I'm not claiming there is no value in abs acc per se. It would be good to find a way for it to be used with MotoROS2. I just wanted to make sure we are all on the same page. |
Created #207 to track the need to document compatibility with abs acc compensation. |
@yeu-geissdoerfer: just making sure: would you still like to see a work-around / solution to the issue you raised, or have the previous comments clarified things sufficiently? |
I have the following question: If our robots want to use Absolute Accuracy Compensation, they must first go through a special measurement procedure. This determines the actual DH parameters.
It would then be possible to compensate the geometric error without enabling the Absolute Accuracy Compensation on the robot controller. |
While I'm not sure whether this isn't actually an X-Y problem: yes, that could very likely be done. See the way ur_calibration does this, by converting their D-H parameters to a format compatible with URDF frames. These values can be stored in a A similar approach is used by some users of MotoROS1 (and Edit: a discussion on the MotoROS1 Discussion board about this: ros-industrial/motoman#459. |
According to this comment ros-industrial/motoman#459 (comment) UR actually extracts 6D parameters of each joint instead of D-H parameters. And use it to directly generate URDF model instead of correcting the default one. Which information is currently possible to extract from the robot using MotoSDK? Is it possible to extract information of calibrated kinematics from Absolute Accuracy? Main reason for this request is follows: To improve precision of Yaskawa robots in vision application users can either rely on external calibration solutions or use new Absolute Accuracy feature from Yaskawa directly. If MotoROS2 is incompatible with Absolute Accuracy, ROS2 users can at least extract calibration information and update default URDF model similar to what UR offers. That alone can already improve precision of Cartesian motions. |
We do allow for extracting DH parameters from the robot. motoros2/src/CmosParameterExtraction.h Line 205 in 10d8f00
But the DH parameters for the robot never get updated after a calibration. Normally, we only modify the encoder's zero-position when calibrating.
I don't know enough about this function yet. It is very new. We'll need to investigate more. |
Could I suggest we discuss calibrated URDFs and DH parameters in #210? It's all related to Abs Acc Compensation, but at the same time we're starting to go off-topic. |
@yeu-geissdoerfer: are you assisting @iydv with their request to make motions more accurate, and is that the context in which the question about abs acc compensation came up? (I ask because if the real desire is to make motion more accurate, calibrated URDFs would be something most likely more compatible with MotoROS2 than abs acc compensation, seeing as MotoROS2 doesn't use any Cartesian motion). |
@gavanderhoorn: Yes, I support @iydv in his request to make motions more accurate, and that's how my question about abs acc compensation came up. (We are now investigating the calibrated URDFs as this seems to be the most promising solution at the moment.) |
could we discuss approaches in #210? I don't believe there are any standard or best practices at the moment, and this seems like a good opportunity to design something for Yaskawa support packages. |
@yeu-geissdoerfer: would you have any update wrt Abs Acc compatibility? With #207 we basically added a section explaining there is currently no compatibility, but I'd be interested to learn what you've discovered so far. |
We had a case where we set the Absolute Accuracy Compensation to valid on a YRC1000, using controller SW version
YAS 5.20.00A-00
. Once we had taken all the necessary steps to enable the Absolute Accuracy Compensation Function, we were able to connect the microROS agent with the MotoROS2 driver.To test the accuracy of the motion, we used the last published position of the JointState.msg as the start position of our trajectory and defined a desired joint state as a goal. After the trajectory was sent to the driver, it immediately rejected it and sent the following Error Message
The failure is due to the fact, that the first point doesn't match the robot's current position which is checked in
motoros2/src/MotionControl.c
Lines 194 to 212 in b71ced5
Looking deeper into the code shows that there are two different MotoPlus functions used to determine the robots position
pulsePos
usesmpGetFBPulsePose()
(FB stands for feedback) -> current actual positionmotoros2/src/CtrlGroup.c
Lines 337 to 338 in b71ced5
curPos
usesmpGetPulsePose()
-> current commanded positionmotoros2/src/MotionControl.c
Line 189 in b71ced5
When we look into the "YRC1000 Options Instructions for Absolute Accuracy Compensation Function" the following is stated there
Absolute Accuracy Compensation Function
The absolute accuracy compensation function positions the TCP with high accuracy to a position specified in Cartesian coordinates.
Restrictions
When absolute accuracy compensation function is set to valid, only the reference value is available in the robot current position output function. The feedback value cannot be used!
Due to the Absolute Accuracy function, the actual axis position is displayed via the feedback value
mpGetFBPulsePose()
. However, this differs from the command positionmpGetPulsePose()
.The functions
Ros_PositionMonitor_UpdateLocation()
andRos_Controller_IsInMotion()
are also affected, since they also usempGetFBPulsePose()
.Question
Which MotoPlus function can be used instead, since
mpGetFBPulsePose()
has a trailing error?The text was updated successfully, but these errors were encountered: