Skip to content
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

Version 0.2.0 - Alignment functionality #34

Merged
merged 80 commits into from
Aug 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
d50f0b4
Allow support of wayland and xcb for QT on linux
TheAntTeam Jun 8, 2023
c5f114b
Adding unique id to artifacts, made by short sha and action run number.
TheAntTeam Jun 14, 2023
3b59280
Using whole sha instead of short sha.
TheAntTeam Jun 15, 2023
a02436d
Removing exe from zip filename.
TheAntTeam Jun 15, 2023
2426935
Updated the path_optimizer which optimizes the drill path. Partially …
MakersKlabs Jul 9, 2023
03084e6
Modified GUI substituting checkbox of optimization with combobox of p…
TheAntTeam Jul 10, 2023
c4d1138
Drill algorithm settings partially changed. To be definitively change…
TheAntTeam Jul 10, 2023
85439ed
Connected the drop-down menu relating to the choice of the drilling p…
MakersKlabs Jul 21, 2023
62aaa44
Using modified combobox instead of line edit widget to have history a…
TheAntTeam Jul 24, 2023
ce9a0b6
Adding missing file of custom combobox that filters and redirects Ent…
TheAntTeam Jul 24, 2023
59ab8a9
About dialog pointing now to correct logo path.
TheAntTeam Jul 24, 2023
ee4b7d3
Changed the way version is stored and verified. The actual version tu…
TheAntTeam Aug 27, 2023
df778e6
Redesign of alignment tab (WIP)
TheAntTeam Oct 12, 2023
26a9df4
Draft of camera selection, modified ui, still WIP
TheAntTeam Nov 5, 2023
6f34e59
Restored newline in status update with pin status. Added top and bott…
TheAntTeam Nov 8, 2023
61b76bc
Probe pushbutton background color changes with probe activation and t…
TheAntTeam Dec 4, 2023
53d6beb
Added New Align Manager Class AlignManager. This is the first version…
MakersKlabs Dec 29, 2023
af51c1b
Initial Alignment Algorithm integration.
MakersKlabs Jan 3, 2024
71af203
Added leds to visually signal status of probe, ABL and alignment. LED…
TheAntTeam Jan 7, 2024
eb7bcc9
Connected probe led to slots, added yellow stylesheet to led label, o…
TheAntTeam Jan 7, 2024
d6db477
Connected align apply toolButton and corrected typo on function name.
TheAntTeam Jan 8, 2024
cbae55d
Minor Bug Fix. Alignment Applied only with a valid GCode File Selected.
MakersKlabs Jan 10, 2024
493e926
Checkable align apply toolButton sends also remove signal to control.…
TheAntTeam Jan 14, 2024
6ce6386
Debug fields to insert manually a pair of points, connected add point…
TheAntTeam Jan 20, 2024
8c03196
Align point table widget has row selection behavior now, connected re…
TheAntTeam Jan 20, 2024
8ba624e
Grabbed points list and passed with signal, update visualization when…
TheAntTeam Jan 21, 2024
5fa35bd
Connected the gcode alignment system with the main program.
MakersKlabs Jan 21, 2024
1253b39
Restored alignment point table widget functions, added recomputation …
TheAntTeam Jan 21, 2024
a38cd7f
Corrected offset/angle computation formulas
TheAntTeam Jan 22, 2024
5927632
Modified formula to compute debug offset and angle. Moved computation…
TheAntTeam Jan 22, 2024
2eacccd
Added load align layer button and connected to load just excellon.
TheAntTeam Jan 27, 2024
a7e9be5
Cleaned align layer before loading a new align layer.
TheAntTeam Jan 27, 2024
0f755eb
Changed the way camera are listed and updated. Used QtMultimedia to l…
TheAntTeam Feb 4, 2024
7c644a7
Connected DRO controls in the align tab, removed unuseful buttons, ma…
TheAntTeam Feb 4, 2024
65f6ad0
Added selection capability on visualLayer class. Fix align data setti…
MakersKlabs Feb 11, 2024
7664a54
Added the ability to upload a GCode file as a reference for alignment.
MakersKlabs Mar 9, 2024
4886466
Draft of flip layer functionality. Removed debug ui elements.
TheAntTeam Mar 10, 2024
de796be
Draft of flip layer functionality. Made tool buttons checkable and pa…
TheAntTeam Mar 10, 2024
4c8ba2d
Added the link between the flipping buttons of the alignment GUI and …
MakersKlabs Mar 16, 2024
49a3099
Inserted camera/tool selection toolbutton. Added Alignment settings t…
TheAntTeam Mar 24, 2024
10b613c
Draft of Alignment ui to controller interface
MakersKlabs Mar 24, 2024
02b2f9c
Added and connected signal to send ui alignment info to controller ma…
TheAntTeam Mar 24, 2024
524235f
Draft of Alignment controller_manager align related routine added
MakersKlabs Mar 24, 2024
9cb1f89
Added signal from controller manager to update alignment points coord…
TheAntTeam Mar 24, 2024
7d63763
Draft of Alignment controller_manager align: added remove points capa…
MakersKlabs Mar 24, 2024
a34a423
Added and connected signal to send indexes of removed raws from align…
TheAntTeam Mar 24, 2024
a149134
Alignment drill diameter setting and camera-tool offset settings mana…
TheAntTeam Mar 24, 2024
e6e81d9
Using working pos instead of machine pos when getting camera-tool off…
TheAntTeam Mar 25, 2024
bdcb358
Added DRC on gerber path validity. It is an automatic feature that sh…
MakersKlabs Apr 14, 2024
7ecb91a
Checked all alignment function. Moved in controller manager the camer…
MakersKlabs Apr 21, 2024
c814099
Minor bug fixes.
MakersKlabs Apr 26, 2024
581dd98
Changed variable name
TheAntTeam Apr 26, 2024
8f39906
Bug correction, only control tab step value was considered when updat…
TheAntTeam May 7, 2024
4f34508
Updated github actions versions.
TheAntTeam May 7, 2024
0e20193
Bug correction, only control tab step value was considered when updat…
TheAntTeam May 11, 2024
8d9abd1
Correction of previous commit, adding missing parenthesis.
TheAntTeam May 11, 2024
040792a
Some camera setup tests.
MakersKlabs May 11, 2024
bf97c32
Changed align tab user interface layout: crated 3 columns, leaving th…
TheAntTeam May 18, 2024
0e4ec8c
Fixed Issue on Camera image misaligned with the widget QLabel.
MakersKlabs May 19, 2024
dc962b9
Modified ui to reflect wanted changes, regenerated ui python automati…
TheAntTeam May 26, 2024
ccd7834
Bugfix: adding missing method call to refresh dsb values
TheAntTeam Jun 8, 2024
5768905
Substituted alignment led labels with toolbuttons in alignment and co…
TheAntTeam Jun 9, 2024
35fd681
Defined minimum number of points to get the alignment, set to 4.
TheAntTeam Jun 10, 2024
9fc65e8
Fixed wrong elif condition.
TheAntTeam Jun 10, 2024
51fed5f
Added check for xy and z movement value, to avoid going over minimum …
TheAntTeam Jun 16, 2024
28d5b30
Adding wheel event on camera label class and connected signal to comb…
TheAntTeam Jul 20, 2024
d9b7629
Alignment Camera Zoom connected with frame manager
MakersKlabs Jul 21, 2024
541bc3a
Better synchronization between align buttons.
MakersKlabs Jul 25, 2024
bc4fc76
Added machine setting to store actual position selected for camera or…
TheAntTeam Jul 27, 2024
24d613a
Moved camera_selected_or_tool setting to app settings, and added flip…
TheAntTeam Jul 27, 2024
2b2038c
Fixed bad aligned gcode vectorization.
MakersKlabs Jul 27, 2024
8db54df
Momentarily deactivating github action for macos
TheAntTeam Jul 27, 2024
0693344
Testing upgrade of python version on macos
TheAntTeam Jul 27, 2024
213ad0c
Modified mac os image version to use a version previos to arm64
TheAntTeam Jul 27, 2024
0a53a02
Fixed minor bogs about aligning procedure.
MakersKlabs Jul 27, 2024
93e59e9
Connected zoom combobox changed to update camera zoom
TheAntTeam Jul 27, 2024
a9c4199
Deselecting camera when application closes
TheAntTeam Jul 27, 2024
f604635
Added Changelog, modified version to 0.2.0, preparing for merge and r…
TheAntTeam Aug 11, 2024
84d2e1c
Fixe logo background. Now is white.
MakersKlabs Aug 11, 2024
c09311a
Regenerated resource file to reflect change of background color in logo
TheAntTeam Aug 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, windows-latest, macos-12]
# python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.10"]

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand All @@ -45,12 +45,12 @@ jobs:
cd ..
cd ..
- if: ${{ matrix.os != 'windows-latest' }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: the_ant_farm_${{ matrix.python-version }}_${{ matrix.os }}
name: the_ant_farm_${{ matrix.python-version }}_${{ matrix.os }}_${{ github.sha }}_${{ github.run_number }}
path: src/TheAntFarm/dist/the_ant_farm
- if: ${{ matrix.os == 'windows-latest' }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: the_ant_farm_${{ matrix.python-version }}_${{ matrix.os }}.exe
name: the_ant_farm_${{ matrix.python-version }}_${{ matrix.os }}_${{ github.sha }}_${{ github.run_number }}
path: src/TheAntFarm/dist/the_ant_farm.exe
97 changes: 97 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@

# Change Log
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [0.2.0] - Aug 11, 2024

Added first implementation of alignment tab based on manual selection of points in
the loaded layer and positioning of the machin tool using camera.
This allows to create double sided PCB aligning them optically.


### Camera Functionality Improvements:
- **Camera Selection and Deselection**: Added the ability to deselect the camera when the application closes and improved camera selection management, including adding a default "NO Camera" option to avoid accidental startups.
- **Camera Zoom**: Linked the camera zoom combobox to update the view and added mouse wheel events to control the zoom.
- **Camera Alignment**: Improved synchronization of alignment buttons, connected camera zoom to the frame manager, and added support for selecting alignment points, including the ability to remove points.

### Alignment Procedure Enhancements:
- **Alignment Point Management and Visualization**: Introduced a system to manage alignment points, including the removal of points and visual synchronization when alignment is applied. Added signals to update the coordinates of alignment points.
- **Path Optimization Algorithms**: Implemented and optimized a genetic algorithm to optimize the drilling path, also adding other algorithms like "nearest_insertion" and "two_opt".

### User Interface Improvements:
- **UI Changes**: Made numerous changes to enhance the user experience, such as reorganizing the alignment tab, adding new control elements, and connecting various signals to synchronize the application state.
- **LED Indicators**: Added visual LEDs to signal the status of various processes, such as probing and alignment.
- **GCode File Handling**: Added the ability to load GCode files as a reference for alignment and improved the integration of the alignment system with the main program.

### Bug Fixes and Optimizations:
- **Minor Fixes**: Resolved various bugs, such as issues with camera image misalignment, minor UI errors, and incorrect conditions. Improved handling of variables and boundary conditions in XY and Z movements.
- **MacOS Compatibility**: Termporarily removed generation of executable for ARM64 processor for MacOS.

### Other Enhancements:
- **DRC and Camera Offset**: Implemented a validity check for Gerber paths and optimized the use of working positions instead of machine positions to get the camera-tool offset.
- **Integration of New Features**: Added a new `AlignManager` class to handle alignment and introduced a new alignment algorithm.


## [0.1.1] - May 13, 2023

Modified python-app.yml and added files to generate executables for 3 main OS using
github actions.

### **Version and Documentation Updates**:
- **Version Bump**: Updated the project version to 0.1.1.
- **Documentation**: Enhanced and moved documentation to the wiki and updated `CommandManager` documentation.

### **Build Process Enhancements**:
- **Artifact Handling**: Improved artifact naming and handling for different Python versions and operating systems.
- **Path and File Management**: Corrected paths for YAML files, executable runs, and excluded certain files from linting.
- **CI Configuration**: Adjusted the CI pipeline to support specific Python versions, use a matrix strategy, and added conditional artifact uploads.

### **Compatibility and Dependency Management**:
- **Python Version**: Managed support for different Python versions (added 3.11, later removed due to incompatibility).
- **Shapely Library**: Addressed deprecation warnings and made preventive changes for Shapely >= 2.0.
- **`pyinstaller` Support**: Added spec file and adjustments to support building with `pyinstaller`.

### **Miscellaneous Changes**:
- **UI Updates**: Made minor changes to how status signals are managed and displayed in the UI.
- **Packaging**: Added `pyproject.toml` for package management using `poetry` (not used at the moment).


## [0.1.0] - Oct 07, 2022

First issue of The Ant Farm, implemented functionality to generate gcode from TOP,
BOTTOM, DRILL and EDGE gerber/excellon layers.
Implemented Control tab to load gcode and manage CNC controllers using GRBL 1.x.

### **Initial Setup and Core Functionality**:
- Introduction of new features like UI improvements, gcode generation, and tool change automation.
- Added handling for different file formats, including Gerber and Excellon files, with support for metric and imperial units.
- Improvements to core functionalities like drill file processing, layer management, and gcode visualization.

### **Bug Fixes and Issue Resolution**:
- Numerous bug fixes addressing issues like loading files without geometries, converting units, and serial port communication.
- Resolved issues related to gcode generation, such as handling empty layers, mirroring, and feedrate errors.
- Fixes for threading issues, error handling, and UI bugs.

### **Enhancements and Refactoring**:
- Enhanced user interface with better management of settings, color selections, and shortcut keys.
- Refactoring of code to improve structure, including splitting large classes into smaller, more manageable parts.
- Added features like tool change settings, probe offsets, and automated boundary box (ABL) processing.

### **Documentation and Readability**:
- Added and updated documentation, including comments, docstrings, and the README file.
- Improved code readability by translating comments into English and following coding style guidelines.

### **Version Control and Compatibility**:
- Managed dependencies and compatibility with different Python versions.
- Set up environment settings for different operating systems, including Windows, Linux, and Mac.

### **Testing and Optimization**:
- Added tests and debugging tools to improve reliability and performance.
- Implemented optimizations to reduce gcode complexity and improve processing speed.

### **Final Touches and Releases**:
- Prepared the project for release with a new logo, version tagging, and final code clean-up.
- Updated requirements, resources, and icons, preparing the application for broader use.
4 changes: 3 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "TheAntFarm"
version = "0.1.0"
version = "0.1.2"
description = "TheAntFarm is an application that simplifies the PCB creation using CNC machines."
authors = ["The Ant Team"]
license = "MIT"
Expand All @@ -26,6 +26,8 @@ shiboken2 = "5.15.2.1"
vispy = "0.9.4"
opencv-python = ">=4.5.1.48"

dynamic = ["version"]

[tool.poetry.dev-dependencies]

[build-system]
Expand Down
1 change: 1 addition & 0 deletions src/TheAntFarm/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__version__ = '0.2.0'
2 changes: 2 additions & 0 deletions src/TheAntFarm/app_resources.qrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<RCC>
<qresource prefix="resources">
<file>resources/icons/black_alignment_applied.svg</file>
<file>resources/icons/black_apply_align.svg</file>
<file>resources/icons/gray-refresh.svg</file>
<file>resources/icons/white-upload-file.svg</file>
<file>resources/icons/gray-upload-file.svg</file>
Expand Down
Loading