Kami dengan tim (
yang dapat Anda bergabung ) dari orang-orang yang berpikiran sama dari Habr sedang mengembangkan
robot untuk mengumpulkan bola golf di driving range . Ini adalah robot layanan yang sangat khusus, oleh karena itu, kami berencana untuk secara bersamaan mengembangkan satu perangkat lunak dan perangkat keras yang kompleks, yang nantinya dapat digunakan sebagai dasar untuk robot layanan lain dan
UGV .
Pada posting terakhir, kami menjelaskan mengapa kami berhenti menggunakan perangkat lunak ini. Saat menyiapkan proyek kami, kami menggunakan
informasi dari artikel . Sebenarnya, di sini kami sajikan terjemahan dari panduan singkat ini, mungkin bagi seseorang itu akan berguna dan membantu Anda membuat robot pertama atau berikutnya.
Sebelum saya mulai, saya ingin menekankan bahwa itu layak menggunakan BeagleBone Blue (masih biru). Sebagai aturan, kami akan memasang beberapa perangkat periferal yang terkait dengan navigasi, dan mereka tidak akan berfungsi dengan benar tanpa daya yang cukup.
Bagian 1. Mempersiapkan BeagleBone
Pergi ke
https://rcn-ee.net/rootfs/bb.org/testing/ dan pilih direktori dengan tanggal terbaru. Kemudian buka subdirektori
stretch-console . Di sini Anda akan melihat beberapa file. Unduh file yang disebut Sesuatu seperti
'bone-debian-VV-console-armhf-20YY-MM-DD-1gb.img.xz' . Ini adalah distribusi Debian minimal yang hanya berisi yang penting. Alternatif adalah gambar IoT (IoT = Internet of Things), yang dilengkapi dengan perangkat lunak tambahan dan dapat membuat pekerjaan lebih nyaman jika Anda baru mengenal Linux. Ini tersedia dari situs yang sama.
Kami menggunakan:
https://rcn-ee.net/rootfs/bb.org/testing/2018-10-07/stretch-console/bone-debian-9.5-console-armhf-2018-10-07-1gb.img .xz .
Selanjutnya, Anda perlu mem-flash gambar pada kartu microSD. Apakah Anda menggunakan Linux atau Windows, saya sangat merekomendasikan sebuah program bernama Etcher untuk tugas ini (
https://etcher.io/ ).
Sekarang Anda dapat mengunduh BeagleBone Blue dari kartu microSD. Ini di luar ruang lingkup dokumen ini untuk menjelaskan secara terperinci semua metode interaksi, tetapi seringkali ini dicapai dengan menghubungkan melalui kabel mikro-USB atau melalui SSH (ke 'debian@192.168.7.2', kata sandi 'temppwd') atau melalui port COM ( Pengguna debian ', kata sandi' temppwd) ke dalam program seperti minicom atau Putty. Koneksi ini ke konsol Linux melalui port COM. UART1 pada BBB build selalu terikat ke konsol, pertama-boot U, dan kemudian Linux. Informasi lebih lanjut dapat ditemukan di sini:
https://beagleboard.org/blueDriver BeagleBone datang dengan Windows 10. Di Linux, BBB sebagai port USB COM universal mungkin tidak diambil. Jika Anda mengalami masalah, coba:
sudo -s cat >/etc/udev/rules.d/73-beaglebone.rules <<EOF ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", DRIVER=="", RUN+="/sbin/modprobe -b ftdi_sio" ACTION=="add", SUBSYSTEM=="drivers", ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", ATTR{new_id}="0403 a6d0" ACTION=="add", KERNEL=="ttyUSB*", ATTRS{interface}=="BeagleBone", ATTRS{bInterfaceNumber}=="00", SYMLINK+="beaglebone-jtag" ACTION=="add", KERNEL=="ttyUSB*", ATTRS{interface}=="BeagleBone", ATTRS{bInterfaceNumber}=="01", SYMLINK+="beaglebone-serial" EOF udevadm control --reload-rules exit
Semoga Anda sekarang masuk ke baris perintah. Kami akan mulai dengan mengizinkan pengguna debian untuk mengeksekusi sudo tanpa harus memasukkan kata sandi setiap waktu (berikutnya):
echo "debian ALL=(ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/debian >/dev/null
Pekerjaan selanjutnya adalah memperbarui dan menginstal perangkat lunak menggunakan koneksi internet yang terjangkau, jadi inilah saatnya untuk mengatur koneksi nirkabel untuk akses Wi-Fi. Saya melakukan ini karena akan memudahkan pekerjaan di masa depan. Pertama, tulis SSID dan kata sandi WiFi router Anda. Kemudian masukkan yang berikut ini:
sudo -s connmanctl services | grep '<your SSID>' | grep -Po 'wifi_[^ ]+'
Jawabannya akan terlihat seperti ini: 'wifi_38d279e099a8_4254487562142d4355434b_managed_psk'. Jika Anda tidak melihat apa pun, coba lagi - Anda mungkin membuat kesalahan ketik.
Sekarang, menggunakan ID jaringan ini, kita akan memasukkan file langsung dari keyboard (stdin) menggunakan cat, satu baris sekaligus:
cat >/var/lib/connman/wifi.config [service_<your hash>] Type = wifi Security = wpa2 Name = <your SSID> Passphrase = <your WiFi password>
Penting! Sebelum Ctrl + C, pastikan untuk menekan Enter, jika tidak seluruh baris saat ini akan hilang.
Tekan Ctrl-C untuk keluar, lalu ketik: keluar
LED hijau yang terlihat akan menyala, artinya Wi-Fi menyala. BBBlue terhubung ke router dan alamat IP-nya di jaringan Wi-Fi Anda dapat ditemukan menggunakan:
ip addr show wlan0
Jika karena alasan tertentu Anda tidak dapat meminta BBBlue secara langsung, gunakan utilitas lain seperti nmap (sudo nmap 192.168.0.0/24) atau dengan masuk ke router Anda dan cari cara lain untuk menemukan alamat IP-nya.
Sekarang coba sambungkan melalui SSH menggunakan alamat IP Wi-Fi-nya. Ingat bahwa 192.168.7.2 juga akan berfungsi.
Jika Anda tidak bisa mendapatkan WiFi untuk bekerja dengan connman, atau Anda hanya tidak ingin menggunakan connman, Anda dapat menggunakan metode berikut. Pertama, ketik: sudo systemctl disable connman. Kemudian, dengan kata sandi SSID dan WiFi Anda, edit / etc / network / interfaces
Sekarang ulang BBBlue dengan:
sudo rebootSetelah masuk, ketik: sudo ifup wlan0. LED hijau akan menyala.
Jika Anda ingin BB memiliki IP statis (katakanlah 192.168.0.99), ubah "# WiFi dengan perangkat onboard (IP dinamis)." Bagian / etc / network / interfaces untuk membaca:
Memperbarui dan menginstal semua program dukungan yang diperlukan:
sudo apt-get -y update sudo apt-get -y dist-upgrade sudo apt-get install -y cpufrequtils git
Perbarui skrip: cd / opt / skrip & & git pull
Kernel real-time saat ini mengandung bug! Gunakan perbaikan berikut: Tentukan kernel real-time Ti 4_4. Jangan gunakan 4_14. sudo /opt/scripts/tools/update_kernel.sh --ti-rt-channel --lts-4_4 sudo sed -i 's|uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo|#uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo|g' /boot/uEnv.txt sudo sed -i 's|#uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-4-TI-00A0.dtbo|uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-4-TI-00A0.dtbo|g' /boot/uEnv.txt
Terakhir, salin am335x-bone blue.dtb (dari direktori bin di repositori ini) ke /boot/dtbs/4.4.113-ti-rt-r149
Instal skrip di autorun
sudo sed -i 's/#dtb=/dtb=am335x-boneblue.dtb/g' /boot/uEnv.txt
Tetapkan frekuensi
sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils
Konfigurasi bb-wl18xx-wlan0.service
sudo sed -i 's/RestartSec=5/RestartSec=1/g' /lib/systemd/system/bb-wl18xx-wlan0.service
Konfigurasi bb-wl18xx-wlan0.service
sudo sed -i 's/RestartSec=5/RestartSec=1/g' /lib/systemd/system/bb-wl18xx-wlan0.service
Nonaktifkan Bluetooth (opsional)
sudo systemctl disable bb-wl18xx-bluetooth.service
Perluas partisi kartu microSD yang ada (/ dev / mmcblk0p1):
sudo /opt/scripts/tools/grow_partition.sh
Mulai ulang sekarang:
sudo reboot
Bagian 2. Instal ArduPilot pada BeagleBone
Ketika BeagleBone reboot, kita perlu membuat beberapa file teks. Pertama, meningkatkan file konfigurasi lingkungan, / etc / default / ardupilot:
(Petunjuk: masukkan sudoedit / etc / default / ardupilot dan masukkan alamat IP target Anda sendiri, mis. 192.168.0.13) TELEM1="-C /dev/ttyO1" TELEM2="-A udp:<target IP address>:14550" GPS="-B /dev/ttyS2"
Ini adalah konfigurasi yang cukup tipikal.
Ini adalah parameter peluncuran -C memetakan port serial “Telem1” ArduPilot (SERIAL1, default 57600) untuk UART1 di BBBlue. Sebagai contoh, saya memiliki radio RFDesign 868x yang terhubung ke UART1. Ini adalah saluran data dua arah dengan drone saya. Ini mengirim berbagai data telemetri ke stasiun pangkalan dan menerima perintah RTK dan koreksi diferensial dari stasiun pangkalan.
Ini adalah parameter peluncuran -A memetakan port serial “Konsol” ArduPilot (SERIAL0, default 115200) dengan protokol, alamat IP tujuan, dan nomor port opsional. Misalnya, ini memungkinkan saya untuk menerima data MAVLink yang datang melalui Wi-Fi untuk tujuan pengujian. Sangat berguna, terutama karena data dapat langsung masuk ke Mission Planner dan QGroundControl.

Ini adalah parameter peluncuran -B memetakan port serial “GPS” ArduPilot (SERIAL3, default 57600) dengan Uart2 BBBlue (UART, samar-samar ditandai 'GPS' di papan itu sendiri). Sebagai contoh, saya memiliki NEO-M8P U-blox yang terhubung ke UART2.
Ada kemungkinan lain - ada opsi peluncuran lainnya, dengan kecepatan port yang telah ditentukan sebelumnya dan porta itu sendiri:
Switch -A --> "Console", SERIAL0, default 115200 Switch -B --> "GPS", SERIAL3, default 57600 Switch -C --> "Telem1", SERIAL1, default 57600 Switch -D --> "Telem2", SERIAL2, default 38400 Switch -E --> Unnamed, SERIAL4, default 38400 Switch -F --> Unnamed, SERIAL5, default 57600
Lihat dokumentasi ArduPilot resmi untuk informasi lebih lanjut tentang berbagai port serial:
http://ardupilot.org/plane/docs/parameters.html?highlight=parametersSelanjutnya, kita akan membuat file layanan ArduPilot systemd, satu untuk ArduCopter, /lib/systemd/system/arducopter.service:
[Unit] Description=ArduCopter Service After=networking.service StartLimitIntervalSec=0 Conflicts=arduplane.service ardurover.service antennatracker.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/arducopter $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target
Satu untuk ArduPlane, /lib/systemd/system/arduplane.service:
[Unit] Description=ArduPlane Service After=networking.service StartLimitIntervalSec=0 Conflicts=arducopter.service ardurover.service antennatracker.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/arduplane $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target
Satu untuk ArduRover, /lib/systemd/system/ardurover.service:
[Unit] Description=ArduRover Service After=networking.service StartLimitIntervalSec=0 Conflicts=arducopter.service arduplane.service antennatracker.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/ardurover $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target
Bagaimana dengan AntennaTracker juga? Buat /lib/systemd/system/antennatracker.service:
[Unit] Description=AntennaTracker Service After=networking.service StartLimitIntervalSec=0 Conflicts=arducopter.service arduplane.service ardurover.service [Service] EnvironmentFile=/etc/default/ardupilot ExecStartPre=/usr/bin/ardupilot/aphw ExecStart=/usr/bin/ardupilot/antennatracker $TELEM1 $TELEM2 $GPS Restart=on-failure RestartSec=1 [Install] WantedBy=multi-user.target
Ayo buka folder sudo mkdir -p / usr / bin / ardupilot
Buat file konfigurasi besi untuk ArduPilot, / usr / bin / ardupilot / aphw yang berjalan sebelum file yang dapat dieksekusi.
Baris 5-7 mencakup daya servo BBBlue + 5V, mis. Saat Anda menggunakan servos. Tidak diperlukan untuk ESC.
Jalur 8 termasuk PRU.
Gunakan sudo chmod 0755 / usr / bin / ardupilot / aphw untuk mengatur izin untuk file ini.
Hampir terjadi! Sekarang Anda harus mendapatkan file-file executable ArduCopter, ArduPlane, dll. Terbaru yang dibuat khusus untuk arsitektur Arm BBBlue, dan menempatkannya di direktori / usr / bin / ardupilot. Mirko Denecke mengunggahnya di situs webnya di sini:
http://bbbmini.org/download/blue/Salin ke repositori ini:
https://github.com/imfatant/test/blob/master/bin/Jangan lupa atur haknya: sudo chmod 0755 / usr / bin / ardupilot / a *
Jika Anda perlu mengkompilasi dari sumber, jangan takut - itu tidak terlalu sulit. Selain itu, ini berarti Anda dapat membuat perangkat lunak ArduPilot Anda sendiri.
Mengumpulkan mereka di BBBlue sendiri akan memakan waktu terlalu banyak. Patrick Poirier menjelaskan proses untuk BBBMINI (berdasarkan BeagleBone hitam) di situs webnya. Ini adalah prosedur khusus BBBlue, dengan asumsi bahwa Anda telah menyelesaikan semua langkah sejauh ini dan berada di direktori / home / debian:
sudo apt-get install g++ make pkg-config python python-dev python-lxml python-pip sudo pip install future git clone https://github.com/ArduPilot/ardupilot cd ardupilot git checkout Copter-3.6
Patrick juga memberikan instruksi untuk mengkompilasi silang mereka pada PC desktop x64 yang relatif kuat di Ubuntu, yang jauh lebih cepat.
Tergantung pada opsi perangkat lunak mana yang Anda butuhkan
sudo systemctl mengaktifkan arducopter.service
atau
sudo systemctl mengaktifkan arduplane.service
atau
sudo systemctl mengaktifkan ardurover.service
atau
sudo systemctl mengaktifkan antennatracker.service
Setelah reboot, ArduPilot Anda akan mulai secara otomatis. Anda akan melihat LED merah berkedip!
Anda dapat memeriksa systemctl (
https://www.freedesktop.org/software/systemd/man/systemctl.html ). Beberapa perintah contoh yang berguna:
sudo systemctl disable ... sudo systemctl start ... sudo systemctl stop ...
Bagian 3. Menghubungkan periferal

Konfigurasi minimum dasar kemungkinan termasuk:
- Penerima R / C.
- Penerima GPS (dengan atau tanpa kompas terintegrasi).
- Modem radio untuk saluran data dua arah, terutama jarak jauh.
- (BBBlue WiFi bawaan sangat bagus untuk debugging dan pengujian dalam jarak dekat jika 2,4 GHz tersedia, tetapi untuk sesuatu yang lebih menarik, direkomendasikan saluran data dua arah khusus. Juga perhatikan jenis dan penempatan antena yang menggunakan semua elemen ini. )
Beberapa kata tentang konektor, kabel, dan alat yang Anda butuhkan. Saya akan memberikan beberapa rekomendasi, jika tidak, jika Anda seorang pemula, Anda dapat menghabiskan banyak waktu, tenaga dan uang. Jenis konektor yang paling umum digunakan adalah JST-SH 1.0 mm. Anda harus membeli beberapa konektor wanita dalam ukuran posisi 4 dan 6 dan kontak crimp. Kemudian dapatkan beberapa meter kabel dengan warna berbeda.
Jadi, kembali ke menghubungkan periferal:

Penerima R / C: dapat dimatikan pada kontak + 5V dan GND. Yang tersisa adalah menghubungkan output SBUS penerima, output DSM, atau output PPM ke salah satu dari dua pin SBUS yang ditandai dalam diagram. Penerima berikut telah diuji dan berfungsi:
FrSky (
https://www.frsky-rc.com/ ): R-XSR, XR4SB, X6R, X8R, R9 Slim dan R9 Mini (baik firmware EU LBT 868 MHz dan Universal 915 MHz).
Spektrum (
https://www.spektrumrc.com/ ): AR7700 DSMX dengan PPM / SRXL / Remote Rx.
TBS (
http://team-blacksheep.com/ ): Crossfire 'Penuh' dengan Nano Rx (Rx diatur ke mode SBUS).
Ngomong-ngomong, mereka banyak berbicara tentang "SBUS terbalik". Sebenarnya SBUS hanyalah sebuah protokol transfer data serial yang diciptakan Futaba dan yang disalin FrSky. Terbalik dibandingkan dengan UART "standar". Untungnya, Ardupilot Blue mengharapkan sinyal SBUS terbalik ini, sehingga tidak perlu inverter sinyal.
Penerima GPS: Kebanyakan orang menggunakan penerima u-blox, terutama NEO-M8N dan NEO-M8P. NEO-M8N murah dan terjangkau dari perusahaan Cina seperti HobbyKing, biasanya dalam bentuk disk. Nyaman, mereka mengandung penerima itu sendiri, antena patch keramik yang sangat kecil, dan sering termasuk kompas. Meskipun BBBlue sudah memiliki kompas bawaan (AKM AK8963), ArduPilot dapat dikonfigurasi untuk menggunakan kompas "eksternal" ini, bukan kompasnya sendiri, untuk menghindari gangguan.
Alternatif (yang jauh lebih mahal) dari NEO-M8N adalah NEO-M8P. Penerima ini mendukung mode operasi yang dikenal sebagai "RTK", atau kinematik secara real time, yang dapat mencapai akurasi posisi beberapa sentimeter secara real time. Namun, presentasi semacam ini harganya 10 kali lebih mahal daripada NEO-M8N, dan ini tanpa stasiun induk. Nanti di manual saya akan mencurahkan bagian khusus untuk M8P.
File konfigurasi ArduPilot I2C: /var/APM/{ArduCopter.stg,ArduPlane.stg,APMrover2.stg,AntennaTracker.stg}
sudo apt-get install i2c-tools sudo i2cdetect -r -y 0 sudo i2cdetect -r -y 1 sudo i2cdetect -r -y 2
$ sudo i2cdetect -r -y 2 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- -- -- -- -- 0c -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 --
68 = InvenSense MPU-9250 IMU (onboard), 0c = AKM kompas AK8963 (onboard), 76 = Bosch BMP280 barometer (onboard).
$ sudo i2cdetect -r -y 1 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
1e = Honeywell HMC5843 kompas (eksternal) - sering diintegrasikan ke dalam modul GPS berbasis NEO-M8N u-blox.
Memulai dengan Perangkat Lunak Ground Control Station (GCS)
Unduh perencana misi apa pun (http://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi) untuk Windows atau QGroundControl (http://qgroundcontrol.com/) untuk Linux dan Windows. Kedua program ini akan terhubung ke aliran data MAVLink yang masuk melalui jaringan (misalnya, melalui port UDP 14550) atau melalui port COM.
Opsional
Melengkapi bbblue berbasis drone dengan speaker Bluetooth bisa menyenangkan, asalkan transmisi RF Bluetooth tidak mengganggu sistem lain. Ada banyak informasi tentang BlueZ / PulseAudio / ALSA, tetapi, untungnya, itu datang ke sesuatu yang sangat sederhana.
a) pertama instal perangkat lunak yang diperlukan (menggunakan konsol atau gambar IoT):
sudo apt-get install -y bluetooth pulseaudio pulseaudio-module-bluetooth alsa-utils
b) Aktifkan Bluetooth (jika dinonaktifkan): sudo systemctl mengaktifkan bb-wl18xx-bluetooth.service
c) Edit /etc/pulse/default.pa:
d) Reboot: sudo reboot
e) Setelah memuat BBBlue, hidupkan kolom Bluetooth dalam mode koneksi:
bluetoothctl scan on agent on default-agent pair <Bluetooth speaker's MAC address> # <--- eg AB:58:EC:5C:0C:03 connect <Bluetooth speaker's MAC address>
f) Akhirnya:
pulseaudio --start echo "connect <Bluetooth speaker's MAC address>" | bluetoothctl pactl list
Itu saja! Omong-omong, jika Anda akan menggunakan synthesizer ucapan, saya sarankan Festival.
Jika Anda ingin membantu - silakan menulis kepada saya di LAN atau
VK ,
FB .
habrastorage.org/webt/mt/lh/91/mtlh91x8jag1t-ibt_np3uayuke.jpegTerima kasih telah membaca, bertanya dan mengkritik kami sepenuhnya.