Micro-ros ve raspberry pico hakkında
- 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
Lütfen pico üzerindeki Bootsel tuşuna basarak usb yardımı ile pc ve picoyu baglayın).
Ö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;
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 -ysudo ---> "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 ~/.bashrcdoğ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
git clone -b humble https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk.gitbu 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 buildterminal ü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 .. && makeBu 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
cdana terminale dönuyoruz ve
sudo apt install build-essential pkg-config libusb-1.0-0-dev cmakebuild 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.uf2Bu kod piconun içerisine kodunuzu kopyalayacak.
sudo apt install docker.ioBu 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 115200kod ç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ımros2 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
/rosoutBu bize "/pico_publisher" başlığının yaratldığını söylemektedir. Veeğer dinlemek istersek
ros2 topic echo /pico_publisherve Çı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


Yorumlar