
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:

Drone dapat dikirim ke penerbangan dengan memasukkan perintah di konsol:
pxh> commander takeoff

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:

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:

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:

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:

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:
Setelah menjalankan perintah terakhir, drone virtual harus lepas landas dan melayang di ketinggian 5 meter:

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