Gallery

Kinect – დღე 4.

კინეკტი – დღე 4.  

განვიხილოთ კინეკტის შემადგენელი ცალკეული სისტემების მუშაობის და მართვის პრინციპები.
დავიწყოთ ყველაზე მარტივით – კინეკტის დახრის კუთხის მოწყობილობით. ობიექტებზე საუკეთესო რაკურსით დაკვირვების მიზნით, კინეკტი აღჭურვილია პატარა ელექტროძრავით, რომელიც უზრუნველყოფს კინეკტის დახრას -27 (MinElevationAngle) –  +27 (MaxElevationAngle) გრადუსის ფარგლებში.  საინტერესოა, რომ  დახრის კუთხე განისაზღვრება არა კინეკტის სადგამის მიმართ, არამედ  ჰორიზონტის მიმართ. ანუ, კინეკტს გააჩნია ვერტიკალის განსაზღვრის უნარი – იგი მგრძნობიარეა გრავიტაციის მიმართ.
მოვიმარჯვოთ ჩვენი პროგრამის ლისტიგი (იხ. Kinekt – დღე 3)  და გავიხილოთ პროგრამის ის ნაწილი, რომელიც პასუხისმგებელია კინეკტის დახრის კუთხის ცვლილებაზე.
თუ ცვლადი sensor განსაზღვრული გვაქვს როგორც
Private sensor As KinectSensor, მაშინ
sensor.MaxElevationAngle=27, sensor.MinElevationAngle=-27. ხოლო კონსტრუქცია

If Me.sensor.ElevationAngle < Me.sensor.MaxElevationAngle Then
Me.sensor.ElevationAngle += 5
End If

ყოველი მიმართვისას უზრუნველყოფს კინეკტის დახრის კუთხის (ElevationAngle) გაზრდას 5 გრადუსით. „Me.sensor.ElevationAngle += 5“  ნიშნავს – არსებულ სიდიდეს დაემატოს 5.  „Me“ – უბრალოდ აღნიშნავს, რომ ცვლადი sensor ეკუთვნის მოცემულ ფანჯარას, ჩვენს შემთხვევაში MainWindow.

იმის გამო, რომ მაქსიმალური დასაშვები კუთხის მნიშვნელობა 5-ის ჯერადი არ არის (27 გრადუსი), რაღაც მომენტში Me.sensor.ElevationAngle მნიშვნელობა გადააჭარბებს 27-ს და პროგრამა გვამცნობს შეცდომის შესახებ. მოდით განვიხილოთ ეს კონსტრუქცია უფრო დაწვრილებით. სიტყვა-სიტყვით აქ წერია:

თუ Me.sensor.ElevationAngle<Me.sensor.MaxElevationAngle,მაშინ
             Me.sensor.ElevationAngle გავზარდოთ 5-ით
შედარების დასასრული


ვთქვათ, თავდაპირველად კუთხე უდრის ნულს. მაშინ პირველი მიმართვისას სრულდება პირობა Me.sensor.ElevationAngle < Me.sensor.MaxElevationAngle და, მაშასადამე, კუთხე მოიმატებს – გახდება 5-ის ტოლი. მეორედ მიმართვისას იგი 10- გაუტოლდება. მესამედ 15-ს. მეოთხედ 20-ს. მეხუთედ 25-ს. მეექვსე ჯერზე პირობა ისევ შესრულდება (25<27) და Me.sensor.ElevationAngle გაუტოლდება 30-ს, რაც დაუშვებელია. ადგილი ექნება შეცდომას და პროგრამა შეწყვეტს მუშაობას. ამიტომ ჩვენ პროგრამაში ვიყენებთ დირექტივას On Error Resume Next. ეს უბრალოდ ნიშნავს „შეცდომის აღმოჩენისას, შეცდომას ნუ მიაქცევ ყურადღებას – გააგრძელე შემდეგი ბრძანების შესრულება“

ლიტერატურაში აღნიშნულია, რომ კინეკტის დახრის კუთხის ხშირი ცვლილება რეკომენდირებული არ არის – ელექტრო ძრავა ვერ უძლებს განუწყვეტლივ მუშაობას. ასევე დაუშვებელია ხელით, ძალის გამოყენებით დახრის კუთხის შეცვლა – მექანიზმის კბილანები შეიძლება ჩაიშალოს.
მაგრამ სრულიად დასაშვებია დახრის კუთხის მნიშვნელობის განუწყვეტლივ წაკითხვა. ეს საშუალებას მოგვცემს მუმივად ვაკონტროლოთ იმ მოწყობილობის (მაგ., რობოტის ან ელექტრო სკუტერის) გადახრა ვერტიკალიდან, რომელზეც კინეკტია დამონტაჟებული.

electric-skuter

ჩაამატეთ თქვენს პროგრამაში კიდევ ერთი კნოპი (Button3) და Textbox-ი  (Textbox1). მაშინ თქვენ შეგეძლებათ ამ კნოპზე დაჭერით წაიკითხოთ ვერტიკალიდან გადახრის კუთხის მნიშვნელობა.

Private Sub Button3_Click(sender As System.Object, _
 e As System.Windows.RoutedEventArgs) Handles Button3.Click
 TextBox1.Text = Me.sensor.ElevationAngle.ToString
 End Sub

გაუშვით პროგრამა და დააჭირეთ ახალ Button3. თუ კინეკტი არ გაქვთ დამაგრებული სადგამზე (მაგიდაზე), გადახარეთ იგი და კვლავ დააჭირეთ Button3.

2 responses to “Kinect – დღე 4.

  1. რობოტიქს

დატოვეთ კომენტარი

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s