# The Higher Education and Research forge

 Home My Page Projects Code Snippets Project Openings Complex Surface Machining Optimization
 Summary Activity SCM

# SCM Repository

 author Mahfoud Herraz Mon, 11 Nov 2019 12:30:14 +0000 (13:30 +0100) committer Mahfoud Herraz Mon, 11 Nov 2019 12:30:14 +0000 (13:30 +0100)
 Publis/article0.tex patch | blob | history Publis/biblioA0.bib patch | blob | history Publis/critical_parameters.py patch | blob | history Publis/imagesA0/fc_check.jpg [new file with mode: 0644] patch | blob Publis/imagesA0/sc_check.jpg [new file with mode: 0644] patch | blob

index 30255fc..ce79bac 100644 (file)
@@ -438,12 +438,53 @@ To verify the last point, the average of inverse of passes number had been calcu

Now that machining time is checked for both tools and directions, the critical parameters $s_c$ and $f_c$ are also verified: For this purpose, a sample of values of the ratio $f$ is considered, then $s_c$ is calculated for each $f$ in this sample and the (numerical) machining times $T_1$ and $T_2$ should be equal for the couple $\left(f,s_c\right(f))$. In the same way, the critical ratio $f_c$ is verified.

+\begin{figure}
+ \centering
+ \includegraphics[width=0.6\linewidth]{sc_check.jpg}
+ \caption{evolution of the critical slope $s_c(f)$ and machining times relative error $\epsilon_c(f)$ with respect to the ratio $f$}
+ \label{fig:sc}
+\end{figure}
+
+\begin{figure}
+ \centering
+ \includegraphics[width=0.6\linewidth]{fc_check.jpg}
+ \caption{evolution of the critical ratio $f_c(s)$ and machining times relative error $\epsilon_c(s)$ with respect to the slope $s$}
+ \label{fig:fc}
+\end{figure}
+
+
\section{Extension to free-form surfaces}

+The objectif of this section is to extend the proposed approach on flat rectangular surfaces to general free form surfaces. First, a Theoretical frame-work is presented, aiming to give a definition of critical parameters enabling the efficient selection of cutter type and machining direction. After, the formulated approach is benchmarked with two free form test case surfaces, in order to investigate its validity.
+
\subsection{Theoretical study}

+The first question to arise when generalizing to free form surfaces is how to define the machinig directions. The principal direction, along which the surface is the most extended, was parallel to the largest border for rectangular flat surfaces. It could be seen also, for any surface, as the direction of the line that minimizes the sum of distances from the points of the surface to their orthogonal projection on that line. The sum can be  integral if the surface is defined continuously, or discrete if it is defined by a meshing or cloud of points. Thus, finding the principal direction is equivalent to a well-known Principal Component Analysis \cite{abdi_principal_2010} (PCA).
+
\subsubsection{Notion of covariance matrix}
-           PCA
+
+Principal Component Analysis is a multivariate statistical procedure for data analysis. It is mainely used for dimensionality-reduction~: to condense the information contained in a large number of original variables into a smaller set of new orthogonal variables through linear combinations, with a minimum loss of information. PCA is also used for interpretation of large data set, it reveals relationships between correlated variables. Mathematically, PCA depends upon the eigen‐decomposition of positive semi‐definite matrices and upon the Singular Value Decomposition (SVD) of rectangular matrices.
+
+In our context, for a given surface $\mathcal{S}$, the variables are the coordinates of surface points in the three dimensionnal Euclidian space~: $\left(S_x,S_y,S_z\right)$. PCA is performed over the points of the surface $\mathcal{S}$ through eigen-decomposition of its covariance matrix, which gives three orthogonal eigen-vectors $\mathbf{S}_I$, $\mathbf{S}_{II}$ and $\mathbf{S}_{III}$ corresponding to the eigen-values $\lambda_I > \lambda_{II} > \lambda_{III}$. Note that $\mathbf{S_I}$ is the vector that fits the best the points of $\mathcal{S}$. Indeed, it minimizes the sum of distances from the points to the orthogonal projection on itself. Thus, $\mathbf{S_I}$ is the principal direction of the free-form surface $\mathcal{S}$. The covariance matrix $C$ of the surface $\mathcal{S}$ is
+
+\begin{equation}
+ C=\begin{pmatrix}
+        \mbox{Var}(S_x) & \mbox{Cov}(S_{x}S_y) & \mbox{Cov}(S_{x}S_z) \\
+        \mbox{Cov}(S_{x}S_y) & \mbox{Var}(S_y) & \mbox{Cov}(S_{y}S_z) \\
+         \mbox{Cov}(S_{x}S_z)& \mbox{Cov}(S_{y}S_z) & \mbox{Var}(S_z)
+    \end{pmatrix}
+    \label{eq:cov_mat}
+\end{equation}
+\begin{align*}
+ \mbox{Where }\mbox{Var}(S_x)=\mbox{E}(S_x^2) - \mbox{E}(S_x)^2\\
+ \mbox{Var}(S_y)=\mbox{E}(S_y^2) - \mbox{E}(S_y)^2 \\
+ \mbox{Var}(S_z)=\mbox{E}(S_z^2) - \mbox{E}(S_z)^2 \\
+ \mbox{Cov}(S_{x}S_y)=\mbox{E}(S_xS_y) - \mbox{E}(S_x)\mbox{E}(S_y) \\
+ \mbox{Cov}(S_{x}S_z)=\mbox{E}(S_xS_z) - \mbox{E}(S_x)\mbox{E}(S_z) \\
+ \mbox{Cov}(S_{y}S_z)=\mbox{E}(S_xS_z) - \mbox{E}(S_x)\mbox{E}(S_z) \\
+\end{align*}
+
+$\mbox{E}(X)$ is the mean of quantity $X$ over the surface, it could be exactly calculated as $\frac{1}{\left|\\\mathcal{S}\right|}\int_{\mathcal{S}}{X}dS$, or a discrete sum $\frac{1}{\left|\\\mathcal{S}\right|}\sum_{\mathcal{S}}X$ if the surface is represented by a cloud of points or a meshing.

\subsubsection{Using eigen values ratio as approximation of width/height ratio}
Don't forget to mention the surface steepest slope direction angle is approximated by the mean of angles
index ec9df33..90c3025 100644 (file)
author = {Beudaert, Xavier and Lavernhe, Sylvain and Tournier, Christophe},
pages = {7},
file = {Beudaert et al. - Maximum Feedrate Interpolator for Multi-axis CNC M.pdf:/home/mahfoud/Zotero/storage/J6CAGQBP/Beudaert et al. - Maximum Feedrate Interpolator for Multi-axis CNC M.pdf:application/pdf}
+}
+
+@article{abdi_principal_2010,
+       title = {Principal component analysis},
+       volume = {2},
+       issn = {1939-0068},
+       url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/wics.101},
+       doi = {10.1002/wics.101},
+       abstract = {Principal component analysis (PCA) is a multivariate technique that analyzes a data table in which observations are described by several inter-correlated quantitative dependent variables. Its goal is to extract the important information from the table, to represent it as a set of new orthogonal variables called principal components, and to display the pattern of similarity of the observations and of the variables as points in maps. The quality of the PCA model can be evaluated using cross-validation techniques such as the bootstrap and the jackknife. PCA can be generalized as correspondence analysis (CA) in order to handle qualitative variables and as multiple factor analysis (MFA) in order to handle heterogeneous sets of variables. Mathematically, PCA depends upon the eigen-decomposition of positive semi-definite matrices and upon the singular value decomposition (SVD) of rectangular matrices. Copyright © 2010 John Wiley \& Sons, Inc. This article is categorized under: Statistical and Graphical Methods of Data Analysis {\textgreater} Multivariate Analysis Statistical and Graphical Methods of Data Analysis {\textgreater} Dimension Reduction},
+       language = {en},
+       number = {4},
+       urldate = {2019-11-08},
+       journal = {Wiley Interdisciplinary Reviews: Computational Statistics},
+       author = {Abdi, Hervé and Williams, Lynne J.},
+       year = {2010},
+       keywords = {bilinear decomposition, factor scores and loadings, multiple factor analysis, RESS PRESS, singular and eigen value decomposition},
+       pages = {433--459},
+       file = {Abdi et Williams - 2010 - Principal component analysis.pdf:/home/mahfoud/Zotero/storage/XEWNWHSM/Abdi et Williams - 2010 - Principal component analysis.pdf:application/pdf;Snapshot:/home/mahfoud/Zotero/storage/WFM6FLNF/wics.html:text/html}
}
\ No newline at end of file
index 4de99cd..e5ef0cd 100644 (file)
@@ -40,17 +40,22 @@ fig_fc = plt.figure(1)
plt.subplot(2,1,1)
plt.plot(s,fc)
plt.xlabel('slope')
-plt.ylabel('critical ratio')
+plt.ylabel('critical ratio $f_c$')
plt.subplot(2,1,2)
plt.plot(s,100*np.abs(np.array(T2_fc)-np.array(T1_fc))/np.maximum(np.array(T2_fc),np.array(T1_fc)))
-plt.show()
+plt.xlabel('slope $s$ (°)')
+plt.ylabel('relative error $\epsilon$ (%)')
+#plt.show()
+plt.savefig('fc check.jpg',dpi=300,quality=95)

fig_fc = plt.figure(2)
plt.subplot(2,1,1)
plt.plot(f,sc)
plt.xlabel('ratio')
-plt.ylabel('critical slope')
+plt.ylabel('critical slope $s_c$ (°)')
plt.subplot(2,1,2)
plt.plot(f,100*np.abs(np.array(T2_sc)-np.array(T1_sc))/np.maximum(np.array(T2_sc),np.array(T1_sc)))
-plt.show()
-
+plt.xlabel('ratio $f$')
+plt.ylabel('relative error $\epsilon$ (%)')
+#plt.show()
+plt.savefig('sc check.jpg',dpi=300,quality=95)
diff --git a/Publis/imagesA0/fc_check.jpg b/Publis/imagesA0/fc_check.jpg
new file mode 100644 (file)
index 0000000..a6f04f4
Binary files /dev/null and b/Publis/imagesA0/fc_check.jpg differ
diff --git a/Publis/imagesA0/sc_check.jpg b/Publis/imagesA0/sc_check.jpg
new file mode 100644 (file)
index 0000000..327f668
Binary files /dev/null and b/Publis/imagesA0/sc_check.jpg differ