Mengontrol Robot Self-Balancing EduMip Menggunakan Joystick PS4 Dualshock 4 via ROS


Ini adalah contoh sederhana bagaimana menggunakan ROS Anda dapat menghubungkan beberapa perangkat melalui jaringan dan mengirim data kontrol.

Di bawah potongan di akhir adalah demonstrasi video kontrol robot dari joystick.

Kami membutuhkan joystick itu sendiri, Anda dapat mengambilnya dari ps4 Anda atau membelinya di toko. Saya membeli dualshock 4 v2, versi pertama juga harus berfungsi.

Anda juga memerlukan bluetooth di komputer dengan ROS, dalam dokumentasi driver, rekomendasikan usb blutooth adapter versi 2.1+. Saya telah bekerja dengan sempurna dengan adaptor yang terpasang di laptop. Anda juga dapat menghubungkan joystick dan hanya kabel usb.

Kemudian di Ubuntu dengan ROS Anda harus menginstal driver sesuai dengan instruksi .

Setelah menginstal driver dan menghubungkan joystick melalui bluetooth, kami meluncurkan utilitas grafis jstest-gtk dan kami melihat bahwa kami memiliki dua joystick, kami membutuhkan yang kedua, karena ia memiliki semua tombol dan stik.



Karena ROS bekerja dengan joy0 secara default, kita perlu mendefinisikannya kembali di joy1:

sudo chmod a+rw /dev/input/js1 rosparam set joy_node/dev "/dev/input/js1" 

Sekarang kita perlu menghubungkan semuanya ke satu jaringan. Laptop dengan ROS akan menjadi master, dan EduMip dengan BeagleBone Blue ROS akan terhubung melalui wifi ke laptop. Kedua perangkat berada di jaringan lokal router wifi.

Pada PC Anda, atur variabel lingkungan ROS untuk mencari wizard ros (roscore) di PC dengan perintah .bashrc (tambahkan perintah ini ke akhir file .bashrc Anda):

 export ROS_MASTER_URI=http://192.168.10.101:11311” <-   ROS IP- ,     ros (roscore). “export ROS_IP=192.168.10.101” <-   ROS IP-   ( ). 

Di EduMIP Anda, atur variabel lingkungan ROS sehingga menemukan wizard ros (roscore) pada PC dengan perintah .bashrc (tambahkan perintah ini ke akhir file .bashrc Anda):

 export ROS_MASTER_URI=http://192.168.10.101:11311” <-   ROS IP- ,     ros (roscore). “export ROS_IP=192.168.10.102” <-   ROS IP-   ( EduMIP). 

Tetap hanya menulis program yang akan membaca posisi tongkat dari joystick dan mengirim ke topik, dan robot untuk membaca topik ini.

 // Callback function for joystick pessaged void joyCallback(const sensor_msgs::Joy::ConstPtr& joy) { // X vel driven by left joystick for and aft command_velocity_twist.linear.x = joy->axes[1]; // heading driven by left joysticj left and right command_velocity_twist.angular.z = joy->axes[0]; } // this function gets called at 10Hz to publish the command_velocity array of 2 floats void timerCallback(const ros::TimerEvent& event) { cmd_vel_publisher.publish(command_velocity_twist); } 

Di PC Anda, Anda dapat melihat node dan topik secara visual dengan menjalankan rqt_graph:



Demonstrasi kontrol robot menggunakan joystick:


Rangkuman: Menggunakan ROS, Anda dapat membangun sistem untuk pekerjaan yang didistribusikan di beberapa perangkat dan, misalnya, melakukan perhitungan besar di komputer utama, hanya menyisakan apa yang diperlukan untuk tanggapan cepat pada robot itu sendiri. BeagleBone Blue memiliki subsistem waktu-nyata (PRU - ICSS) yang dapat diprogram.

PRU-ICSS terdiri dari mikroprosesor yang didasarkan pada dua core 32-bit dengan arsitektur RISC dan beroperasi pada frekuensi 200 MHz. Setiap core memiliki area memori sendiri, serta area memori yang kompatibel dengan Linux, dapat menggunakan pin serba guna yang terletak di konektor P8-P9 dan menghasilkan interupsi.

Selain itu, sensor MPU9250 yang dipasang pada BeagleBone Blue saat mengubah posisi dapat membentuk interupsi tempat Anda dapat menggantung fungsi Anda, yang persis seperti yang dilakukan di EduMip.

Jika kita berbicara tentang langkah evolusi berikutnya, ini adalah ROS2, di mana salah satu perbedaannya adalah DDS (Layanan Distribusi Data), yang memungkinkan Anda membangun jaringan robot dan perangkat yang berinteraksi berbeda di mana ROS tidak berjalan.

Source: https://habr.com/ru/post/id413901/


All Articles