-
Notifications
You must be signed in to change notification settings - Fork 31
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 integration for AEA3 encoder #214
Conversation
@sgiraz |
We have seen that the fork history is too wild so that we're forced to make use of the Squash and merge button at merge time. cc @marcoaccame |
I've just begun to look at this PR. I will come back to you later tomorrow maybe w/ some questions / changes / comments. You also wrote:
Let me also verify if we can do this check together, so we can have a solution which is guaranteed to work on all ETH boards. |
together w/ @sgiraz we rebased the
and finally we can merge w/ Squash & Merge option |
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.
@sgiraz and I need to update application versions and do some extra checks / tests.
it uses macro TEST_AEA3 to shape used code.
and also added more heap
…he way to save the bits retrieved from the sensor in hal_spiencoder.c
… detected. Now it will not rise a spike when the encoder complete a turn.
it uses macro TEST_AEA3 to shape used code.
and also added more heap
…he way to save the bits retrieved from the sensor in hal_spiencoder.c
…(disabled by default).
…ease HEAP to 63K and STACK to 12K increased application version to be one more than latest devel
After the above change request, @sgiraz and I:
Now the PR can be merged |
This PR contains the new interfaces to interact with the new AEA3 encoder.
Why we should use AEA3 encoders
What we need to know before using the new FW (⚠️ )
During the integration of the new features, we spotted a critical HW issue that caused many warnings related to a spike detection in the
yarprobotinterface
.After a long inspection, this problem has been solved with a temporary HW solution applied on a single
mc4plus
.Once the solution will be confirmed, all the other boards will be updated as well.Note: The new FW has been tested successfully on both AEA2 and AEA3 encoders. So it is back-compatible with the older encoders as well.
The following tests have been performed on an ad-hoc designed setup:
yarprobotinterface
andyarpmotorgui
to control the motor in PWM mode at different duty cycle values changing the direction alternatelyyarp
application that moves the joint in position control mode, providing specific positions and logging the feedback from the encoder.The result of the last test is reported below:
Other tests have been performed either as a variant of those above or using the
yarpmotorgui
manually.Note for FW developers
Dependencies
This PR is linked with a PR on
icub-firmware-shared
and with a PR onicub-firmware-build
.Tests
We (@sgiraz and @marcoaccame) performed exhaustive tests of this code both on dedicated setups, on
iCubGenova02
and oniCubErzelli02
(courtesy of @Nicogene). After such tests we are confident that the code of this PR and the associated binaries can be merged.NOTE
Since there are no bits-state and no zero-padded bits guarantee, using AEA3 in SSI mode we aren't able to check the validity of the reading as we made for AEA2.
[@marcoaccame adds:] As a result of that, the function
hal_spiencoder_get_value2()
always returnshal_res_OK
even if there is no encoder attached. This issue is to be addressed by a further PR.