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
Fix/Round-up of Bug-Fixes and some Missing Utility Features #1169
Fix/Round-up of Bug-Fixes and some Missing Utility Features #1169
Conversation
…eatures. Bug-fixes: * Bug-fix for openpnp#1143 (null pointer exception when part is missing in feeder) * Parts table does not update on part property changes. * Inconsistent FIRMWARE detection in GcodeDriverSolutions * Edit Pipeline does not wait for machine in ReferencePushPullFeederConfigurationWizard, resulting in the lighting actuator failing. * Test Alignment in ReferenceBottomVisionPartConfigurationWizard did not conserve rotation of selected nozzle. * Nozzle tip calibration failed the homing cycle if enabled on homing, creating a chicken egg situation during machine setup. Added an option to switch off. Improved error messages. This required UiUtils.messageBoxOnExceptionLater() for deferred GUI tasks (in this case deferred throws/error messages). * null check missing in AbstractHeadMountable.toHeadLocation(), refactored/extracted AbstractHeadMountable.applyConfiguration() for future use. * Pipeline stages that throw exceptions are logged for easier diagnostics. The underlying issue that some exceptions should fail the pipeline immediately is still open. * In the Pipeline Editor: custom Object type property sheet handlers need resetting when switching stages. Missing features/utilities: * Machine Setup tree recursive/topological home() is missing from NozzleTip. * compareTo() missing in Length * getXyzLengthTo() i.e. length including Z missing in Location * Added Location.origin constant as the (0, 0, 0, 0) coordinate, for easy use in the form vector.getXyzLengthTo(Location.origin) to measure vector length. * multiply() missing in Location * permutateNozzle() missing in Location, also fixed parameter name in permutateCamera() * Added ImageUtils.clone() to deep copy a BufferedImage.
Nice PR @markmaker - and thank you for taking the time to split it up. It makes it so much easier to review one or two before bed :) |
I'm going to revert this for now because merging it caused conflicts. I'll finish reviewing all of the PRs tomorrow and then merge them in the correct order to avoid conflicts. |
Hello. After loading releases that contain PR#1169 the part test alignment button is behaving differently. I reverted the changes of the two lines of code in ReferenceBottomVisionPartConfigurationWizard(see below) and then it works as before. From the comment in the description of bug fixes in PR#1169: Perhaps there is a problem with my setup of the shared C or something else in my configuration that did not show up before this PR
-----> Pre PR#1169 null, new Location(LengthUnit.Millimeters), nozzle);
------> Pre PR#1169 nozzle, 0.);
` |
Hi @my-3d-cnc-pnp, That change was intentional to allow alignment testing at the chosen nominal nozzle angle. Otherwise, you could not actually test alignment at non-zero angles and especially not effectively test the pre-rotate option (i.e. what it does differently). The idea is to set the wanted nominal angle with the Jog The ability to test Alignment (especially pre-rotate) at various angles is useful both for developers and for users, I was missing it many times in both situations. Furthermore, when a part height is unknown, the auto-focus (see #1171) can now sense it in Alignment, and it is important that no unnecessary rotation takes place when doing so, therefore it was again useful for testing. Do you think this is very confusing? I could instead add a "Test angle" field to the GUI. Just to point out: the change was documented, see the Description of both the original PR #1164 ...
... and #1169 (this one):
_Mark |
Improved it here: |
@my-3d-cnc-pnp, |
Upgraded and tested. Now works as expected. Perfect! The addition of the "Test Angle" field makes the new feature obvious and the "angle" variable in the code fixed the error accumulation that confused me. Thank you as always |
I'm using a very old Camtasia version to record from screen. I'm sure there are better/free solutions available nowadays. It just creates a video of what happens on the screen. Then I use a special ffmpeg command line to convert to On Windows I put the following in
So I can drop files to convert on it. Obviously, _Mark |
Description
This is a round-up of bug-fixes and conceptually missing utility features. These have popped up while working on #1164 (which will likely be re-submitted as a new one later).
Bug-fixes
GcodeDriverSolutions
.ReferencePushPullFeederConfigurationWizard
, resulting in the lighting actuator failing.ReferenceBottomVisionPartConfigurationWizard
did not conserve rotation of selected nozzle.UiUtils.messageBoxOnExceptionLater()
for deferred GUI tasks (in this case deferred throws/error messages).null
check missing inAbstractHeadMountable.toHeadLocation()
, refactored/extractedAbstractHeadMountable.applyConfiguration()
for future use.Object
type property sheet handlers need resetting when switching stages.Missing conceptual/utility features
NozzleTip.home()
for Machine Setup tree topological homing.Length.compareTo()
Location.getXyzLengthTo()
i.e. length including Z coordinate.Location.origin
constant as the (0, 0, 0, 0) coordinate, for easy use in the formvector.getXyzLengthTo(Location.origin)
to measure vector length.Location.multiply()
similar to the other operations.Head.permutateNozzle()
same as for cameras, Also fixed parameter name inpermutateCamera()
ImageUtils.clone()
to deep copy aBufferedImage
.Justification
This is the first break-out of #1164 trying to implement this input by @vonnieda.
I found it acceptable to put these in one PR as these are almost entirely one class = one fix and small (counting class+Wizards as one).
Instructions for Use
The only visible change is the new option Fail Homing? on the nozzle tip calibration.
Implementation Details
mvn test
.org.openpnp.spi
ororg.openpnp.model
packages:Head.permutateNozzle()
andNozzleTip.home()
andLength
andLocation
additions as documented.mvn test
before submitting the Pull Request.