Was hast du getan
Was kannst du tun?
――Ich weiß nicht ... (leidenschaftlich)
Was möchten Sie tun
Das Ball Tracking-Demo-Video ist unten angefügt. Ich möchte so etwas tun.
Es gibt ein Modell namens EP, das der Nachfolger von Robomaster S1 ist, und Sie können das tun, was Sie gerade gesagt haben. SDK wird ebenfalls verteilt. (Dokument ist hier)
https://github.com/dji-sdk/RoboMaster-SDK/tree/master/sample_code
Laut Herrn Bruno, der mit dieser Angelegenheit vertraut ist, unterstützt dieses SDK ursprünglich nicht S1, aber da die Konfiguration ähnlich ist, kann es umgeleitet werden, wenn es gut gemacht wird.
Referenz:
Derzeit scheint ein Root-Zugriff erforderlich zu sein
Stellen Sie über den microUSB-Anschluss eine Verbindung zu Robomasters 1 von Ihrem Windows 10-Heim-PC her.
Ich werde basierend auf PDF hier fortfahren, aber beachten Sie, dass die Software nicht fest verwurzelt werden kann, wenn sie nicht fest verwurzelt ist. Bitte nicht aktualisieren **, da ein Bericht von vorliegt.
Bereiten Sie die folgenden Elemente vor.
Entpacken Sie Platform Tools und merken Sie sich den Speicherort des Ordners. Schließen Sie Ihren PC an Robomasters 1 an.
** Bitte entfernen Sie das an Ihren PC angeschlossene Android-Gerät, bevor Sie mit dem nächsten Schritt fortfahren. ** ** **
Schalten Sie Robomasters1 ein und starten Sie die Software auf der PC-Seite, um eine Verbindung herzustellen. (Ich habe eine Wifi-Verbindung)
Gehen Sie zur Seite, um Python-Skripte aus "Lab" -> "DIY Programming" zu schreiben.
Kopieren Sie den folgenden Code, fügen Sie ihn ein, um einen neuen zu erstellen, und führen Sie ihn aus. (Es sieht so aus, als würdest du sh drücken, um adb zu aktivieren.)
def root_me(module):
__import__=rm_log.__dict__['__builtins__']['__import__']
return __import__(module,globals(),locals(),[],0)
builtins=root_me('builtins')
subprocess=root_me('subprocess')
proc=subprocess.Popen('/system/bin/adb_en.sh',shell=True,executable='/system/bin/sh',stdout=subprocess.PIPE,stderr=subprocess.PIPE)
Wechseln Sie als Nächstes zum Ordner Platform Tools (dem Ordner, in dem adb ausgeführt werden kann), den Sie zuvor entpackt haben, und starten Sie Powershell. (Terminal für Linux-Leute)
.\adb.exe devices
Nach der Ausführung
.\adb.exe shell
Ausführen. Wenn alles gut geht, sollten Sie es wie unten gezeigt als root haben.
Nachtrag: Wenn Sie sich [Exchange hier] ansehen (https://github.com/dji-sdk/RoboMaster-SDK/issues/10), müssen Sie die Datei von Robomaster EP kopieren, und Sie können es selbst tun. Korrekt ...
Betrachtet man das SDK vom 12. August 2020, so scheint es, dass der SDK-Modus durch Senden eines Signals an einen bestimmten Port der Robomasters 1-Adresse aktiviert wird und verschiedene Befehle ausgegeben werden.
Beispielsweise sendet eine Testdatei, die das SDK aktiviert und verschiedene Anweisungen von einem PC aus ausführt, ein Signal über die Socket-Kommunikation an Port 40923.
# -*- encoding: utf-8 -*-
#Messumgebung: Python 3.6 Ausgaben
import socket
import sys
#Unter dem Direktverbindungsmodell hat die Schreibtischausrüstungsperson IP-Erdungsstelle 192.168.2.1,Endnummer 40923 der einstweiligen Verfügung
host = "192.168.100.111"
port = 40923
def main():
address = (host, int(port))
#Yukikijin Rückhalteanordnung Ende Eingang Erektion TCP-Verbindung
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Connecting...")
s.connect(address)
print("Connected!")
while True:
#Gleiches Warten 户 Rückhalteanordnung importieren
msg = input(">>> please input SDK cmd: ")
#Zum Zeitpunkt von Q oder q vor dem Verlassen
if msg.upper() == 'Q':
break
#Additionsbindung
msg += ';'
#Rückhalteanordnung veröffentlichen
s.send(msg.encode('utf-8'))
try:
#Das Ergebnis der Rückkehr der Person
buf = s.recv(1024)
print(buf.decode('utf-8'))
except socket.error as e:
print("Error receiving :", e)
sys.exit(1)
if not len(buf):
break
#Engagement
s.shutdown(socket.SHUT_WR)
s.close()
if __name__ == '__main__':
main()
Bei einer Verbindung von der Clientseite wird jedoch der folgende Fehler ausgegeben.
ConnectionRefusedError: [WinError 10061]Es konnte keine Verbindung hergestellt werden, da dies vom Zielcomputer abgelehnt wurde.
Muss ich Hosts oder ähnliches bearbeiten oder mit der Berechtigung herumspielen? Ich untersuche es für einen Moment. (Ich möchte von jemandem lernen, der damit vertraut ist.)
Nachtrag: Als ich es ausprobiert habe, scheint das Problem zu sein, dass der in EP geöffnete Port in S1 nicht geöffnet ist.
Als Basis habe ich den folgenden Server mit Robomaster s1 gestartet und bestätigt, dass er von einem PC aus verbunden werden kann.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.100.111", 1235))
s.listen(5)
timeout=60## run 60 sec
s.settimeout(timeout)
while True:
clientsocket, address = s.accept()
print(f"Connection from {address} has been established!")
clientsocket.send(bytes("Welcome to the server!", 'utf-8'))
clientsocket.close()
print("Exit!")
Ich bin ein Amateur von Linux und Hack wie diesem, daher war es schwierig, den Inhalt zu sehen und zu verstehen. Ich werde es durch die Aufzeichnung posten.
Es scheint ein Linux-System zu sein.
$ cat /proc/version
Linux version 3.10.62 (jenkins@APServer01) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Tue Jul 16 04:08:11 CST 2019
/
Ich weiß nichts, also fühle ich mich so, als würde ich mir das ansehen, aber ich werde es mir notieren.
amt
blackbox
cache
data
default.prop
dev
etc
file_contexts
ftp
init
init.environ.rc
init.lc1860.3connective.rc
init.rc
init.trace.rc
init.usb.rc
proc
property_contexts
root
sbin
sdcard
seapp_contexts
sepolicy
sys
system
system.md5
tmp
ueventd.rc
var
vendor
Es gibt einen Python-Ordner in data / python_flies
.
Der Inhalt von bin ist wie folgt
2to3
idle
pydoc
python
python-config
python3.6m
pyvenv
Sie können es tatsächlich tun. Die Umgebung scheint 3.6 zu sein.
126|root@xw607_dz_ap0002_v4:/data/python_files/bin # ./python
Python 3.6.6 (default, Jul 16 2018, 17:22:20)
[GCC 4.8.3 20140320 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Der Unterschied zur Robomaster-App besteht darin, dass Sie bestimmte Pakete verwenden können.
In dem von der Anwendung erstellten Code wird beispielsweise ** Socket usw. beim Import als Fehler abgespielt, kann jedoch normal über die Root-Befehlszeilenausführung ausgeführt werden. ** ** **
Es wäre schön, wenn es einen Editor wie vi gäbe, aber was die Ausgabe von ls / system / bin
betrifft, gibt es keinen Editor, so dass es notwendig erscheint, Dateien zu übertragen.
Wenn Sie wissen, wo sich die von der App erstellte Datei befindet, können Sie sie anscheinend bis zu einem gewissen Grad im Stammverzeichnis ausführen.
Ausgelassen tty. Es gibt video0 und so weiter.
alarm
android_adb
apple_roleswitch
applecp
ashmem
binder
block
bulk_usb
bus
comip-snd-lowpower
comip-ureg
console
cpu_dma_latency
cuse
full
fuse
graphics
hx170dec
hx280enc
hx280enc_h1
i2c-0
i2c-1
i2c-3
i2c-4
input
ion
kmsg
lcmem
log
loop-control
mem
modem
mtp_usb
network_latency
network_throughput
null
on2map
on2psm
ptmx
pts
random
rtc0
sdpr
sdps
snd
socket
spidev0.0
spidev1.0
spidev2.0
uio0
uio1
uio2
urandom
vcs
vcs1
vcsa
vcsa1
video0
zero
Recommended Posts