Automatisk krutdispenser

Här kan du skapa ett raportage om ditt pågående projekt. Det kan vara en ny stock eller kanske ombyggnation av ett helt vapen. Alla trådar skall dock innehålla bilder på ditt projekt.

Moderatorer: Ulrik, Trond Åsly, taxen, Stefan.K, potatiskastare, PerN, mecke, Kari Lindström, Fritz Kraut, Robban

Kategoriregler
Trådar som skapas här skall vara ett pågående projekt som man själv bedriver. Dvs. Inga trådar som innehåller en fråga osv. En projekttråd skall även innehålla en bild eller gärna fler. Trådar som inte uppfylller dessa enkla regler kommer raderas utan förvarning!.
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Bjerker skrev:kanske man kan prova en ultraljudsavståndsmätare under bommen
Bästa alternativa förslaget hittills. Ska ha det med mig i bakhuvudet.
Bjerker skrev:Ang. Tricklern, vad händer om man gängar insidan av röret, och byter håll på slutet för långsam matning?
:idea: Eureka! Bra idé som därtill är relativt enkel att realisera! Kommer att prövas om behov uppstår!
// Öskar
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Python-studier

Har lagt ytterligare ca 15 timmar på Python-studier. Jag gillar det verkligen. Datorer är ytterligt logiska och rationella varelser. Det finns rätt, det finns fel och däremellan finns inget. Inger förhandlande eller konsensus. Så mycket enklare än livet i allmänhet. Datorn är min slav och och följer mina instruktioner till punkt och pricka (så länge jag talar klarspråk till den).

Hur som helst, jag klarar nu av att skapa mycket enkla och meningslösa applikationer. Inser att vägen är lång . . .

Lärdom nummer 1: Att lära sig Pyhton är jobbigare än att snyta näsan.
// Öskar
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Uppdatering

Raspberry'n:
Har installerat Raspbian OS på Raspberry'n. Python 2.7.9 förinstallerat. 1 timme. Imponerande prestanda med tanke på storlek . . . fast nu är den stor som ett kreditkort . . . oklart om den kommer att klara av det beräkningstunga jobbet jag har för avsikt att ge den. Blir kanske bättre när jag slår av det grafiska gränssnittet.
raspberry_desktop.png
I övrigt:
- Ytterligare 55 timmar pythonstudier
- 1 timme experimenterat med Raspberry'ns GPIO-pins
- 15 timmar image recognition studier

Kunde inte låta bli att beställa en LCD-display (16 tecken * 2 rader). 12:39 inkl frakt.
display.jpg
Känns svårt att komma vidare utan kamera. Trodde i min enfald att leveranstiderna skulle vara något kortare efter jul och nyår.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
// Öskar
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Automatisk krutdispenser

Inlägg av Fält »

Hej,

Efter jul och nyår är sämsta tiden att beställa från Kina på grund av det kinesiska nyåret som infaller någonstans mellan slutet Januari och mitten av Februari.

Men du borde väl kunna ta några bilder att prova på med en vanlig digitalkamera?

Jörgen
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

JörgenK skrev:Efter jul och nyår är sämsta tiden att beställa från Kina på grund av det kinesiska nyåret som infaller någonstans mellan slutet Januari och mitten av Februari.
OK, men jag valde ut leverantörer som inte var markerade som frånvarande. Samtliga orders skickades samma dag eller dagen efter.
JörgenK skrev:Men du borde väl kunna ta några bilder att prova på med en vanlig digitalkamera?
Ja jag har börjat med stillbilder, men använder dem bara i "utbildningssyfte". Eftersom min fritid fyllts med Python-studier har jag avstått från "börja på riktigt". Känner mig dock redo nu och det vore klart bäst med den tilltänkta kameran.
// Öskar
Användarvisningsbild
Magnus M
Inlägg: 2840
Blev medlem: 10 nov 2015, 20:47
Ort: Uppland

Re: Automatisk krutdispenser

Inlägg av Magnus M »

Det hjälper inte att leverantörerna knegar när hela postväsendet dricker sprit och smäller fyrverkerier.
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Webbkameran har anlänt. Den ser ut precis som den kostar SEK 27:79 inkl frakt. Jag har kopplat in den i datorn och den ”fungerar”. Den ger strömmande video i upplösning 320 * 640 och 8 bilder per sekund. Ingen superimponerande prestanda.

Förts blev jag grymt besviken då bildkvaliteten visade sig vara direkt undermålig för ändamålet. Var och varannan bild får flera störande vita horisontella linjer över hela bilden. Det är naturligtvis inte gångbart för detta projekt. Perkele vilket antiklimax.

Men efter att ha reducerat upplösningen till 240 * 320 blev bildkvaliteten helt acceptabel. Det visade sig också att fokusen går att skruva ner till endast 30mm (80mm enligt spec). Det räddar situationen, då jag kan kompensera den lägre upplösningen med att ställa kameran närmare vågen. Vid ett avstånd på 80mm hade jag ändå fått klippa bort ovidkommande periferi. I värsta fall får jag ställa kameran på högkant för att på så sätt öka upplösningen för bommens position med 33%. Kamera-experimenterande 3 timmar.

Jag kommer nu att lägga lite tid på att få till python-kod som styr kameran och ”fångar” bilder från den. Har tagit fram en grundstruktur för helhetslösningen. Mina bristande kunskaper i ämnet har dock hindrat mig från att komma framåt utan denna vitala komponent.
våg.jpg
Det är nu det börjar . . .
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
// Öskar
Pojkvaskern
Inlägg: 665
Blev medlem: 02 nov 2016, 17:08
Ort: Västernorrland

Re: Automatisk krutdispenser

Inlägg av Pojkvaskern »

Kul att folk vågar sig på sånt här. Jag önskar dig all lycka till! :D
"Det finns ett genomgående fel på alla hagelbockar, som tyvärr är svårt att åtgärda: piporna har blivit felmonterade i höjdled"

-Gammalt Robsoftordspråk
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Har byggt lite hårdvara under eftermiddagen.

Har slängt ihop en konsol till vågen samt ett ”kamerastativ”. Har fäst ett svart papper bakom vågen för att eliminera störande ljusinfall samt öka kontrasten. 15 min.
våg_med_konsoll_.JPG
kamera_och_våg_.JPG
Kamerastativet står på tre skruvar. På så sätt kan jag justera kamerans höjd och vinkel (vinkel mot skala och bom). Det är viktigt att kameran filmar det mittersta skaltecknet från ett ”rent” horisontellt läge, då bommen är placerad bakom skalan. Annars visar kamerabilden fel balanspunkt. Kuriosa: Efter att ha slitit mitt hår i över en timme, insåg jag att själva kameran sitter snett inne i kamerahuset. Den tar alltså bilderna snett ut från frontlinsen. För att kompensera för det är kamerahuset monterad så den lutar neråt. 2,5 timmar varav hälften svärandes.
justerbara_fötter_.JPG
Har gjort vissa reversibla modifieringar av vågen:
- Målat området närmast skalan svart (spritpenna) för att eliminera störande reflexer och öka kontrasten.
- Målat skaltecknen vita (oljebaserad färg), för ökad kontrast mot den svarta bakgrunden.
- Därtill har jag duttat på en röda punkter på det övre respektive nedre skaltecknet.
De röda punkterna kommer att användas för att lokalisera skala och bom. Avståndet mellan de röda punkterna ska mig en relativ referens. Med hjälp av den kommer jag att beräkna vilka områden som är relevanta att bearbeta. Större delen av respektive bild innehåller ju bara nonsens. För respektive bild behöver jag endast känna till var skaltecknens mittpunkter är, samt var bommen befinner sig. 15 min.
skala_.JPG
Lärdom nummer 2: satsa på en dyrare kamera.

Kommer nu gå vidare med mjukvaran.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
// Öskar
Användarvisningsbild
Magnus M
Inlägg: 2840
Blev medlem: 10 nov 2015, 20:47
Ort: Uppland

Re: Automatisk krutdispenser

Inlägg av Magnus M »

Spännande, och bra skrivet!
Användarvisningsbild
sevehem
Inlägg: 3898
Blev medlem: 14 jun 2013, 21:20
Ort: Varberg

Re: Automatisk krutdispenser

Inlägg av sevehem »

redtop skrev:Det här är en tråd och ett projekt helt i min smak! Totalt meningslöst eftersom allting finns att köpa, men du gör det för att man kan! :D

Helt min stil! Följer! :D :D :D
Och jag är ju grymt svag för dina experiment så detta är helt i min smak också! Kul med nyfikna människor som ser lärande som ändamål i sig!
Söker kombipipset till Antonio Zoli Delfino, kaliber är av sekundär betydelse men klass1 är ett plus
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Automatisk krutdispenser

Inlägg av Fält »

Efter att ha sett en elektrisk servovåg baserad på en läsgaffel så blev jag lite sugen på att det hur det skulle fungera med en läsgaffel på en vanlig krutvåg. Precis som föreslogs tidigare i tråden.

Jörgen
Ulrik
Moderator
Inlägg: 2179
Blev medlem: 18 mar 2002, 21:10
Ort: Umeå

Re: Automatisk krutdispenser

Inlägg av Ulrik »

Jag sprang på den här sidan och tänkte på ditt projekt http://www.omegapowdertrickler.com/" onclick="window.open(this.href);return false;
Där kan du kanske få lite tips på själva tricklern
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Ulrik skrev:Jag sprang på den här sidan och tänkte på ditt projekt http://www.omegapowdertrickler.com/" onclick="window.open(this.href);return false;
Där kan du kanske få lite tips på själva tricklern
Tack för tipset! Ska ha det med i bakhuvudet. Det förefaller vara en enkel konstruktion! En liknade borde man kunna bygga på ett par timmar. För närvarande bortser jag dock från allt som har med själva krutmatningen att göra. Fokus ligger nu på att läsa av vågen.
// Öskar
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Jag har spelat in några videos med vågen som huvudperson. Har bl a lastat 5 st hörselproppar på vågen och tagit fram vikten (ca 30 grain). Filmar vågen med 4 st proppar i. Släpper i den femte och vågen börjar gunga. Filmar tills den stannat helt. Har filmat under lite olika ljusförhållanden samt med över- och underlast.

Jag tänker använder dessa videos som underlag när jag utvecklar. Då slipper jag sitta och jobba mot Raspberry'n. PC'n är enklare, flexiblare och fram för allt mer responsiv.

En så länge fokuserar jag endast på ”kalibrering”. Dvs jag fastställer på vilken höjd (i bilden) vågens ”skaltecken” befinner sig, samt vilken del av bilden som ska användas för att fastställa bommens höjd.

Målet är att applikationen ska fungera med vilken normal USB-ansluten kamera som helst. Den ska fungera under alla ”normala ljusförhållanden”. Vidare ska kamerans placering vara relativt fri. Kameran ska även kunna flyttas marginellt under pågående laddning utan att resultatet påverkas. . . den ska i varje fall kunna ”stötas till” utan påverkan på resultatet. För det behöver jag en snabb, effektiv och pålitlig kalibrering som anpassar sig efter rådande ljusförhållanden.

Jag jobbar parallellt med OpenCV och egenhändigt utvecklad image recognition logik.
videoframe_46_orginal.jpg
Lärdom nummer 3: Image recognition är inte helt trivialt. Värre än Python :lol:

Kamera setup och videofilmning: 1,5 timmar
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
// Öskar
Användarvisningsbild
Öskar
Inlägg: 315
Blev medlem: 31 jan 2015, 20:48

Re: Automatisk krutdispenser

Inlägg av Öskar »

Avrapportering:

Än så länge har jag bara jobbat mot förinspelade videos, så ta denna redogörelse för vad den är. Har i alla fall lyckats få till positionering av skala och bom.

Nedan följer en mycket förenklad redogörelse för hur mitt program för närvarande jobbar.

Grovkalibrering
Grovkalibreringen är mycket beräkningsintensiv och sker normalt endast när Raspberry'n startar. I normalfallet bearbetas endast en enda bild. Misslyckas grovkalibreringen går man vidare och försöker med nästa bild. Om kalibreringen inte lyckats efter tre bilder avbryts den. Då är ljusförhållandena fel eller så är kameran felriktad. Grovkalibreringen ska också kunna forceras fram med en knapptryckning.

Grovkalibreringen bygger på de två röda prickar som målats på det övre respektive nedre skal-tecknen. Bilderna genomsöks efter pixlar som uppfyller vissa färgvillkor. En mycket stor mängd färgvillkor prövas. Färgdjupet är 24 bitar viket innebär att varje enskild pixel kan anta ett mycket stort antal olika färger (16 777 216 st). Exakt vilken färg varje pixel får varierar med ljussättning. För varje färgvillkor kontrolleras om två och endast två var för sig sammanhängande (men tillsammans separerade) områden identifierats. Om så är fallet så kontrolleras om de två områdenas inbördes positioner och storlekar är rimliga. Godtas även dessa så anses de röda prickarna vara korrekt identifierade. Med hjälp av prickarnas position och avstånd är det enkelt att beräkna vilka delområden som är relevanta för att fastställa skal-tecknens och bommens höjd-positioner.

Efter grovkalibreringen får man alltså inte flytta runt kameran hur som helst. Mindre förändringar är dock OK.
scale_orginal.jpg
scale_reddot.jpg
scale_crop.jpg
Finkalibrering
Finkalibreringen utförs i samband med att varje laddning startar samt direkt efter det att en laddning bedöms som färdig. Det gör dispensern okänslig för mindre lägesförändringar mellan kamera och våg. Det ska alltså inte göra något om man råkar stöta till våg eller kamera under arbetets gång.

I finkalibreringen bearbetas endast de delområden som grovkalibreringen fastställt. Bilden skärs alltså ner till fyra mindre bitar. Resten av informationen är irrelevant och kasseras. Ca 93 % av bilden dumpas direkt.

Om bommen är i ett sådant läge att den stör finkalibreringen av något av skaltecken, så finkalibreras endast de övriga två. Har dessa flyttas sig jämfört med föregående laddning (våg eller kamera tillstött), så beräknas positionen för det tredje skaltecket (det som störs av bommen).

Det första som görs är att delbilderna konverteras till gråskala. Av pedagogiska skäl visar jag här obeskurna bilder (med gröna ramar kring de områden som bearbetas).
scale_gray.jpg
Därefter ”grumlar” jag bilden. Grumlingen gör bilden suddig men minskar ”mängden kontrastgränser”. Man ”tvättar” således bort mindre reflexer och andra störande ”feltolkningar” (jämför bilderna).
scale_blur.jpg
Sedan konverterar jag bilden 64 gånger till svartvit. Vid varje konverteringen tillämpar jag olika tröskelvärden. Tröskelvärdet anger hur mörk/ljus en pixel måste vara för att tolkas som svart/vit. Ett högre tröskelvärde ger fler svarta pixlar. Varje bild utvärderas sedan. En acceptabelt tröskelvärde medför endast ett vitt sammanhängande område per beskuren delbild. Varje sådant vitt område ska även vara av en acceptabel storlek.
scale_threshold.jpg
Om vi nu lägger ut våra beskurna, grå-konverterade, grumlade och svart-vit-konverterade bilder på en svart bakgrund, så ser det ut så här.
scale_core.jpg
Därefter tar jag fram en ”minsta omslutande cirkel” för respektive vita område i respektive beskurna delbild. Cirklarnas centrum befinner sig i respektive objekts vertikala mittpunkt. Notera att det för denna bild inte är möjligt att positionera det övre skaltecknet pga att bommen stör. Jag har tagit mig friheten att ändå ritat ut cirkeln. Notera att även bommen är ”cirklad”.
scale_circle.jpg
Skaltecknens vertikala positioner är därmed fastställda. Även lämpligt tröskelvärde för fastställande av bomposition är bestämt.

Bompositionering
Bompositionering sker på likartat sätt. Skillnaden är följande:
- bommen positioneras för samtliga bilder (skaltecknen bara för två bilder per laddning (när laddningscykeln startar och slutar)).
- lämpligt tröskelvärde är redan hittat, så endast en (1) konvertering till svart-vitt behöver göras.
- endast den delbild som avser bommen skärs ut och bearbetas.

Om man för varje cirkel ritar ut en horisontell linje som passerar genom respektive cirkels centrum, så ser det ut så här.
scale_lines.jpg
Självklart är det så att programmet jag bygger inte jobbar med visuella bilder på detta sätt som beskrivs här. I programmet är en bild bara en enorm matris full av numeriska värden. Bilder är bara för mänskliga hjärnor.

Jag kommer nu att lämna fasen med förinspelad video och gå över på ”live streaming”. Har ingen stegmotor ännu, så jag får nedlåta mig till att kasta i ballast manuellt i vågskålen. Jag ämnar också ägna en del tid tid åt test. Kommer att provocera systemet på alla tänkbara sätt (luftdrag, knuffar, vibrationer, dålig kamera placering, undermåligt ljus, skrikande barn, arg fru, . . .), för att hitta dess svaga punkter och hantera abnormiteter.

Jag inser att endast en mycket liten del av jobbet är gjort. Samtidigt känns det som jag klivit över en hejdlöst hög tröskel . . .

Mjukvaruutveckling 27 timmar.

Lärdom nummer 4: Studierna i Python och image recognition betalar sig. Jag kan fokusera på de verkliga problemen utan att bekymra mig allt för mycket om verktygen. Lite som att kunna cykla faktiskt :-)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
// Öskar
Användarvisningsbild
redtop
Inlägg: 2076
Blev medlem: 02 mar 2016, 09:37
Ort: Södra Roslagen

Re: Automatisk krutdispenser

Inlägg av redtop »

Imponerande att du redan fått till en fungerande algoritm efter så kort tid!
Den röda hatten av! :D
Pojkvaskern
Inlägg: 665
Blev medlem: 02 nov 2016, 17:08
Ort: Västernorrland

Re: Automatisk krutdispenser

Inlägg av Pojkvaskern »

Jag förstår väl hälften av vad du skriver ungefär men förstår att du gör framsteg och kan inte undgå att bli jädra imponerad! Följer till slutet! :D
"Det finns ett genomgående fel på alla hagelbockar, som tyvärr är svårt att åtgärda: piporna har blivit felmonterade i höjdled"

-Gammalt Robsoftordspråk
Fält
Inlägg: 2774
Blev medlem: 21 jan 2016, 15:58

Re: Automatisk krutdispenser

Inlägg av Fält »

Riktigt kul att det går så bra! Du har ju redan löst de svåra mjukvarubitarna.

Jörgen
Användarvisningsbild
Karre
Inlägg: 3222
Blev medlem: 30 aug 2013, 15:03
Ort: Nyköping

Re: Automatisk krutdispenser

Inlägg av Karre »

Tack för att delar med dig så pedagogiskt.
Senast redigerad av 1 Karre, redigerad totalt 7 gånger.
Söker jakt runt Nypan (Nyköping)! Skicka PM. Jag är relativt snäll och inte helt jävla oduglig.