top of page

Micro-ros ve raspberry pico hakkında

  • Yazarın fotoğrafı: Uzay gençer
    Uzay gençer
  • 26 Ağu 2024
  • 3 dakikada okunur

Halihazırda yeni sıfırlanmış bilgisayarımın uzerınde çalıştıpım projelerı kurarken sizlerle de paylaşmak istiyorum bu sadece 1 örnektir


MİCRO ROS NEDİR ?

Micro-ros normal ros 2 dağıtımınızın mikro kontolculer üzerinden veri okuyabılmesını sağlar. En basit haliyle bilgisayarınız ros2'nin sürümle,n, kullanabılırken mikro kontrolcünüz bunu yapamamktadır. Ne bunu yapabilecek ram ne de ghz lerce işlemciye sahiptir.Bundan dolayı micro-ros a ihityacımız vardır.


Nelere İhtiyaç Duyacagız Hangi cihazı kullanacağım ?

  • Ubuntu 22.04.

  • Ros2 Humble (ubuntu 22.04 ile uyumlu olduğu için kullanacağım).

  • 1 adet raspberry pi pico h ve baglantı kablosu (Herhangi bir versiyonu olur).

  • 1 adet bilgisayara ihtiyacınız var.


(Not!!! pico her usb kablosu ile çalışmamaktadır. Çalıştığını doğrulayın

  1. Lütfen pico üzerindeki Bootsel tuşuna basarak usb yardımı ile pc ve picoyu baglayın).

  2. Önünüze içerisinde 2 adet soya bulunan bir klasor açılacak acılmazsa kabloyu değiştirip tekrarlayınız.


İlerlemekte olduğum videonun kaynağı bu videodur


Hadi başlayalım !!!



Önce "Pi pico c ++ sdk" ya ihtiyacımız var;

  1. https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk Bu siteden başlıyoruz kuruluma kod satılarını buradan da bulabilirsiniz.




sudo apt install cmake g++ gcc-arm-none-eabi doxygen libnewlib-arm-none-eabi git python3 -y
  • sudo ---> "super user do" komutudur. Bilgisyarınıza bütün izileri sağlamaktadır.

  • apt ---> Sezgisel komutlarla ortaya cıkan davranızlara güvenli bir arayüz oluşturur.

  • install ---> yükleme işlemini gerçekleştirir sonrasında boşlukla gelen "cmake ,g++ ve gcc yi yüklecektir"

  • git python3 ---> github üstünden pyhton3 u kullanacaktır

  • -y ---> yükleme işlemini otomatik olarak onaylayacaktır.


  • git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git $HOME/pico-sdk


  • Bu kod bıraz uzun sürebilir githubdan dosyaları yükleyecek.

echo "export PICO_SDK_PATH=$HOME/pico-sdk" >> ~/.bashrc
source ~/.bashrc
  • doğruca bu kod satırını kullanarak kullanarak bilgisayarın sdk nın nerede olduğunu bilmesını sağlıyoruz ve terminalı tekrar başlatması için "source .bashrc" komutunu giriyoruz


  • bu kod linkde verilen git dosyasının humble dalından giti kopyalayacak.




 cd micro_ros_raspberrypi_pico_sdk/
  • micro ros dosyasına giriyoruz




mkdir build && cd build
  • terminal üzerinden build dosyasını yaratıyoruz ve build dosyasına giriyoruz

şu anda bu klasörde bulunuyor olacagız ~/micro_ros_raspberry_pico_sdk/build/$



  • Build klasörunun içindeyken

cmake .. && make

Bu kod satırı c++ dosyalarının derlenmesı için dosyalar tamamlandı şimdi sıra 2. aşama


2. aşama Picotool indireceğiz


  • kod satırına

cd

  • ana terminale dönuyoruz ve

sudo apt install build-essential pkg-config libusb-1.0-0-dev cmake
  • build essentials pkg-config libusb-1 kütüphanelerini indirdik




  • picotool un içine kopyalatıyoruz



  • picotool un içine giriyoruz ve tekrar dosyaları derlemesını sağlıyoruz

cd picotool/ && mkdir build &&  cd build && cmake .. && make
  • şimdi micro_ros_raspberrypi_pico_sdk dosyası içinde olusturdugumuz .uf2 uzantılı dosyayı picoya atacagız

  • ~picotool/build içerisindeyken şu satırları kullanın ve piconuzun bootsel butonuna basılarak pcnize takılmış olduğunuzdan emin olun. ve kulanıcı isminin doğru olduğuna emın olun

sudo ./picotool load /home/"kullanıcı adı"/micro_ros_raspberrypi_pico_sdk/build/pico_micro_ros_example.uf2
  • Bu kod piconun içerisine kodunuzu kopyalayacak.



sudo apt install docker.io

Bu kod satırı bır son kullaıcı paketleme uygulamasıdır zorunlu değildir ama şimdilik boyle yapacagız. Daha hızlı ilerleyebilmek için.


sudo docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:humble serial --dev /dev/ttyACM0 -b 115200
  • kod çalişmaya basladığında bağlanması için Picoyu söküp takmanız gerekebilir.


[1724671025.374199] info     | TermiosAgentLinux.cpp | init               | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1724671025.506626] info     | TermiosAgentLinux.cpp | init               | running...             | fd: 3
[1724671025.507046] info     | Root.cpp           | set_verbose_level     | logger setup           | verbose_level: 4
[1724671026.130488] info     | Root.cpp           | create_client         | create                 | client_key: 0x592FE967, session_id: 0x81
[1724671026.130559] info     | SessionManager.hpp | establish_session     | session established    | client_key: 0x592FE967, address: 0
[1724671026.140195] info     | ProxyClient.cpp    | create_participant    | participant created    | client_key: 0x592FE967, participant_id: 0x000(1)
[1724671026.143862] info     | ProxyClient.cpp    | create_topic          | topic created          | client_key: 0x592FE967, topic_id: 0x000(2), participant_id: 0x000(1)
[1724671026.146144] info     | ProxyClient.cpp    | create_publisher      | publisher created      | client_key: 0x592FE967, publisher_id: 0x000(3), participant_id: 0x000(1)
[1724671026.148552] info     | ProxyClient.cpp    | create_datawriter     | datawriter created     | client_key: 0x592FE967, datawriter_id: 0x000(5), publisher_id: 0x000(3)
  • kodumuz ve haberleşmemiz çalışıyor şimdi kontrol edelim

ctrl+alt+t komutu ile yeni bir terminal açalım
  • ros2 konu başlıklarına bakalım ve termınalde yazalım

ros2 topic list 

Çıktıları sunlar olacak

uzygncr@Dell:~$ ros2 topic list
/parameter_events
/pico_publisher
/rosout

Bu bize "/pico_publisher" başlığının yaratldığını söylemektedir. Veeğer dinlemek istersek

  ros2 topic echo /pico_publisher


ve Çıktıları

uzygncr@Dell:~$ ros2 topic  echo /pico_publisher 
data: 0
---
data: 1
---
data: 2
---
data: 3
---
data: 4
---
data: 5
---
data: 6
---
data: 7
---
data: 8
---
data: 9
---
.....

Tebrikler.  Kurulumu başardınız bu cıktılar çalıştığını gösteriyor

Komentarze


bottom of page