unihack-blog
unihack-blog
uniHack Tbilisi
6 posts
Don't wanna be here? Send us removal request.
unihack-blog · 11 years ago
Link
0 notes
unihack-blog · 11 years ago
Text
Air Tic Tac Toe
Tumblr media
პროექტი Air Tic Tac Toe  hack@CST-ზე მეორე ადგილის გამარჯვებული გახდა.
ძირითადი მიზანი
Do Epic Shit & Have Fun !
მთავ���რი იდეა
მიუხედავად იმისა, რომ ჰაკათონზე სრულიად სხვა იდეით მოვედით, Do Epic Shit პრეზენტაციამ იმდენად იმოქმედა ჩვენზე რომ გადავწყვიტეთ შესაბამისი პროექტი გაგვეკეთებინა და ჰაკათონის პირველ ღამეს მოგვივიდა იდეა გაგვეკეთებინა ყველათვის ცნობილი და საყვარელი თამაში “კრესწიკი-ნოლიკი”  ონლაინში, ხოლო თამაში შეგვეძლებოდა ხელის მოძრაობით რომელსაც ვებ კამერა დააფიქსირებდა.
ერთი შეხედვით ეს საკმაოდ რთული თემაა, არანაირი სენსორების, დამატებითი მოწყობილობების, ბიბლიოთეკებისა თუ სხვათა გამოყენების გარეშე, ჯავასკრიპტით დაგვეფიქსირებინა ხელის მოძრაობა. თუმცა ჩვენი გეგმაც ეს იყო, გაგვეკეთებინა რაიმე განსხვავებული, გასართობი და სახალისო.
იდეის განხორციელება
რათქმაუნდა უპირველესი პრობლემა იყო ჯავასკრიპტით ხელის მოძრაობის დაფიქსირება, თითქოსდა სრულიად შეუთავსებადი ამოცანა ამ ენასთან. თუმცა ყველაფერი გენიალური მარტივიაო როგორც იტყვიან, ჩვენც ისეთ გადაწყვეტილებას მივაგენით რაც ჯდებოდა ჯავასკრიპტის შესაძლებლობების ფარგლებში. უპირველესად გვჭირდებოდა ვებ კამერის ჩართვა და მისგან წამოსული სტრიმის მიღება, რასაც ჯავასკრიპტი საკმაოდ მარტივად უმკლავდება getUserMediaAPI()-ს საშუალებით რომელიც ჩვენს ვიდეო ობიექტს პირდაპირ ანიჭებს სორსად კამერიდან წამოსულ სტრიმს.
სტრიმის მიღების შემდეგ დგება მთავარი პრობლემა, მისი დამუშავება ისე, რომ დავაფიქსიროთ მოძრაობა. ამ საკითში კი უკვე გვეხმარებიან პიქსელები. კერძოდ, ვიდეო-სტრიმის თითოეული კადრის პიქსელ-პიქსელ დამუშავება. ზოგადად რომ ვილაპარაკოთ და აზრი ამ მეთოდისა გასაგები იყოს მოვიყვანოთ მაგალითი: გვაქვს თეთრი ფონი, ვებკამერა აფიქსირებს მას და უღებს სურათებს,
დაახლოებით 30-40 კადრი წამში რაც გვაძლევს ვიდეოს. აქამდე ყოველი
ფიქსელი არის თეთრი და აქვს მისი შესაბამის RGB კოდი -  (255, 255, 255)
შემდეგ დავუშვათ შემოდის კადრში ხელი, ახლა უკვე იმ ფართობის პიქსელებში რასაც ხელი ფარავს  აღარ წერია თეთრის RGB კოდი, არამედ უკვე კანის ფერის შესაბამისი RGB კოდი (255, 218, 190). თუ შევადარებთ ორ შემთხვევას :
1) ხელი კადრში არ შემოსულა - მაშინ ორ ერთმანეთის მომდევნო კადრების პიქსელების სხვაობა იქნება 0, რადგან როგორც იყო თეთრი ფონი, ისევე დარჩა თეთრი ფონი და შესაბამისად:
R: |255 - 255| = 0 G: |255 - 255| = 0 B: |255 - 255| = 0 0 + 0 + 0 = 0
2) ხელი კადრში შემოვიდა - აქ უკვე სიტუაცია განსხვავდება, პირველ კადრში ფონი იყო თეთრი, ახლა კი გარკვეული ფართობი სურათისა დაიკავა ხელმა და მისმა ფერმა გადაფარა თეთრი, შესაბამისად პიქსელების სხვაობა 0სგან განსხვავდება.
R: |255 - 255| = 0 G: |218 - 255| = 37 B: |190 - 255| = 65 0 + 37 + 65 = 102
მიღებული სხვაობა გვაძლევს საშუალებას დავადგინოთ თუ რომელ პიქსელებში მოხდა ფერის ცვლილება და შესაბამისად - ხელის მოძრაობა(ან თავის, ან ფეხის ან ნებისმიერი რამის). მსგავსი შედარება ხდება ყოველ ორ მომდევნო კადრზე რაც საშუალებას გვაძლევს დინამიურად დავადგინოთ ის ადგილები სადაც ხდება მოძრაობა. ასევე ეს სხვაობა საშუალებას გვაძლევს დავაყენოთ მგრძნობელობა მოძრაობის დაფიქსირებაში. გასაგებია რომ თუ ორ კადრში პიქსელებს შორის სხვაობა არის 1, 2 ან თუნდაც 10 ეს ფერის ძალიან ოდნავ ცვლილებას ნიშნავს და რადგან ვებ კამერა ვერ დაიკვეხნის მაღალი გარჩევადობის სტრიმით ამიტომ ამ პარამეტრის გათვალისწინებაც აუცილებელია და მცირე ცვლილებელი უგულებელყოფილია.
Tumblr media
ვირჩევთ სასურველ უჯრას
Tumblr media
  და ვადასტურებთ :)))
მხოლოდ ჰარდკორი - როგორც ავღნიშნე ჩვენ არ გამოგვიყენებია არანაირი დამატებითი მოწყობილობა თუ ბიბლიოთეკა რაც გაგვიადვილებდა მუშაობას, ყველაფერი დაწერილია სუფთა ჯავასკრიპტზე. ( ჰარდკორის მოყვარულები დაგვაფასებენ :3 )
node.js-ის (socket.io)  საშუალებით თამაში გახდა მულტიფლეიერი(ონლაინში)
თამაში ეშვება როგორც ლეპტოპებზე ჩაშენებული ვებ კამერებით, ისე სმარტფონებზე რომლებსაც აქვთ ფრონტ კამერა, განურჩევლად ფირმისა და ოპერაციული სისტემისა
( Thanks Javascript :> )
Tumblr media
(ჰაკათონის ერთერთი ორგანიზატორი თავისი სმარტფონით თამაშობს ჩვენს თამაშს ^_^)
ალბათ ამ ყველაფერმა განაპირობა რომ ჩვენ დავიკავეთ მე-2 ადგილ��.
Tumblr media
გუნდი - IFG პროექტის სახელი  - Air Tic Tac Toe გუნდის წევრები - დავით დიდბარიძე,  ილია ნაჭყებია  და საბა ხუციშვილი
7 notes · View notes
unihack-blog · 11 years ago
Text
InstantScore
Tumblr media
მთავარი იდეა
ძალიან ხშირად ხდება, რომ ადამიანს სპორტი ძალიან აინტერესებს, თუმცა სხვადასხვა მიზეზების გამო ვერ ახერხებს რაღაც კონკრეტული სპორტული მოვლენისთვის თვალყურის დევნებას. მაგალითად, არ არის სახლში ან/და არ აქვს ინტერნეტი, რის საშუალებითაც მოახერხებდა სასურველი მატჩის ანგარიშის გაგებას. შეიძლება ინტერნეტი აქვს, თუმცა არ აქვს დრო, რომ ხშირ-ხშირად ამოწმოს მიმდინარე ანგარიში ინტერნეტში.
ამ პრობლემის ნაწილობრივ მოსაგვარებლად, შევქმენით შემდეგი სერვისი: ადამიანი ინტერნეტით წინასწარ ირჩევს ხოლმე მისთვის საინტერესო მატჩების სიას, ამ თამაშების მიმდინარეობისას კი ყოველ საინტერესო ცვლილებას მიიღებს offline რეჟიმში მობილურ ტელეფონზე მოკლე ტექსტური შეტყობინების სახით. (მაგალითად ინფორმაციას, რომ თამაში დაიწყო, მორჩა პირველი ტაიმი, მორჩა მთლიანად თამაში, გაიტანა გოლი რომელიმე გუნდმა და ა.შ.).
შედარებით კონკრეტული აღწერა
პროექტი შედგება 2 ძირითადი ნაწილისაგან:
მობილური აპლიკაცია - აპლიკაციის მთავარი მიზანია, მომხმარებელს უჩვენოს მიმდინარე (ან უახლოეს მომავალში დაგეგმილი) მატჩების სია და მისცეს საშუალება, რომ აირჩიოს მისთვის საინტერესო მატჩები. (გარდა ამისა, ცხადია, მომხმარებელს შეუძლია უბრალოდ ნახოს მიმდინარე ანგარიშები, ისევე როგორც livescore-ის აპლიკაციაში ან საიტზე)
აპლიკაცია შეიცავს 2 ძირითად “Tab”-ს.
Active - გვერდ��, სადაც მოცემულია მატჩები, რომლებიც უახლოეს მომავალშია დაგეგმილი. თითოეული დღისთვის მოთამაშე ირჩევს მაქსიმუმ 10 თამაშს. ყოველი თამაშის წარწერას ექნება შესაბამისი ფერი (არჩეულის და არარჩეულის შესაბამისად). არჩევა შეესაბამება იმას, რომ ეს თამაში მომხმარებელს აინტერესებს. მნიშვნელოვანია, რომ ეს ნაბიჯი ხდება აუცილებლად მაშინ, როცა მომხმარებელს აქვს წვდომა ინტერნეტთან, რადგან აპლიკაციას სერვერთან დაკავშირება უნდა შეეძლოს.
Subscribed - იმ თამაშების სია, რომელიც მომხმარებელმა უკვე აირჩია და მონიშნა, როგორც მისთვის საინტერესო. (სიიდან თამაშის წაშლა ხდება მატჩის დამთავრებიდან რამდენიმე საათის შემდეგ)
აპლიკაციის შესაქმნელად გამოვიყენეთ Android SDK.
Tumblr media
სერვერი -  java-ზე დაწერილი პროგრამა რამდენიმე წამში ერთხელ დაუკავშირდება livescore.com-ს, პარსავს მიღებულ html-ს და ყოველ ჯერზე აბრუნებს იმ მატჩების სიას, რომლებშიც მოხდა რაიმე განახლება. ამ სიას წერს რაღაც ფაილში და გზავნის მას სერვერთან. ჩვენი მობილურის აპლიკაცია ამ სერვერს უკავშირდება ხოლმე, როცა მომხმარებელმა სასურველი მატჩები უნდა აირჩიოს.
Tumblr media
ეს პროგრამა თავად აფიქსირებს ყველა მომხდარ განახლებას და შემდეგ, თითოეული განახლებული მატჩის შესახებ ინფორმაცია ეგზავნება ამ მატჩით დაინტერესებულ ყველა მომხმარებელს.
Tumblr media
შენიშვნა: განახლებას ამ ეტაპზე ვეძახით შემდეგს: თამაშის დაწყება, პირველი ტაიმის დამთავრება, პირველი ტაიმის დასრულება, მეორე ტაიმის დაწყება, მატჩის დასრულება, მატჩის დამატებით დროში გადაყვანა, გოლის გატანა, მატჩის შეწყვეტა, მატჩის გადადება.
მესიჯების გაგზავნის სერვისი
Tumblr media
მესიჯების გაგზავნის სისტემის ბევრი ალტერნატივა არსებობს. ჩვენ ამჯერად არჩეული გვაქვს შემდეგი: Twilio - მსოფლიოში ერთ-ერთი ყველაზე ცნობილი სერვისი მესიჯების გასაგზავნად (შეიცავს API-ს).
მომავალი გეგმა
გავხადოთ სერვისი ხელმისაწვდომი არა-ანდროიდის მომხმარებელთათვისაც: მომხმარებელი გამოგზავნის ცარიელ მესიჯს რომელიმე ფიქსირებულ ნომერზე, შემდეგ ჩვენ უკან გავუ��ზავნით მიმდინარე მატჩების სიას. შემდეგ ის თვითონ გამოგვიგზავნის უკან ტექსტური შეტყობინების სახით მისთვის საინტერესო მატჩებს. სხვა დანარჩენი იგივე იქნება.
გვყავდეს სპონსორი, რომელიც გადაიხდის მესიჯების თანხას (სანაცვლოდ შეიძლება სპონსორის რეკლამა ან უბრალოდ დასახელება მოყვებოდეს ყოველ მესიჯს), ან მივყიდოთ ჩვენი აპლიკაცია რომელიმე ტოტალიზატორს.
განვიხილოთ სხვა სახის ცვლილებებიც. მაგალითად, აუტები, კუთხურები, ყვითელი/წითელი ბარათები და ა.შ.
განვავრცოთ რაც შეიძლება მეტ სპორტის სახეობაზე.
ავარჩევინოთ მომხმარებელს სასურველი ტიპის განახლებები (ანუ რა აინტერესებს ზუსტად, მხოლოდ გატანილი გოლები თუ ვთქვათ კუთხურები ან რაიმე სხვა)
ჩვენი სერვერის კოდი ფაქტობრივად შეიცავს ჩვენს მიერ დაწერილ API-ს მიმდინარე მატჩების ანგარიშების მისაღებად. გამომდინარე იქიდან, რომ ამჟამად ინტერნეტში ვერ ვნახეთ ნორმალური ანალოგიური API, შეიძლება ჩვენი კოდი ამ კუთხითაც გამოვიყენოთ (შეიძლება livescore.com-ს შევთავაზოთ)
გუნდის პრეზენტაცია ჰაკათონისთვის: გადადით ბმულზე
გუნდ Buzz Lightyear-ის წევრები:
გიორგი კიკოლაშვილი
კოტე უჯმაჯურიძე
ლაშა ლაკირბაია
აქვე შეგახსენებთ, რომ InstantScore hack@CST-ის პროექტების ათეულში გავიდა და ერთ-ერთი ყველაზე გამორჩეული იყო. 
5 notes · View notes
unihack-blog · 11 years ago
Text
Interactive Glove a.k.a Google Glove
Tumblr media
პროექტი Interactive Glove  hack@CST-ზე მესამე ადგილის გამარჯვებული გახდა.
ინტერაქტიული ხელთათმანი წარმოადგენს ერთგვარ ბეტა დემონსტრაციას იმ სრული პროექტისა, რომელიც მოგვივიდა აზრად. მიზანი მარტივია: მოხდეს ადამიანის ვირტუალურ სამყაროსთან დაკავშირება, რაც მაქსიმალურად იქნება მიახლოებული რეალობასთან.
ჰაკათონის მსვლელობისას, 48 საათის განმავლობაში ავაწყეთ ხელთათმანი, რომელსაც აქვს წვდომა Adobe Flash-ით დაწერილ კომპიუტერულ აპლიკაციასთან. კავშირი შემდეგში მდგომარეობს: მომხმარებლის ხელის მოხრა - მოძრაობა აისახება Flash App-ში 2D სიმულაციის სახით, ხოლო როდესაც კომპიუტერში ვირტუალური ხელი მოხრისას დაიჭერს ვირტუალურ სხეულს (ცხადია, მას შემდეგ, რაც სხეული ხელში მოხვდება, ხელი ვეღარ მოიხრება), ხელთათმანს ეგზავნება ინფორმაცია, ვირტუალური ფიზიკური კონტაქტის თაობაზე და ირთვება ჩამკეტი ბლოკი, რომელიც საშუალებას არ აძლევს მომხმარებელს მეტად მოხაროს ხელი (რეალურად). როდესაც მომხმარებელი ხელს გაშლის და, შესაბამისად, ვირტუალურადაც გაათავისუფლებს სხეულს, ჩამკეტი ბლოკი გაიხსნება და ხელის მოხრა კვლავ გახდება შესაძლებელი.
Tumblr media
მექანიზმი და მუშაობის პრინციპები:
რადგან ჰაკათონზე ვმუშაობდით, შევეცადეთ პროექტი ჩვენს ირგვლივ არსებული მასალების “დაჰაკვით” აგვეწყო. იმისთვის რომ ყველაფერს ემუშავა, უნდა გაევლო 7 ეტაპი:
თითის მოხრის დაფიქსირება ხელთათმანის მიერ;
დაფიქსირებული მონაცემის Flash აპლიკაციასმდე მიწვდენა;
Flash-ის მიერ ამ ინფორმაციის დამუშავება და სიმულაციის სახით ასახვა;
დადგენა ეხება თუ არა ვირტუალური ხელი ვირტუალურ სხეულს;
updateMyLook() ფუნქციის შესრულება, რაც გამოასწორებდა ვიზუალურ “ბაგებს”;
ხელის ჩამკეტი სისტემისთვის ინფორმაციის გაგზავნა -უჭირავს თუ არა სეხული;
ხელთათმანის ჩამკეტის სისტემის მიერ ინფორმაციის მიღება და შესაბამისი პროცესის შესრულება (ჩაკეტვა / გახსნა).
Tumblr media
ეტაპი 1: თითის გასწვრივ დამონტაჟებულია კათეტერი, რომელიც ირგვლივ დალუქულია და სინათლეს არ ატარებს. ერთი ბოლოდან ვანათებდით შუქდიოდით (LED), ხოლო მეორე მხარეს დამონტაჟებულია ფოტორეზისტორი. თითის მოხრისას ერთი ბოლოდან მეორე ბოლოში ნაკლები სინათლე აღწევს, შესაბამისად ფოტორეზისტორის წინაღობა იზრდება და სწორედ ამ ცვლილებით გამოწვეული ძაბვა ეგზავნება არდუინოს.
ეტაპი 2: არდუინო Serial Proxy-ს მეშვეობით ამყარებს კომუნიკაციას Flash-თან და გზავნის პირველ ეტაპზე მიღებულ რიცხვს, ხოლო Flash კითხულობს და ცვლადში ამახსოვრებს.
ეტაპი 3: მიღებული ინფორმაცი�� (Data) დამუშავდება (კალიბრირდება, ხდება მისი მაპინგი), და ვირტუალურ ხელს ეგზავნება მოხრის კუთხე, რომლისკენაც თითები სწრაფი ანიმაციის სახით მიისწრაფვიან, რათა თავიდან იქნას აცილებული “noise” და ბამპინგი.
Tumblr media
ეტაპი 6: იგივე Serial Proxy-თი ხდება ჩამკეტი სისტემის მდგომარეობის გადაცემა Arduino-სთვის, გადაცემული მონაცემი წარმოადგენს ‘1’ ან ‘0’-ს შესაბამისად თუ რა მდგომარეობაში გვინდა იყოს ჩამკეტი - ღია თუ დახურულ.
ეტაპი 7: ხელთათმანი მიიღებს ინფორმაციას და ჩაკეტავს კბილანს თუ საჭიროა, თუ არა, მოადუნებს ჩამკეტის მოტორს და სპეციალური ზამბარა მოაშორებს ჩამკეტ ღერძს კბილანებს.
გამოყენება
ხელთათმანის მაგალითზე შესაძლებელია შეიქმნას მთლიანი კოსტუმი, რასაც დაემატება ვირტუალური რეალობის აღმქმელი სათვალეები (VR Glasses), და შესაძლებელი იქნება ადამანის 3D სივრცეში გადაყვანა - Full Experience. თუნდაც მარტო ხელთათმანის გამოყენება პატარა დამატებითი ვიბრაციის მოტორებით მაგარი იქნება Counter Strike-ის ტიპის თამაშებში და სხვა. მოკლედ თამაშებში ძაან მაგარი რაღაცაა და ერთი სული მაქ როდის ვნახავთ :)
Tumblr media
მეორე გამოყენება არის რობოტიკის განხრით - რობოტი, რომელსაც მართავს ადამიანი, და არა მარტო მართავს, შეიგრძნობს კიდევაც :) ანუ გრძნობს რასაც ის გრძნობს, ამითი მმართველს ასმაგად გაუადვილდება ოპერაციების შესრულება რობოტით - იქნება ეს სპეციალური მისიები, თუ ქიმიური ექსპერიმენტები, სადაც უშუალოდ დასწრება საშიშია და ასე შემდეგ…
კიდევ უფრო მომავალში თუ გავიხედავთ, კოსტუმის დაპროგრამება შეიძლება ისე, რომ თვითონაც შეეძლოს შენი მართვა და გასწავლის ცეკვას, ან თუ რაღაც არ შეგიძლია თვითონ გააკეთებს, დაგეხმარება მძიმე წონის აწევაში თავისი ჩამკეტების მეშვეობით, ისე, რომ შენ ძალა არ დაგაწვება…
მოკლედ, გამოყენება აქვს უამრავი.
პრობლემები
ერთადერთ მნიშვნელოვან პრობლემას წარმოადგენს მთლიანი სისტემის ოპტიმალური და გონივრული დაგეგმვა, რაც გულისხმობს მის დროის ოპტიმიზაციას, პატარა ზომასა და მრავალფუნქციურობას. ამაზე მიდის მუშაობა.
გუნდის წევრები:
დიმიტრი ცხოვრებაძე - პროექტის ��დეა, პროგრამული უზრუნველყოფა (Adobe Flash - Actionscript, Arduino CC, Processing IDE, MAX Script), მოხრის და ჩამკეტი სისტემების პრინციპი.
ლაშა გეწაძე - ხელთათმანის სისტემის ესემბლინგი, ჩამკეტი სისტემის პრინციპი.
სიმონ ინვია - წრედები, კომპლექსური წრედები, ჩამკეტი წრედი - ემპლიფაიერი.
გიორგი მეშველიანი - დიზაინი, 3D მოდელი (რობოტის ხელი).
მთელი გუნდი დიდ მადლობას ვუხდით ჰაკათონის ორგანიზატორებს და ჟიურის, იმისთვის, რომ ძალიან მაგარი რაღაც ჩაატარეს და ვაფასებთ მათ ძალისხმევას, დარწმუნებულები ვართ მომავალში ყველაფერი უფრო გრანდიოზულ და უფრო მაგარ სახეს მიიღებს :)
7 notes · View notes
unihack-blog · 11 years ago
Link
20-21-22 დეკემბერი, კავკასიის ტექნოლოგიების სკოლა. პირველი სტუდენტური, 48 საათიანი ჰაკათონი საქართველოში! 100+სტუდენტი, 5+უნივერსიტეტი, 10000+ლარი პრიზებში! Come and code like a motherfucker. DO EPIC SHIT!
1 note · View note
unihack-blog · 11 years ago
Photo
Tumblr media
it's all yours <3
1 note · View note