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 -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
git clone -b humble https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk.git
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