Frezarka CNC jako skaner 3D - w LinuxCNC to proste

Dyskusje dotyczące skanowania i skanerów 3D
Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

Frezarka CNC jako skaner 3D - w LinuxCNC to proste

#1

Post napisał: MlKl » 27 paź 2013, 14:13

Kod: Zaznacz cały

G0 Z[0.000000]
G0 Y[0.000000+10.000000*5.000000-10.000000] x[0.000000+5.000000*10.000000-10.000000]
G1 X40.000000 Y40.000000 Z[0.000000-10.000000*3.000000/5] f250
G1 X30.000000 Y40.000000 Z[0.000000-10.000000*4.000000/5] f250
G1 X20.000000 Y40.000000 Z[0.000000-10.000000*5.000000/5] f250
G1 X10.000000 Y40.000000 Z[0.000000-10.000000*6.000000/5] f250
G1 X0.000000 Y40.000000 Z[0.000000-10.000000*7.000000/5] f250
G0 Z[0.000000]
G0 Y[0.000000+10.000000*4.000000-10.000000] x[0.000000+5.000000*10.000000-10.000000]
G1 X40.000000 Y30.000000 Z[0.000000-10.000000*3.000000/5] f250
G1 X30.000000 Y30.000000 Z[0.000000-10.000000*4.000000/5] f250
G1 X20.000000 Y30.000000 Z[0.000000-10.000000*5.000000/5] f250
G1 X10.000000 Y30.000000 Z[0.000000-10.000000*6.000000/5] f250
G1 X0.000000 Y30.000000 Z[0.000000-10.000000*7.000000/5] f250
G0 Z[0.000000]
G0 Y[0.000000+10.000000*3.000000-10.000000] x[0.000000+5.000000*10.000000-10.000000]
G1 X40.000000 Y20.000000 Z[0.000000-10.000000*3.000000/5] f250
G1 X30.000000 Y20.000000 Z[0.000000-10.000000*4.000000/5] f250
G1 X20.000000 Y20.000000 Z[0.000000-10.000000*5.000000/5] f250
G1 X10.000000 Y20.000000 Z[0.000000-10.000000*6.000000/5] f250
G1 X0.000000 Y20.000000 Z[0.000000-10.000000*7.000000/5] f250
G0 Z[0.000000]
G0 Y[0.000000+10.000000*2.000000-10.000000] x[0.000000+5.000000*10.000000-10.000000]
G1 X40.000000 Y10.000000 Z[0.000000-10.000000*3.000000/5] f250
G1 X30.000000 Y10.000000 Z[0.000000-10.000000*4.000000/5] f250
G1 X20.000000 Y10.000000 Z[0.000000-10.000000*5.000000/5] f250
G1 X10.000000 Y10.000000 Z[0.000000-10.000000*6.000000/5] f250
G1 X0.000000 Y10.000000 Z[0.000000-10.000000*7.000000/5] f250
G0 Z[0.000000]
G0 Y[0.000000+10.000000*1.000000-10.000000] x[0.000000+5.000000*10.000000-10.000000]
G1 X40.000000 Y0.000000 Z[0.000000-10.000000*3.000000/5] f250
G1 X30.000000 Y0.000000 Z[0.000000-10.000000*4.000000/5] f250
G1 X20.000000 Y0.000000 Z[0.000000-10.000000*5.000000/5] f250
G1 X10.000000 Y0.000000 Z[0.000000-10.000000*6.000000/5] f250
G1 X0.000000 Y0.000000 Z[0.000000-10.000000*7.000000/5] f250
 G0Z0.000000
 m2
Powyższy kod jest napisany przez procedurkę NGCGUI, której zasymulowałem skanowanie powierzchni 50x50 mm nachylonej w stosunku do płaszczyzny Z

Przy normalnym skanowaniu oczywiście zamiast operacji matematycznych w nawiasach kwadratowych pojawią się wyniki pomiaru wysokości sondą Renishaw.

Symuluję bo takowej sondy jeszcze nie zbudowałem, ale to kwestia jednego wieczoru i kilku groszy na elementy elektroniczne.

Obrazek

Skanowanie

Obrazek

Plik wynikowy wczytany do wykonania.

Procedurka jest dość uniwersalna, potrafi również wiercić otwory w rzędach poziomych i pionowych z wycofywaniem co zadany skok.


Kod: Zaznacz cały


( ------------------------------ )
(           Wiercenie            )
( ------------------------------ )
( Miki                          )
( Time-stamp: <18-10-2013 17:31> )
( ------------------------------ )

(info: Wiercenie powtarzalnych otworów w rzędach i skanowanie powierzchni sondą Renishaw. Program w trakcie skanowania tworzy wykonywalny kod zapisywany w katalogu konfiguracyjnym jako skany/skan.ngc Katalog skany trzeba tam utworzyć ręcznie, jak chcemy zachować skan, trzeba mu zmienić nazwę, bo kolejny go nadpisze. )
; Author: Z. Maciej "Miki" Bajkowski

; logiczny operator "lub" (OR)
; alternatywa wykluczająca (XOR) prawdziwe, gdy nieparzysta liczba argumentów jest prawdziwa
; logiczny operator "i" (AND)
; równe (EQ)
; nierówne (NE)
; większe od (GT)
; większe lub równe (GE)
; mniejsze (LT)
; mniejsze lub równe (LE)
;
; ATAN[Y]/[X] Four quadrant inverse tangent
; ABS[arg] wartość absolutna
; ACOS[arg] Inverse cosine
; ASIN[arg] Inverse sine
; COS[arg] cosinus
; EXP[arg] e raised to the given power
; FIX[arg] zaokrąglenie w dół
; FUP[arg] zaokrąglenie w górę
; ROUND[arg] zaokrąglenie
; LN[arg] logarytm
; SIN[arg] sinus
; SQRT[arg] Pierwiastek kwadratowy
; TAN[arg] Tangens
; EXISTS[arg] szuka zmiennej 
o<wiercenie> sub

#<x_pocz> = #1 (=0 początek X)
#<y_pocz> = #2 (=0 początek Y)
#<z_pocz> = #3 (=0 początek Z)
#<glebokosc> = #4 (=10  glebokosc)
#<skok> = #5 (=2 skok)
#<ilosc_rzedow> = #6 (=1 ilosc rzedow)
#<ilosc_otworow> = #7 (=1 ilosc otworow)
#<szybkosc_posuwu> = #8 (=50 Posuw skanowania albo wiercenia)
#<odstep_x> = #9 (=10 odstep X)
#<odstep_y> =#10 (=10 odstep Y)
#<odjazd_z> =#11 (=4 odjazd Z)
#<skanowanie> =#12(=0 1 Skanowanie)
#<szybkosc_posuwu_skrawania> = #13 (=250 Posuw frezowania z pliku wynikowego)


g8
m3 s1


(LOGOPEN,skany/skan.ngc)

g0 z[#<z_pocz>+#<odjazd_z>]


#<ilosc_otworow_1>=#<ilosc_otworow>
#<ilosc_rzedow_1>=#<ilosc_rzedow>
#<licznik>=0
o200 while [#<ilosc_rzedow_1> gt 0]
#<licznik>=3
(LOG,G0 Z[#<z_pocz>])
(LOG,G0 Y[#<y_pocz>+#<odstep_y>*#<ilosc_rzedow_1>-#<odstep_y>] x[#<x_pocz>+#<ilosc_otworow_1>*#<odstep_x>-#<odstep_x>])

o110 while [#<ilosc_otworow_1> gt 0] 

#<akt_glebokosc>=0

g0 z[#<z_pocz>+#<odjazd_z>]

g0 x[[#<x_pocz>]+[#<odstep_x>*#<ilosc_otworow_1>]-#<odstep_x>] y[[#<y_pocz>]+[#<odstep_y>*#<ilosc_rzedow_1>]-#<odstep_x>]
o120 if[#<skanowanie> ne 1] (Wiercenie)
o100 while [#<akt_glebokosc> lt #<glebokosc>]

   g0 z[#<z_pocz>-#<akt_glebokosc>+2]
   g1 z[#<z_pocz>-[#<akt_glebokosc>+#<skok>]] f#<szybkosc_posuwu>
   g0 z[#<z_pocz>+#<odjazd_z>]

o5 if [[#<glebokosc>-#<akt_glebokosc>]lt #<skok>]
#<akt_glebokosc>=[#<akt_glebokosc>+#<skok>]
o5 else
#<akt_glebokosc> = #<glebokosc>
o5 endif

o100 endwhile
o120 else (Skanowanie powierzchni)

#5070=1
        O4 while [#5070 NE 0]
f#<szybkosc_posuwu>
            G38.3 z#<z_pocz>
            G38.5 x[[#<x_pocz>]+[#<odstep_x>*#<ilosc_otworow_1>]-#<odstep_x>] y[[#<y_pocz>]+[#<odstep_y>*#<ilosc_rzedow_1>-#<odstep_y>]]
#5070=0
        O4 endwhile

        G38.5Z-#<glebokosc>

(LOG,G1 X#5061 Y#5062 Z[#5063-#<odstep_y>*#<licznik>/5] f250)


#5070=0
o120 endif (Koniec skanowania powierzchni)


  g0 z[#<z_pocz>+#<odjazd_z>]
   

#<ilosc_otworow_1>=[#<ilosc_otworow_1>-1]

#<licznik>=[#<licznik>+1]

o110 endwhile

o1 if [#<ilosc_otworow_1> eq 0]
#<ilosc_rzedow_1>=[#<ilosc_rzedow_1>-1]
#<ilosc_otworow_1>=#<ilosc_otworow>

o1 else
(LOG,G1  Y[#5062-#<odstep_y>]  f350)
(LOG,G0  Z[#5063-#<odstep_y>*[#<licznik>-1]/5])
o1 endif

o2 if [#<ilosc_rzedow_1> eq 0]
#<ilosc_otworow_1>=0
o2 endif
o200 endwhile
(LOG, G0Z#<z_pocz>)
(LOG, m2)
(LOGCLOSE)
o<wiercenie> endsub



Tagi:


hecza
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 394
Rejestracja: 06 mar 2012, 13:25
Lokalizacja: Częstochowa

#2

Post napisał: hecza » 27 paź 2013, 14:47

Nie testowałem kolegi procedurki.
W LinuxCNC jest już "rectangle_probe.ngc" , która sprawuje się dobrze - domyślnie w katalogu z konfiguracją maszyny tworzy plik txt z kompletnymi pomiarami.
Służy głównie do skanowania, ale łatwo ją przystosować do innych celów.

Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#3

Post napisał: MlKl » 27 paź 2013, 14:58

Procedurka na wiercenie powstała już dawniej, dopisanie do niej samego skanowania to kwestia jednego warunku i jednej pętli. Trochę zabawy miałem, żeby wynikowy plik był od razu wykonywalnym kodem.

Na głębsze reliefy trzeba będzie jeszcze dopisać pętelkę po której będzie frez schodził w dół warstwami.

Wrzuconą procedurę trzeba oczywiście oczyścić z moich dodatków - tak jak jest ona jedynie udaje że skanuje.

W planach jest jeszcze dopisanie wykonywania fasolek/kieszeni w określonym rozstawie w tej samej procedurze.

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#4

Post napisał: markcomp77 » 27 paź 2013, 23:33

czekamy na testy w realu :)
uzbrojenie skanowania w klikalny interface w ncgui to duży plus!
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


kamar
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 13095
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#5

Post napisał: kamar » 28 paź 2013, 08:55

markcomp77 pisze: uzbrojenie skanowania w klikalny interface w ncgui to duży plus!
Szczególnie jak zczyta współrzędne z camview :) No i nie będzie kobyla do wszystkiego :)
:)

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#6

Post napisał: markcomp77 » 28 paź 2013, 09:10

kamar pisze:Szczególnie jak zczyta współrzędne z camview
to może być reale...
rozwiązanie mogło by się opierać na bibliotekach rozpoznawania obrazu --- tak jak to robią maszyny opuszczające elementy smd na pcb przed lutowaniem... kamera identyfikuje miejsce i "spuszcza" element...

pytanie, że z takiej kamerki nie dało by się zrobić po prostu skanera obrazu... a potem poddać to wektoryzacji?
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm

Awatar użytkownika

Autor tematu
MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3706
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#7

Post napisał: MlKl » 28 paź 2013, 09:12

kamar pisze:
markcomp77 pisze: uzbrojenie skanowania w klikalny interface w ncgui to duży plus!
Szczególnie jak zczyta współrzędne z camview :) No i nie będzie kobyla do wszystkiego :)

Toć to już wierci, skanuje i pisze kod na wykonanie skanowania, a planuję jeszcze dopisać wykonywanie kieszeni/fasolek w każdym punkcie wiercenia...

Nie mam jeszcze demencji, i nie muszę mieć osobnej procedury na wszystko :)

[ Dodano: 2013-10-28, 09:22 ]
markcomp77 pisze: pytanie, że z takiej kamerki nie dało by się zrobić po prostu skanera obrazu... a potem poddać to wektoryzacji?
Nie bardzo - kamera robi płaski obraz, to nasze oko ze zróżnicowania kolorów robi z tego obraz przestrzenny. Komputer tego nie potrafi,dla niego jest za mało informacji. David Laser Scanner korzysta z kamery, ale robi wiele ujęć ze zmieniającym się kątem, i potem na zdjęciach wyszukuje najjaśniejsze piksele, utworzone przez laserową smugę, i tak tworzy bryłę przestrzenną.

Do skanowania kamerą przedmiotu leżącego pod nią pewnie też by się to dało zastosować - kamera musiałaby się przesuwać w poprzek robiąc kolejne zdjęcia punktu z lasera skierowanego nieco w bok od osi obiektywu. Analiza kolejnych zdjęć dałaby położenie punktu w osi Z, X i Y byłby brany z pozycji maszyny.

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#8

Post napisał: markcomp77 » 28 paź 2013, 09:28

skanowanie na normalnym skanerze - gdzie pojawia się obraz płaski, pozwala pod cadem (corele.. czy innym autoadem) przyporządkować linię, dokonać wymiarowania jeśli taka potrzeba...

[ Dodano: 2013-10-28, 09:33 ]
to oczywiście dla 2D
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


kamar
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 13095
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#9

Post napisał: kamar » 28 paź 2013, 10:13

MlKl pisze:
Nie mam jeszcze demencji, i nie muszę mieć osobnej procedury na wszystko :)
Wszystko przed Tobą :) A na razie postaw kogoś przy tej maszynce i wytłumacz mu jak ma robic :)
:)

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#10

Post napisał: markcomp77 » 28 paź 2013, 10:26

MlKl pisze:Nie bardzo - kamera robi płaski obraz, to nasze oko ze zróżnicowania kolorów robi z tego obraz przestrzenny.
ja to mam jeszcze jedno oko ;)
to pozwala widzieć głębie...
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Skanery 3D”