1 HOW TO USE
Before understanding the steps required to work with DEDALUS, ensure you perform the following pre-flight checks to prevent hardware failures or unpredictable behavior.
1.1 Machine Checks
Prior to powering on and operating the machine, systematically verify the following physical and sensor conditions:
- Linear Encoders: Verify the correct alignment and secure positioning of the linear encoders along both the X and Y axes.
- Rotary Encoders: Ensure the magnetic rotary encoders are correctly coupled and providing stable, accurate readings.
- Axis Leveling: Confirm that the axes remain mechanically level after the homing procedure is executed.
- Cable Management: Inspect all wiring harnesses to ensure there are no twisted cables or wires that could catch on moving components during 5-axis kinematics.
- Electrical Safety: Check that all stepper and DC motor terminals are properly covered and insulated to prevent accidental short circuits.
1.2 Usage Procedure
Powering on the machine relies solely on the main plug and power switch, which will simultaneously boot the Axes Controller Board and the Raspberry Pi.
- Network Connection: You can connect to the machine’s Raspberry Pi “brain” using either a wireless or a wired connection. The Ethernet connection is highly recommended for maximum speed, stability, and zero-latency telemetry streaming.
- Option A - Wi-Fi (Access Point): The Raspberry Pi automatically broadcasts the
DedalusAPWi-Fi network. Simply connect your PC to this network. - Option B - Ethernet Direct Link (Recommended): Connect a standard Ethernet cable directly from your PC to the Raspberry Pi port. On your PC’s network settings, modify the Wired Connection properties by setting the IPv4 method to Manual and applying the following parameters:
- Address:
192.168.59.1 - Netmask:
255.255.255.0 - (Leave Gateway and DNS empty)
- Address:
- Option A - Wi-Fi (Access Point): The Raspberry Pi automatically broadcasts the
- SSH Access: Open a terminal on your PC and connect to the Raspberry Pi environment via
SSH. Depending on your chosen connection method, use the corresponding IP address:- For Wi-Fi:
ssh dedalus@10.42.0.1 - For Ethernet:
ssh dedalus@192.168.59.2
- For Wi-Fi:
- Verify Background Services: The MADS framework broker and the
spi_agentare configured to run automatically as startup services. You can verify their active status using thesystemctlcommand:
systemctl status mads-broker.service
systemctl status mads-spi.service- Launch the Controller: Execute the path planner program (cncpp) by specifying the desired
G-Code - Homing Procedure: Once the program is running and the interface is active, trigger the machine homing sequence by pressing the z key.
- Bed Calibration: With the machine homed, perform a manual bed leveling/calibration to ensure the printing plate is perfectly set.
- Start Printing: Begin the printing execution by pressing the
bar.
1.3 Default Requirements
Sinces the G-Code parser is the responsible of feeding the machine with the interpolated position targets, it communicates with a MADS agent that forward the MADS network data into SPI bus directly connected to the Axes Controller Board. In order to avoid confusion, the SPI agent must receive a well-defined message. In this case, the G-Code parser (cncpp) must send:
json j;
j["spi_input"]["x"] = pos.x();
j["spi_input"]["y"] = pos.y();
j["spi_input"]["z"] = pos.z();
j["spi_input"]["a"] = pos.a();
j["spi_input"]["c"] = pos.c();
j["spi_input"]["vx"] = _vx;
j["spi_input"]["vy"] = _vy;
_agent -> publish(j);On the other side, the SPI agent forward from SPI bus to MADS network as well. This feedback from the machine is sent packed as:
json j = input;
if(j.contains("position")){
auto tmp = j["position"];
_position = Point(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4]);
}
// tmp[0] = x
// tmp[1] = y
// tmp[2] = z
// tmp[3] = a
// tmp[4] = c
_error = j.value<data_t>("error", INFINITY);This last method is also valid for collecting feedback from the digital twin FMU. Regarding the FMU input requirements, it requires the same stractur of the SPI agent, by changing only the opject name spi_input into fmu_input.