Skip to content

JackZhouSz/MultiAxis_3DP_MotionPlanning

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Singularity-Aware Motion Planning for Multi-Axis Additive Manufacturing (RAL2021 & CASE2021)

Tianyu Zhang, Xiangjia Chen, Guoxin Fang, Yingjun Tian, Charlie C.L. Wang, IEEE Robotics and Automation Letters, vol. 6, no. 4, pp. 6172-6179, Oct. 2021, doi: 10.1109/LRA.2021.3091109.

This code can translate the position and orientation information in the Model Coordinate System (MSC) into a Cartesian-based Machine Coordinate System (MSC) and generate G-code, which brings a smooth and collision-free motion for multi-axis 3D printing. Video Link

Installation

Please compile the code with QMake file "ShapeLab.pro".

Platform: Windows + Visual Studio + QT-plugin (tested QT version: 5.12.3 + msvc2017_64)

Install Steps:

  • Install Visual Studio Extension plug-in (QT VS Tool) to open the .pro file and generate the project
  • Set 'shapeLab' as the start up project
  • Enable OpenMP to get best performace at: ShapeLab Project Property -> 'Configuration Proerties' -> c/c++ -> Language -> Open MP Support -> Select 'Yes (/openmp)'
  • Open Console at: ShapeLab Project Property -> 'Configuration Proerties' -> Linker -> System -> Select 'Console (/SUBSYSTEM:CONSOLE)' in 'SubSystem'

Usage

Step 0: input waypoints and curved mesh into the system. Click button 'Read Data'.

  • The waypoint and layer data of several models are given as 'freeform', 'simple_curve', 'topology', 'yoga' and so on. You can type in the model names into the block 'File Dir', and more model names could be found in './MultiAxis_3DP_MotionPlanning/DataSet/Sorce/'

  • You can also change the model's position on the Print Platform by changing the value in 'Coordinate: X, Y, Z'

  • Lable 'Waypoint Layer Range' will show the number of models, and you can check layers and waypoints with each layer or between certain ranges by changing the value of spinbox 'to' and checkbox 'each'

  • Button 'Show ALL Layer' can be used to show all of the layers of the model.

  • Note: When the model is 'topology' and 'yoga', the checkbox 'Yup -> Zup' needs to be checked.

  • In the 'Key parameter' part, 'Opt Computation' defines which set of layers will be calculated, and 'Offset' means the difference between extruders(model material & support material), 'Lamda' is the thresholde of singular region detection.

Step 1: calculate extrusion volume of each waypoint Click button '1. Variable Filament Calculation'.

  • The volume of filament is dynamically changing according to the waypoints distance (D), layer height (H) or toolpath width (W) by checking the corresponding box.

Step 2: conduct singularity optimization Click button '2. Singularity Optimization'.

  • After finishing this step, you can draw the singular node by select the box 'Singular Node'

  • The checkbox 'Solve Selection' can be used for showing which inverse kinematics solve is selected after optimization. Red nodes mean solve 1, and blue nodes mean solve 2.

Step 3: detect collision between printing head, platform and model Clicking button '3. Collision Checking'

  • Red nodes shown in this step represent when the nozzle moves to this position, the collision will occur. And the nozzle will collide with black nodes.

  • Note: This process may take some time to check the collision.

Step 4: conduct graph search Clicking button '4. Collision Elimination'

  • Build a graph based on all of the accessible solves of each waypoint and find the shortest path to link each waypoint

  • Note: Button 'Continuous Collision Checking' is an additional function for improving the sample-based collision checking method.

Step 5: generate G-code file Clicking button '5. G Code Writing'.

  • The G code will be stored at folder './MultiAxis_3DP_MotionPlanning/DataSet/Gcode'

Step 6: simulate the motion of printing Clicking button 'Simulation'.

  • The progress bar shows the percentage of completed print volume, and clicking the checkbox 'stop' will stop the simulation from running.

Curved Layer Generation Algorithm

Contact Information

Tianyu Zhang (tianyu.zhang-10@postgrad.manchester.ac.uk)

Guoxin Fang (g.fang-1@tudelft.nl)

Charlie C.L. Wang (changling.wang@manchester.ac.uk)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 77.7%
  • C 8.2%
  • Fortran 8.1%
  • CMake 4.7%
  • Cuda 0.8%
  • Shell 0.2%
  • Other 0.3%