Qu'est-ce que tu as fait
Que pouvez-vous faire?
――Je ne sais pas ... (passionné)
Qu'est-ce que tu veux faire
--Je souhaite envoyer des commandes d'un PC au Robomaster S1 et collecter des images et des données de capteur Référence: article de M. Ishikawa --Je voudrais l'utiliser pour traiter les images Robomaster sur un PC et envoyer des signaux de contrôle, comme dans le volontaire Demo.
La vidéo de démonstration de suivi de balle est jointe ci-dessous. Je veux faire quelque chose comme ça.
Il existe un modèle appelé EP, qui est le successeur de Robomaster S1, et vous pouvez faire ce que vous venez de dire. Le SDK est également distribué. (Le document est ici)
https://github.com/dji-sdk/RoboMaster-SDK/tree/master/sample_code
Selon M. Bruno qui connaît bien ce sujet, ce SDK ne supporte pas à l'origine S1, mais comme la configuration est similaire, il peut être détourné s'il est bien fait.
référence:
Pour le moment, un accès root semble nécessaire
Connectez-vous à Robomasters 1 à partir de votre PC Windows 10 Famille à l'aide du connecteur microUSB.
Je vais continuer sur PDF here, mais notez qu'il ne peut pas être rooté si le firmware est nouveau. Veuillez ne pas mettre à jour ** car il existe un rapport de.
Préparez les éléments suivants.
-PC, câble de conversion microUSB
Décompressez Platform Tools et mémorisez l'emplacement du dossier. Connectez votre PC à Robomasters 1.
** Veuillez supprimer l'appareil Android connecté à votre PC avant de passer à l'étape suivante. ** **
Mettez le Robomasters1 sous tension et démarrez le logiciel côté PC pour se connecter. (J'ai une connexion Wifi)
Allez sur la page pour écrire des scripts Python depuis "Lab" -> "Programmation DIY".
Copiez et collez le code suivant pour en créer un nouveau et l'exécuter. (On dirait que vous appuyez sur sh pour activer adb)
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)
Ensuite, allez dans le dossier Platform Tools (le dossier où adb peut être exécuté) que vous avez décompressé précédemment et démarrez Powershell. (Terminal pour Linux)
.\adb.exe devices
Après avoir exécuté
.\adb.exe shell
Éxécuter. Si tout se passe bien, vous devriez l'avoir en tant que root comme indiqué ci-dessous.
ConnectionRefusedError: [WinError 10061]
du côté Robomasters1 et essayez l'exemple de programme SDK ~~Addendum: En regardant Exchange here, il semble que vous deviez copier le fichier depuis Robomaster EP, et vous pouvez le faire vous-même. C'est vrai ...
En regardant le SDK au 12 août 2020, il semble que le mode SDK soit activé en envoyant un signal à un port spécifique de l'adresse Robomasters 1, et diverses commandes sont émises.
Par exemple, un fichier de test qui active le SDK et exécute diverses instructions à partir d'un PC envoie un signal au port 40923 via une communication de socket.
<détails> Cependant, lors de la connexion du côté client, l'erreur suivante est émise. Dois-je modifier les hôtes ou quelque chose, ou jouer avec l'autorisation? J'examine cela pendant un moment. (Je veux apprendre de quelqu'un qui le connaît.) Post-scriptum: Quand je l'ai essayé, il semble que le problème soit que le port ouvert dans EP ne soit pas ouvert dans S1. Comme base, j'ai démarré le serveur suivant avec Robomaster s1 et confirmé qu'il peut être connecté depuis un PC. Je suis un amateur de Linux et de Hack comme ça, donc c'était difficile de voir et de comprendre le contenu. Je vais l'afficher par le dossier. Cela semble être un système Linux. Je ne sais rien, alors j'ai l'impression de regarder ça, mais je vais en prendre note. Il y a un dossier Python dans Le contenu du bac est le suivant Vous pouvez réellement le faire. L'environnement semble être de 3,6. La différence avec l'application robomaster est que vous pouvez utiliser certains packages. Par exemple, dans le code créé par l'application, ** socket etc. est lu comme une erreur lors de l'importation, mais il peut être exécuté normalement par l'exécution de la ligne de commande racine. ** ** Ce serait bien s'il y avait un éditeur tel que vi, mais pour ce qui est de la sortie de Si vous savez où se trouve le fichier créé par l'application, il semble que vous puissiez l'exploiter dans une certaine mesure à la racine. Tty omis. Il y a video0 et ainsi de suite.
Recommended Posts
# -*- encoding: utf-8 -*-
#Environnement de mesure: Python 3.6 éditions
import socket
import sys
#Sous le modèle de connexion directe, la personne chargée de l'équipement de bureau site site au sol IP 192.168.2.1,Numéro de fin de l'ordonnance de blocage 40923
host = "192.168.100.111"
port = 40923
def main():
address = (host, int(port))
#Ordre de retenue Yukikijin fin de l'érection de l'entrée connexion TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Connecting...")
s.connect(address)
print("Connected!")
while True:
#Attente égale 户 ordre de restriction d'importation
msg = input(">>> please input SDK cmd: ")
#Au moment de Q ou q, avant de partir
if msg.upper() == 'Q':
break
#Cohésion d'addition
msg += ';'
#Publier une ordonnance de blocage
s.send(msg.encode('utf-8'))
try:
#Le résultat du retour de la personne
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()
ConnectionRefusedError: [WinError 10061]Impossible de se connecter car il a été rejeté par l'ordinateur cible.
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!")
Supplément: rechercher le contenu
Informations système
$ 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
Directement en dessous de
/
Cliquez pour développer summary>
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
Environnement Python
data / python_flies
.2to3
idle
pydoc
python
python-config
python3.6m
pyvenv
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.
>>>
ls / system / bin
, il n'y a pas d'éditeur, il semble donc nécessaire de transférer des fichiers.Contenu de dev
Cliquez pour développer summary>
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