Memasuki Aeronet: meluncurkan quadrocopter otonom di lingkungan virtual


Mungkin, semua orang bisa menerbangkan quadcopter sekarang, jika diinginkan. Tetapi untuk menyelesaikan masalah kontrol otonom, sehingga Anda tidak perlu memindahkan tongkat kendali jarak jauh dan terus-menerus memantau drone - dalam pengaturan ini, solusinya mungkin memerlukan banyak sumber daya: membeli, merakit, menyolder, mengonfigurasi, melepas, menjatuhkan, dan setelah jatuh - kembali ke awal siklus.


Mengajar para juri / guru Aeronet tentang proyek kami, kami dihadapkan dengan kebutuhan untuk pemrograman "entri ke topik" yang disederhanakan dari kendaraan tak berawak untuk guru robotika / ilmu komputer, yang telah memiliki seperangkat pengetahuan dasar.


Ada cara mudah untuk mempelajari dasar-dasar pemrograman penerbangan drone - lingkungan simulasi virtual, contoh langkah demi langkah penggunaan yang akan kita pertimbangkan dalam artikel kami.


Anda tidak perlu membeli apa pun untuk meningkatkan keterampilan pemrograman drone dasar Anda - cukup gunakan simulator drone jMAVSim dari proyek PX4. PX4 adalah perangkat lunak sumber terbuka yang kuat yang dirancang untuk digunakan pada berbagai kendaraan tak berawak, baik yang terbang maupun yang bepergian di darat. Kode sumber untuk perangkat lunak proyek ada di Github .


Awalnya, penulis PX4 merekomendasikan Linux Ubuntu LTS sebagai lingkungan pengembangan. Ada juga dukungan Mac. Tahun ini, lingkungan simulasi dan pengembangan untuk Windows muncul di Cygwin, yang dapat menyederhanakan kehidupan lembaga pendidikan Rusia yang menggunakan Windows di kelas ilmu komputer.


Selanjutnya, kita akan melihat proses menginstal, membangun, dan menjalankan simulator di Linux dan di bawah Windows.


Menginstal dan menjalankan jMAVSim di Linux Ubuntu


Pengembang PX4 merekomendasikan Linux Ubuntu 16.04 LTS sebagai sistem standar mereka. Linux memungkinkan Anda untuk membangun paket PX4 untuk semua sistem yang didukung (platform perangkat keras berdasarkan NuttX, Penerbangan Qualcomm Snapdragon, Linux, lingkungan simulasi, ROS).


Pertama, tambahkan pengguna ke grup dialout:


sudo usermod -a -G dialout $USER 

Mari masuk ke sistem agar perubahan diterapkan.


Toolchain pengembangan untuk Pixhawk / NuttX, termasuk jmavsim, diinstal secara otomatis menggunakan skrip ubuntu_sim_nuttx.sh . Anda perlu mengunduh skrip ke direktori pengguna dan menjalankannya menggunakan perintah


 source ubuntu_sim_nuttx.sh 

Semua pertanyaan yang diajukan oleh skrip dijawab secara positif.


Di akhir skrip, restart komputer.


Tetap bagi kami untuk mengunduh kode sumber pengontrol yang mengontrol penerbangan dan membuatnya.


Kami mengkloning repositori perangkat lunak pengendali penerbangan PX4 dengan github:


 git clone https://github.com/PX4/Firmware.git 

Dalam folder Firmware kita sekarang memiliki kode sumber lengkap yang dijalankan di pengontrol penerbangan (dan dalam simulator). Di masa depan, itu bisa bermanfaat baik untuk tujuan belajar dan untuk membuat perubahan padanya. Buka folder Firmware yang disalin dari repositori:


 cd src/Firmware 

Kami mengkompilasi dan menjalankan simulator:


 make px4_sitl jmavsim 

Proses kompilasi pertama membutuhkan waktu. Setelah berhasil diselesaikan, konsol PX4 akan muncul di layar:


Konsol PX4


Drone dapat dikirim ke penerbangan dengan memasukkan perintah di konsol:


 pxh> commander takeoff 

Drone dalam penerbangan


Mendaratkan komando commander land , hentikan simulasi - CTRL + C atau perintah shutdown


Instal dan jalankan jMAVSim di Windows


PX4 Cygwin toolbox muncul pada 2018. Ini adalah cara paling ampuh untuk mengkompilasi / mengembangkan PX4 untuk Windows. Untuk menginstal - unduh dan jalankan file instalasi dari Github atau Amazon .


Secara default, toolchain diinstal di folder C: \ PX4.


Pada langkah terakhir penginstal, Anda dapat mencentang kotak โ€œklon repositori PX4, bangun dan jalankan simulasi dengan jMAVSimโ€ (klon repositori PX4, kompilasi dan jalankan simulator jMAVSim).


Lingkungan pengembangan diluncurkan di Cygwin menggunakan file run-console.bat di direktori instalasi (secara default, C: \ PX4).


Jika Anda lupa mencentang kotak peluncuran jMAVSim selama proses instalasi - di Cygwin Anda dapat mengkloning repositori dan menjalankan simulator menggunakan perintah:


 git clone --recursive -j8 https://github.com/PX4/Firmware.git cd Firmware make px4_sitl jmavsim 

Setelah dikompilasi, konsol PX4 dan jendela simulator akan muncul di layar:


Jendela simulator JMAVSim untuk Windows


Saya belum menampilkan langit dan pohon di Windows, sebagai ganti latar belakang hitam, seperti yang dilaporkan ke pengembang simulator .


Perintah konsol untuk mengendalikan drone adalah sama: lepas landas - commander takeoff , mendarat - commander land , menghentikan simulasi - CTRL + C atau shutdown .


Penerbangan dengan Program Stasiun Ground QGroundControl


Program QGroundControl memungkinkan Anda untuk mengonfigurasi drone sepenuhnya pada platform PX4 atau ArduPilot, serta merencanakan dan melakukan penerbangan luar ruang yang otonom melalui GPS.


Kode program sepenuhnya terbuka, dan bekerja pada platform Windows, OS X, Linux, iOS dan Android. File instalasi untuk platform yang diinginkan dapat diunduh di bagian Unduh situs web program .


Untuk Windows, unduh dan jalankan file ini .
Setelah instalasi dan peluncuran, jika jMAVSim sudah berjalan di komputer kita, program akan terhubung secara otomatis.


Anda dapat meluncurkan drone dalam penerbangan menggunakan tombol Fly-Takeoff, dan mendarat - Darat. Anda juga dapat melakukan penerbangan virtual melalui titik-titik GPS:


QGroundControl


Memprogram penerbangan otonom dengan mavro


Drone virtual jMAVSim dapat dikontrol menggunakan protokol mavlink, yang dijelaskan dalam beberapa artikel (misalnya, 1 , 2 ). Untuk mengimplementasikan komunikasi mavlink, kami akan menggunakan paket mavros dari sistem ROS (robot operating system) .


Pengembang PX4 merekomendasikan untuk menggunakan ROS Kinetic.


Paket mavros menyediakan komunikasi melalui protokol MAVLink antara komputer yang menjalankan ROS (misalnya, mesin virtual dengan Linux, atau Raspberry PI) dan pengontrol penerbangan (nyata atau dalam lingkungan simulator).


Paket mavros diinstal bersama dengan paket lain selama instalasi penuh ROS Kinetic .


Paket mavros diluncurkan dengan koneksi ke simulator oleh perintah roslaunch, yang menunjukkan alamat ip dan port komputer tempat simulator berjalan:


 roslaunch mavros px4.launch fcu_url:="udp://@192.168.0.22:14557" 

Jika simulator tidak berjalan di host tempat jMAVSim dijalankan, sebelum menghubungkan ke mavros, Anda harus mengaktifkan pesan mavlink untuk dikirim melalui jaringan menggunakan perintah param set MAV_BROADCAST 1 di konsol jMAVSim. Ketika perintah dieksekusi, alamat IP host yang digunakan untuk protokol mavlink ditampilkan. Port dapat ditemukan menggunakan perintah mavlink status di konsol simulator:


Status mavlink


Keberhasilan menyambungkan ke pengontrol penerbangan harus diperiksa menggunakan perintah:


 rostopic echo /mavros/state 

Jika koneksi berhasil, pesan yang disebut akan muncul di konsol. detak jantung mavlink, sekitar sekali per detik:


mavlink detak jantung


Jika pesan tidak muncul / tidak diperbarui / bidang Connected = False - komunikasi dengan pengendali penerbangan tidak dibuat, dan Anda harus memahami alasannya.


Pada saat penulisan, di bawah Windows, setelah param mengatur perintah MAV_BROADCAST 1, pesan di konsol jMAVSim mulai muncul dalam satu lingkaran:


 WARN [mavlink] getting required buffer size failed. 

Agar simulator berfungsi dengan benar di Windows, Anda harus menambahkan baris 1029 ke file src / modules / mavlink / mavlink_main.cpp:


 #if defined(__APPLE__) && defined(__MACH__) || defined(__CYGWIN__) 

Dan kompilasi ulang / restart simulator dengan perintah make px4_sitl jmavsim .


Masalah ini telah dilaporkan ke pengembang , mungkin diperbaiki di rilis mendatang.


Setelah koneksi berhasil, Anda dapat meluncurkan drone dalam penerbangan otonom menggunakan perintah berikut dari konsol sistem ROS:


  • Kami menerbitkan 5 kali per detik titik target untuk penerbangan drone dalam mode OFFBOARD. Agar drone tidak "jatuh" dari mode penerbangan otonom OFFBOARD, perlu untuk mempublikasikan titik target sepanjang waktu, beberapa kali per detik:

     rostopic pub -r 5 /mavros/setpoint_position/local geometry_msgs/PoseStamped "header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: '' pose: position: x: 0.0 y: 0.0 z: 5.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 0.0" 


  • Kami mengatur drone ke mode OFFBOARD (dalam sesi terminal baru yang terpisah):

     rosservice call /mavros/set_mode "base_mode: 0 custom_mode: 'OFFBOARD'" 

  • Kami mengirim perintah untuk meletakkan drone dalam mode penerbangan (yaitu, "umpan"):

     rosservice call /mavros/cmd/arming "value: true" 

Setelah menjalankan perintah terakhir, drone virtual harus lepas landas dan melayang di ketinggian 5 meter:


Terbang jmavsim


Anda juga dapat meluncurkan drone menggunakan kode Python sederhana:


 import rospy from geometry_msgs.msg import PoseStamped from mavros_msgs.srv import CommandBool, SetMode rospy.init_node("offbrd",anonymous=True) rate=rospy.Rate(5) setpoint_pub=rospy.Publisher("/mavros/setpoint_position/local",PoseStamped,queue_size=10) arming_s=rospy.ServiceProxy("/mavros/cmd/arming",CommandBool) set_mode=rospy.ServiceProxy("/mavros/set_mode",SetMode) setpt=PoseStamped() setpt.pose.position.z=5 for i in range (0,10): setpoint_pub.publish(setpt) rate.sleep() set_mode(0,"OFFBOARD") arming_s(True) while (rospy.is_shutdown()==False): setpoint_pub.publish(setpt) rate.sleep() 

Kode di atas menggunakan panggilan ke layanan ROS yang sama dengan contoh panggilan baris perintah.


Anda perlu menyalin kode ke file teks, misalnya, fly_jmavsim.py, dan menjalankannya dari baris perintah dengan perintah python fly_jmavsim.py .


Dalam proses debug contoh ini, saya menemukan fitur simulator jMAVSim - perlu prosesor yang kuat untuk operasi normal. Di mesin virtual Linux, ia berhasil menghitung hanya 10 FPS, dan jatuh segera setelah lepas landas. Di laptop, ketika saya sedang menulis artikel, dia juga secara berkala kehilangan kontrol / jatuh. Kekuatan laptop membantu - karena ketika diberdayakan oleh baterai, mode hemat daya diaktifkan, yang meremehkan kinerja prosesor, yang mempengaruhi simulator secara langsung.


Berdasarkan contoh-contoh yang diberikan, mereka yang berharap dapat mengembangkan program penerbangan otonom (dalam kotak, dalam lingkaran, dalam lintasan yang sewenang-wenang, dll.). Melakukan latihan seperti itu dapat berguna dalam mempersiapkan pemrograman misi otonom pada quadrocopter nyata.


Kami berharap Anda semua penerbangan berhasil!


Referensi:


Sistem Operasi Robot (ROS)
Autopilot PX4

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


All Articles