Kelanjutan dari serangkaian artikel.
Posting dalam seri:
8. Kami mengontrol dari ponsel-ROS Control, GPS-node7. Lokalisasi robot: gmapping, AMCL, titik referensi pada peta kamar6. Odometri dengan enkoder roda, peta ruang, lidar5. Kami bekerja di rviz dan gazebo: xacro, sensor baru.4. Buat simulasi robot menggunakan editor rviz dan gazebo.3. Mempercepat, mengganti kamera, memperbaiki gaya berjalan2. Perangkat Lunak1. BesiSaat membangun peta pada robot dalam ruang terbatas, tidak ada masalah. Dengan mengendalikan robot dari keyboard dari stasiun kontrol atau robot itu sendiri, Anda dapat secara visual mengamati pergerakannya dan menghindari hambatan yang tidak diinginkan pada waktunya. Situasinya rumit jika ada beberapa kamar. Dan di sini ada beberapa opsi untuk mengamati robot yang membangun peta jika meninggalkan ruang operator:
- Hubungkan kamera langsung ke robot;
- Gunakan sistem pengawasan video yang ada di luar robot;
- Kontrol dengan wi-fi, keyboard bluetooth, berada di dekat robot
- "membawa robot di tangan Anda" sehingga Lidar mengumpulkan data;
- Kendalikan robot dari ponsel.
Opsi terakhir mungkin tampak nyaman. Untuk mengontrol robot dari telepon, cukup miringkan (telepon) ke arah yang benar, sementara robot membangun peta. Misi seperti itu dimungkinkan.
Mari kita pertimbangkan cara mengarahkan robot dari ponsel, mengirim pesan yang sesuai ke topik ROS pada robot.
Tidak perlu menulis aplikasi terpisah di ponsel untuk tujuan yang disebutkan. Untuk memanfaatkan praktik yang ada, cukup unduh ke ponsel Anda dan instal aplikasi android dari pasar - "Kontrol ROS".
Siapkan aplikasi Kontrol ROS di ponsel Anda.
Aplikasi ini intuitif - robot ditambahkan dengan tanda "+", ip-nya diatur:
Selanjutnya, pilih "Tampilkan opsi lanjutan" dan tentukan topik untuk kereta robot:
Pesan dari ponsel akan terbang ke topik ini, dan juga akan diterima dalam format yang dimengerti ROS.
Dalam aplikasi, topik tersedia bagi kami:
- topik joystick - kontrol dari telepon;
- topik pemindaian laser - data dari LIDAR;
- nav sat topik - data robot gps;
- odom - odometry (semua yang ada di sana dari encoders dan / atau imu dan / atau lidar);
- berpose - "posisi", lokasi robot.
Kuasai topik joystick.
Robot itu sendiri tidak akan pergi, oleh karena itu, kami akan meluncurkan topik pada robot dengan driver gerak, yang telah ditampilkan dalam posting sebelumnya:
Terminal 1:
rosrun rosbots_driver part2_cmr.py
Pada ponsel di aplikasi Kontrol ROS, klik pada baris dengan nama robot dan gagal dalam menu kontrol robot:
Sekarang, jika Anda menarik joystick dengan jari Anda (ke segala arah), troli akan pergi. Semuanya sederhana di sini.
Jika Anda melihat apa yang terjadi dengan topik driver mesin yang dijalankan pada raspberry, Anda akan melihat bahwa ponsel menerbitkan dan driver menerima pesan dalam format yang sesuai:

Semua topik lain bekerja dengan prinsip yang sama.
* Jika, bagaimanapun, ada yang tidak beres, perlu, saat dalam mode kontrol robot, untuk mengklik tiga strip paralel di kiri atas layar aplikasi. Gagal dalam "Preferensi" dan kemudian pilih "Topik":
Selanjutnya, klik pada topik yang sesuai, daftarkan jalur (Nilai):
Mari kita lihat apa Lidar dalam aplikasi.
Pada robot, jalankan simpul lidar:
roslaunch rplidar_ros rplidar.launch
Jika Anda memasukkan kembali aplikasi, maka pada layar kendali robot kita akan melihat titik karakteristik dan panah biru:
* Anda juga dapat naik dengan memiringkan ponsel ke arah yang berbeda dan memilih Mode Kontrol Kemiringan:
Ada mode lain "mengemudi", bahkan dengan kemampuan untuk menunjukkan titik pada peta, langsung di telepon, tetapi karena peta sangat sewenang-wenang, perjalanan juga akan bersyarat, yaitu, pergi ke mana-mana.
Dengan topik gerak, seperti kamera (kami tidak akan mempertimbangkannya), semuanya kurang lebih jelas, kami akan berurusan dengan gps.
Ada sedikit rasa di dalam ruangan dari gps, tetapi menarik untuk melihat cara kerjanya.
Untuk tes, peluit GPS apa pun cocok. Pilihan saya adalah sebagai berikut -
Untuk membuatnya berfungsi, pertama-tama Anda harus menginstal simpul gps pada raspberry.
Tapi pertama-tama, mari kita periksa apakah peluit GPS berfungsi, jika tidak semua percakapan lain akan menguntungkan orang miskin.
Kami menempatkan paket di raspberry:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients
Pastikan peluit GPS didefinisikan di antara perangkat usb:
lsusb

Sekarang, periksa apakah gps menerima sesuatu:
gpscat -s 9600 /dev/ttyACM1
* Alih-alih ttyACM1, mungkin ada nilai lain (ttyACM0, ttyUSB0, ttyAMA0) tergantung pada port mana peluit GPS aktif.
Pesan GPS akan memercik di terminal:
Data yang lebih terstruktur (menyenangkan mata) dapat diperoleh sebagai berikut:
gpsmon /dev/ttyACM1
* Koordinat bukan milikku, yang aneh. Tidak jelas apa hubungannya dengan ini.
Instal gps node pada raspberry:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make
Sekarang kita telah mengumpulkan simpul GPS, jalankan (pada robot):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600
Jika Anda melihat topik (di terminal robot lain), Anda dapat melihat bahwa ponsel berlangganan ke satu topik, dan publikasi simpul gps berpindah ke topik lain:
Ubah topik penerimaan pada ponsel ke / perbaiki topik melalui pengaturan seperti dijelaskan di atas.
Setelah perubahan, publikasi dan penerimaan dalam satu topik:
Dan di telepon Anda dapat mengamati koordinat:
Odometri (topik / odom).
Jika Anda menjalankan catatan odometer dari posting sebelumnya, maka, ketika robot bergerak, Anda juga bisa mendapatkan kecepatan linier dan sudut robot di telepon (kecepatan tidak dihitung menggunakan gps).
Pada robot:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py
Di telepon: