23 Ağustos 2022 Salı

Docker Eğitim Notları

3 Haziran 2008 Salı

Resim çekmek, dosya aktarmak ve yürütmek

cd /media/sda1
ls

komutlarını verdiğinizde örnek programlar olduğunu göreceksiniz:

nao-geode:/media/sda1$ ls
output.ppm robotBatteryOff test_i2c_version test_leds_eyes
output.raw test_camera test_leds_ears test_speaker

Bunları ./test_camera şeklinde çalıştırabilirsiniz. Bu örnekteki program fotoğraf çekiyor ve aynı dizine output.ppm ve raw olarak kaydediyor. Raw dosyasının içinde bir şey göremedik ama ppm dosyası kırmızı-yeşil bir resim veriyor bize.

Bu dosyaları kendi bilgisayarımıza almak için kendi bilgisayarımızda service openssh start komutuyla SSH sunucu başlatıyoruz ve robota bağlıyken şu örnek komutu çalıştırıyoruz:

scp output.ppm emre@192.168.142.130/home/emre/Desktop

Yaptığı şey bulunduğu klasördeki output.ppm dosyasını 192.168.142.130 IP'li makinadaki emre kullanıcısına SSH üzerinden bağlanıp onun masaüstüne kopyalamak. Artık geriye vision grubunun resmi analiz etmesi kalıyor...

Bilgisayardan robota dosya aktarımı ise şu şekilde: (ama kullanmaya gerek yok pek)
scp yereldosya root@ROBOTIP:/opt/naoqi/bin

Robota dosya aktarmaya gerek olmayabilir çünkü bilgisayarda yazdığımız programlar ağ üzerinden robota bağlanarak ona komut gönderiyor. Örnek bir ruby kodu şu şekilde:

# =========== CONNECT =============
IP = "192.168.142.166" # Your Robot IP Adress

PORT = 9559
if ENV['AL_DIR'].nil?
puts "ERROR : AL_DIR not defined!"
exit 1
end
require ENV['AL_DIR']+'/extern/ruby/aldebaran/allib'
motion = Aldebaran::ALProxy.new("ALMotion", IP, PORT)
puts "Connected to ALMotion at #{IP}:#{PORT}"
# ==============================

###################
# WALK PROCESS
###################

#(StepLength, StepHeight, StepSide, MaxTurn, ZmpOffsetX, ZmpOffsetY)
motion.setWalkConfig(0.06,0.02,0.04,0.3,0.02,0.018)
motion.walkStraight(0.2,30)
motion.turn(-180*MOTION::TO_RAD,30)

motion.waitUntilWalkIsFinished()

#(StepLength, StepHeight, StepSide, MaxTurn, ZmpOffsetX, ZmpOffsetY)
motion.setWalkConfig(0.07,0.05,0.02,0.3,0.0,0.0)
motion.walkStraight(0.2,120)
###################

İşte tüm bu kodları yuru.rb adıyla bilgisayarımıza kaydedip ruby yuru.rb komudunu verirsek program robota bağlanıp robotu yürütebiliyor. Şöyle bir sıkıntı mevcut. Arada sırada robotumuz IP adresini feshediyor dolayısıyla ulaşılamaz hale geliyor. Ondan sonra kulaklarından mavi ışıklar eşliğinde pıt pıt pıt sesler geliyor 10 saniyede bir. Fişini çekmek, yeniden başlatmak, pilini çıkarıp takmak vs. işe yaramadı. Bir saat geçtikten sonra kendiliğinden düzeldi. Birkaç yürüme denemesi yaptıktan sonra tekrar aynı durum meydana geldi. Biz de orada bırakmak durumunda kaldık. Ayrıca robotun her tarafı dökülüyor. Kırmızı kısımları ellenince uçuyor. Dikkat!

Adım 2

  • Öncelikle bir önceki yazıdaki adımları uygulamanız gerekiyor. Sadece network ayarlarını bir daha yapmanız gerekmemekte

    nano /etc/wpa_supplicant.conf komudunu vererek wireless ayarlarına gir, içerisine
    network={
    ssid="IsikWiFi"
    key_mgmt=NONE
    }


    bunları nano kaydetmiş zaten sizin yapmanız gereken wireless için restart etmek yazılan şekilde.
  • home klasörünün altında oluşturacağımız naoqi başka isimde olabilir ama bu dosya önemli. Bunun içinde sdkı koymamız gerekmekteyiz.
  • İkinci adım olarak aldebaran'ın örnek programlarını derlemeye çalıştım. Yapabildiğim kadarıyla adım adım anlatmaya çalışacağım çünkü cmake ile çalıştırma adımında patladı.

    1. Öncellikle aldebaran robotics sitesinden NaoQi-0.1.13 i indirmeniz gerekmekte tabi birde NAO sdk sını indirmelisiniz.
    2. Bu Naoqi bütün her türlü dökümanı içinde bulundurmaktadır Nao ile ilgili.Burdan doc klasörünün içinden HTML dosyaını açıp ordan compilation kısmı var orayı açtım ve okumaya başladım=)
    3. Orda yazan adımları tek tek takip etmeniz gerekmekte birini atlayınca ya da yanlış anlayınca patlıyor.
    4. Bir diğer önemli noktada robotun içine kesinlikle kod upload etmiyoruz sanırsam çünkü bir değişken export ettiriyor ve direk o değişken sayesinde kodun bulunduğu yerin adresini yazıyoruz.

      export AL_DIR="/home/mylogin/naoqi/" bu satırlarla tanımlıyoruz tabi kendi login ve dosya isminizle biraz modifiye etmeniz gerekiyor.


    5. Kodu derleme konusuna gelince aldebaran'ın sitesinde bir cross complation programını da indirmeniz gerekmekte.
  • Bu basamakları yaptıktan sonra örnekleri compile edebilecek duruma geliyormuşuz öyle diyor Nao ware documentation.
  • Complation instruction diye bir bölüm var 2 maddelik bunu okumanızı öneriyorum yararlı bilgiler var.
  • Bundan sonra programı çalıştırmak için 10 adımlık bir yazı var onu yapmaya başladım.Değişken burda işe yarıyor.Her seferinde aynı yolu yazmamız gerekmiyor buda
/home/mylogin/naoqi/ bunu bir daha yazmamızı sağlıyor.
  • Bundan sonra $AL_DIR değişkeni ile yani yarattığımız buna naoqiden sonraki gitmek istediğimiz adresi yazıyoruz örnek olarak $AL_DIR/modules/src/examples/ bunu yazınca konsole a bu bir directorydir diyor ve başka komut bekliyor sizden işte bundan sonra cmake ile dosyayı çalıştırmayı denedim ama no current working directory iptal edildi diye bir mesaj geldi.Yarı Türkçe yarı İngilizce çünkü pardüs=)
  • Bundan sonra cmake.dosya ismide denedim o zaman böyle bir komut yok hatası verdi.
  • Bunlardan sonra 6 basamak kalıyor ama önce cmake i yapmak lazım.

ÖNEMLİ:Bunlar linuxta yapılmıştır. Windows içinde Nao ware documantationda aynı şekilde basamak basamak anlatıyor.Linuxte yaptım çünkü bazı araçlar sadece linuxte çalışıyor diyor bir önemli hatırlatmada.

Robotun gelişi

Robot'un gelişiyle beraber yaptığımız işler şu şekilde oldu:

  1. Şarja tak.
  2. Kafasına ethernet kablosunu tak.
  3. Tuşuna basarak açılmasını ve IP adresini söylemesini sağla.
  4. Söylediği IP adresi ile ssh üzerinden bağlanarak ( ssh root@ipadresi ) kablosuz ayarlarını yap.
    1. nano /etc/wpa_supplicant.conf komudunu vererek wireless ayarlarına gir, içerisine
      network={
      ssid="IsikWiFi"
      key_mgmt=NONE
      }

      satırlarını ekle. ve Ctrl+O ve Enter ile kaydederek çık.
    2.  /etc/init.d/wireless.sh restart komudunu ver.
  5. Ethernet kablosunu çıkar. Artık yeniden başladığında kablosuz ağdan aldığı IP adresini söyleyecektir.