- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
Ini adalah Control Toolbox, pustaka C++ yang efisien untuk kontrol, estimasi, pengoptimalan, dan perencanaan gerak dalam robotika.
Tautan ke wiki, mulai cepat!
Temukan dokumentasi detailnya di sini.
Ini adalah ADRL Control Toolbox ('CT'), pustaka C++ sumber terbuka untuk pemodelan, kontrol, estimasi, optimalisasi lintasan, dan kontrol prediktif model yang efisien. CT dapat diterapkan pada kelas sistem dinamis yang luas, namun dilengkapi alat pemodelan tambahan yang dirancang khusus untuk robotika. Halaman ini menguraikan konsep umum, blok bangunan utama dan menyoroti contoh-contoh aplikasi yang dipilih.
Perpustakaan ini berisi beberapa alat untuk merancang dan mengevaluasi pengontrol, memodelkan sistem dinamis, dan memecahkan masalah kontrol optimal. CT dirancang dengan mempertimbangkan fitur-fitur berikut:
Sistem dan dinamika :
Optimalisasi lintasan, kontrol optimal, dan kontrol prediktif model (nonlinier) :
Pertunjukan :
Pemodelan Robot, Kinematika dan Dinamika Benda Kaku :
Diferensiasi Otomatis :
Kotak Alat Kontrol telah digunakan untuk tugas kontrol Perangkat Keras dan Simulasi pada robot terbang, berjalan, dan darat.
Contoh pengoptimalan yang sedikit lebih kompleks, termasuk pengoptimalan gaya berjalan untuk hewan berkaki empat, tersedia di ct_ros.
Tugas umum bagi para peneliti dan praktisi dalam komunitas kontrol dan robotika adalah memodelkan sistem, mengimplementasikan persamaan gerak dan merancang pengontrol, estimator, algoritma perencanaan berbasis model, dll. Cepat atau lambat, kita dihadapkan pada pertanyaan tentang implementasi yang efisien , menghitung informasi turunan, merumuskan fungsi biaya dan batasan atau menjalankan pengontrol dengan cara kontrol prediktif model.
Kotak Alat Kontrol dirancang khusus untuk tugas-tugas ini. Ini seluruhnya ditulis dalam C++ dan memiliki fokus kuat pada kode yang sangat efisien yang dapat dijalankan secara online (dalam loop) pada robot atau perangkat keras lainnya yang digerakkan. Kontribusi besar CT adalah implementasi algoritma kontrol optimal, mulai dari implementasi referensi LQR sederhana hingga kontrol prediktif model terbatas. CT mendukung Diferensiasi Otomatis (Auto-Diff) dan memungkinkan pembuatan kode turunan untuk fungsi skalar dan nilai vektor yang berubah-ubah. Kami merancang toolbox dengan mempertimbangkan kegunaan, memungkinkan pengguna untuk menerapkan konsep tingkat lanjut seperti kontrol prediktif model nonlinier (NMPC) atau kontrol optimal numerik dengan mudah dan dengan sedikit usaha. Meskipun kami menyediakan antarmuka ke perangkat lunak pemodelan robot canggih yang kompatibel dengan Auto-Diff, semua modul lainnya tidak bergantung pada kerangka pemodelan tertentu, sehingga kode dapat dihubungkan dengan kode atau pustaka C/C++ yang ada.
CT telah berhasil digunakan dalam berbagai proyek berbeda, termasuk sejumlah besar eksperimen perangkat keras, demonstrasi, dan publikasi akademis. Contoh aplikasi perangkat keras adalah pengoptimalan lintasan online dengan penghindaran tabrakan cite giftthaler2017autodiff, pengoptimalan lintasan untuk hewan berkaki empat cite neunert:2017:ral dan manipulator seluler cite givethaler2017efisien serta NMPC pada robot darat cite neunert2017mpc dan UAV cite neunert16hexrotor. Proyek ini bermula dari penelitian yang dilakukan di Agile & Dexterous Robotics Lab di ETH Zurich, namun terus diperluas untuk mencakup lebih banyak bidang aplikasi dan algoritma.
Perangkat lunak adalah salah satu elemen penting dalam membangun sistem robotik dan terdapat upaya besar dalam menciptakan perangkat lunak dan perpustakaan untuk robotika. Namun, dalam hal kontrol dan khususnya Kontrol Optimal Numerik, tidak banyak alat sumber terbuka yang tersedia yang mudah digunakan untuk pengembangan cepat serta cukup efisien untuk penggunaan online. Meskipun terdapat kotak alat yang matang untuk Kontrol Optimal Numerik dan Optimasi Lintasan, keduanya merupakan alat yang sangat terspesialisasi dan berdiri sendiri sehingga tidak memberikan fleksibilitas yang memadai untuk aplikasi lain. Di sinilah peran CT. CT telah dirancang dari awal untuk menyediakan alat yang diperlukan untuk pengembangan cepat dan evaluasi metode kontrol sekaligus dioptimalkan untuk efisiensi yang memungkinkan pengoperasian online. Meskipun penekanannya terletak pada kontrol, alat yang disediakan juga dapat digunakan untuk aplikasi simulasi, estimasi, atau optimasi.
Berbeda dengan perangkat lunak robot lainnya, CT bukanlah aplikasi terintegrasi yang kaku namun dapat dilihat secara harafiah sebagai kotak peralatan: CT menawarkan berbagai alat yang dapat digunakan dan digabungkan untuk menyelesaikan tugas yang ada. Meskipun kemudahan penggunaan telah menjadi kriteria utama selama contoh desain dan aplikasi diberikan, penggunaan CT masih memerlukan pengetahuan pemrograman dan kontrol. Namun, ini membebaskan pengguna dari penerapan metode standar yang memerlukan pengalaman mendalam dengan aljabar linier atau metode numerik. Selain itu, dengan menggunakan definisi dan tipe umum, integrasi yang mulus antara berbagai komponen seperti sistem, pengontrol, atau integrator disediakan, sehingga memungkinkan pembuatan prototipe dengan cepat.
Fokus utama CT adalah efisiensi, itulah sebabnya CT diterapkan sepenuhnya di C++. Karena CT dirancang sebagai kotak alat dan bukan aplikasi terintegrasi, kami mencoba memberikan fleksibilitas maksimum kepada pengguna. Oleh karena itu, ini tidak terikat pada middleware tertentu seperti ROS dan ketergantungan dijaga seminimal mungkin. Dua ketergantungan penting untuk CT adalah Eigen dan Kindr (yang didasarkan pada Eigen). Ketergantungan Eigen ini disengaja karena Eigen adalah standar defacto untuk aljabar linier di C++, karena menyediakan implementasi operasi matriks standar yang sangat efisien serta metode aljabar linier yang lebih canggih. Kindr adalah pustaka Kinematika khusus header yang dibangun di atasnya dan menyediakan tipe data untuk representasi rotasi berbeda seperti Quaternion, sudut Euler, atau matriks rotasi.
Kotak Alat Kontrol terdiri dari tiga modul utama. Modul Core ( ct_core
), modul Kontrol Optimal ( ct_optcon
) dan modul Rigid Body Dynamics ( ct_rbd
). Ada hierarki yang jelas antar modul. Artinya, modul-modul tersebut bergantung satu sama lain dalam urutan ini, misalnya Anda dapat menggunakan modul inti tanpa modul optcon atau rbd.
ct_core
) menyediakan definisi tipe umum dan alat matematika. Misalnya, ini berisi sebagian besar definisi tipe data, definisi untuk sistem dan pengontrol, serta fungsionalitas dasar seperti integrator numerik untuk persamaan diferensial.ct_optcon
) dibangun di atas modul Inti dan menambahkan infrastruktur untuk mendefinisikan dan menyelesaikan Masalah Kontrol Optimal. Ini berisi fungsionalitas untuk menentukan fungsi biaya, batasan, backend pemecah, dan pembungkus MPC umum.ct_rbd
) menyediakan alat untuk memodelkan sistem dan antarmuka Rigid Body Dynamics dengan tipe data ct_core
dan ct_optcon
. Untuk pengujian sekaligus contoh, kami juga menyediakan modul model ( ct_models
) yang berisi berbagai model robot antara lain robot berkaki empat, lengan robot, quadrotor normal, dan quadrotor dengan beban tersampir.
Empat modul utama yang berbeda dirinci sebagai berikut.
Untuk memulai dengan kotak alat kontrol, buatlah dokumentasi repositori dengan doxygen dan ikuti tutorial "Memulai".
Perangkat lunak ini telah dikembangkan di Agile & Dexterous Robotics Lab di ETH Zurich, Swiss antara tahun 2014 hingga 2018. Selama waktu tersebut, pengembangan dapat dilakukan melalui dukungan finansial dari Swiss National Science Foundation (SNF) melalui penghargaan SNF Professorship kepada Jonas Buchli dan Pusat Kompetensi Nasional Penelitian (NCCR) Robotika dan Fabrikasi Digital.
Control Toolbox dirilis di bawah lisensi klausa BSD-2. Silakan lihat LICENCE.txt dan NOTICE.txt
@article{adrlCT,
title={The control toolbox — An open-source C++ library for robotics, optimal and model predictive control},
author={Markus Giftthaler and Michael Neunert and Markus St{"a}uble and Jonas Buchli},
journal={2018 IEEE International Conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR)},
year={2018},
pages={123-129}
}
Versi sebelumnya hingga v2.3 dihosting di bitbucket, dapat ditemukan di https://bitbucket.org/adrlab/ct/wiki/Home
Toolbox ini telah digunakan atau telah membantu mewujudkan publikasi akademik berikut:
Markus Giftthaler, Michael Neunert, Markus Stäuble dan Jonas Buchli. “Kotak Alat Kontrol - Pustaka C++ Sumber Terbuka untuk Robotika, Kontrol Prediktif Model dan Optimal”. IEEE Simpar 2018 (Penghargaan Makalah Mahasiswa Terbaik). pracetak arXiv
Markus Giftthaler, Michael Neunert, Markus Stäuble, Jonas Buchli dan Moritz Diehl. “Kelompok Metode Pemotretan Gauss-Newton berulang untuk Kontrol Optimal Nonlinier”. IROS 2018. pracetak arXiv
Jan Carius, René Ranftl, Vladlen Koltun dan Marco Hutter. "Optimasi Lintasan dengan Kontak Keras Implisit." Surat Robotika dan Otomasi IEEE 3, no. 4 (2018): 3316-3323.
Michael Neunert, Markus Stäuble, Markus Giftthaler, Dario Bellicoso, Jan Carius, Christian Gehring, Marco Hutter dan Jonas Buchli. “Kontrol Prediktif Model Seluruh Tubuh Melalui Kontak Untuk Orang Berkaki Empat”. Surat Robotika dan Otomasi IEEE, 2017. pracetak arXiv
Markus Giftthaler dan Jonas Buchli. “Pendekatan Proyeksi terhadap Kontrol Optimal Kuadrat Linier Iteratif yang Dibatasi Kesetaraan”. Konferensi Internasional IEEE-RAS 2017 tentang Robot Humanoid, 15-17 November, Birmingham, Inggris. IEEE Xplore
Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini dan Jonas Buchli. “Diferensiasi Otomatis Dinamika Benda Kaku untuk Pengendalian dan Estimasi Optimal”, Robotika Tingkat Lanjut, edisi khusus SIMPAR. November 2017. pracetak arXiv
Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini dan Jonas Buchli. “Turunan Cepat Dinamika Benda Kaku untuk Kontrol, Optimasi, dan Estimasi”, Konferensi Internasional IEEE 2016 tentang Simulasi, Pemodelan, dan Pemrograman untuk Robot Otonom, San Francisco. (Penghargaan Kertas Terbaik). IEEE Xplore
Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli "Optimasi Lintasan Melalui Kontak dan Penemuan Kiprah Otomatis untuk Hewan Berkaki Empat", IEEE Robotika dan Surat Otomasi, IEEE Xplore
Michael Neunert, Cédric de Crousaz, Fadri Furrer, Mina Kamel, Farbod Farshidian, Roland Siegwart, Jonas Buchli. "Kontrol prediktif model nonlinier cepat untuk pengoptimalan dan pelacakan lintasan terpadu", Konferensi Internasional IEEE tentang Robotika dan Otomasi (ICRA) 2016, IEEE Xplore
Markus Giftthaler, Farbod Farshidian, Timothy Sandy, Lukas Stadelmann dan Jonas Buchli. “Perencanaan Kinematik yang Efisien untuk Manipulator Bergerak dengan Kendala Non-holonomik Menggunakan Kontrol Optimal”, Konferensi Internasional IEEE tentang Robotika dan Otomasi, 2017, Singapura. pracetak arXiv
Markus Giftthaler, Timothy Sandy, Kathrin Dörfler, Ian Brooks, Mark Buckingham, Gonzalo Rey, Matthias Kohler, Fabio Gramazio dan Jonas Buchli. “Fabrikasi Robot Bergerak skala 1:1: Pabrikan In situ”. Robotika Konstruksi, Jurnal Springer no. 41693 pracetak arXiv
Timothy Sandy, Markus Giftthaler, Kathrin Dörfler, Matthias Kohler dan Jonas Buchli. “Reposisi Otonom dan Lokalisasi Pabrikator In situ”, Konferensi Internasional IEEE tentang Robotika dan Otomasi 2016, Stockholm, Swedia. IEEE Xplore
Michael Neunert, Farbod Farshidian, Jonas Buchli (2014). Kontrol Gerakan Prediktif Model Nonlinier Real-time Adaptif. Dalam Workshop IROS 2014 Machine Learning dalam Perencanaan dan Pengendalian Gerak Robot pracetak