-
Notifications
You must be signed in to change notification settings - Fork 1
Main manager #23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Cbampeta
wants to merge
122
commits into
main
Choose a base branch
from
main-manager
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Main manager #23
Changes from all commits
Commits
Show all changes
122 commits
Select commit
Hold shift + click to select a range
603a4e7
feat: rajout de lidar.stop dans car.stop() et de multiprocessus dans …
Cbampeta 772314b
Merge branch 'main' into main-manager
Cbampeta dece7b4
Ajout du serveur a la branch main manager. Attention pas encore eu la…
ExoRoy 923856a
Merge remote-tracking branch 'refs/remotes/origin/main-manager' into …
Cbampeta 9188d3a
creation de test_serveur pour tester la communication zerorpc
Cbampeta 895f19b
feat: rajout des constantes vitesse et direction dans la classe apivo…
Cbampeta c2e72cb
fix : journal handler name
Cbampeta caacc48
feat: rajout des dépendence dans le Serveur en attendant de le rajout…
Cbampeta 2a05b38
feat : rajout de test pour vérifier si le serveur est lancé
Cbampeta f536c1a
fix : self.cam.start
Cbampeta ed66194
rajouut de try et de exception pour voir les erreur
Cbampeta 3a9d1e3
rajout de test au début
Cbampeta d0116d1
test
Cbampeta 7cdc0e2
fix : enlevage de system car pas important pour l'instant
Cbampeta 12b0e4d
fix : enlevage de picamera en attendant de test zerorpc
Cbampeta d0597c0
test
Cbampeta 583775b
test
Cbampeta 7bd7118
fix: on passe a une meilleur structure de read_data fait par l'asserv…
Cbampeta 88a16ce
changement dans test_serveur
Cbampeta b16f35f
fix: dans read_data oublie de self et rajout de la mise à jour de la …
Cbampeta 9556f2b
feat : enlevage des print inutile et rajout de variable pour enregist…
Cbampeta 728d40d
feat : rajout de test serveru avec la nouvelle structure de zeromq
Cbampeta 27d9f4d
fix: fix dans serveur_mq et test_serveur
Cbampeta 6ee55a0
fix
Cbampeta 3c03eec
fix: ça marche le serveur_mq et le test_serveur
Cbampeta 5fff2b0
rajout de sécurité pour Serveur_mq et l'envoie par i2c
Cbampeta 5257fc3
fix: erreur de syntaxe
Cbampeta 4ff0624
rajout de smbus et zmq dans les dépendance et code test_serveur et Se…
Cbampeta 7c8225f
test de rajoue d'information dans Serveur_mq
Cbampeta 1762638
rajout de l'idle pour test
Cbampeta cdbcf48
fix
Cbampeta 79550b3
fix : changement dans Serveur_mq et creation d'un main dans Serveur_mq
Cbampeta f4efd9e
feat : its working (i thnils)
Cbampeta ad7f2c0
feat : commit (rajout de test pour le chunk de idiams
Cbampeta 4906d16
Merge branch 'main' into main-manager
Cbampeta 8a55a2b
fix : changement dans commande_PS4 pour marcher avec zmq
Cbampeta 746b2c6
feat: on peu maintenant lancer commande ps4 depuis la voiture avec le…
Cbampeta 96faa64
changemnet et rajout d'un afffichage de running et de capacinbilité d…
Cbampeta 599ba8e
feat: suppression des prints incessant
Cbampeta ffed0fe
feat : cela marche
Cbampeta a594278
feat: rajout de la possibilité de prendre le control de la voiture a …
Cbampeta 9bfa002
fix : on essaye de connecter le reste à la pi
Cbampeta 06b8ff1
feat : passage en sub/pub pour soucis de vitesse
Cbampeta 2fc2883
feat : mise a jour de commande_PS4 pour marcher avec la nouvelle stru…
Cbampeta e71c658
feat : utilisation de udp pour controller la voiture a distance
Cbampeta f73035f
fix: commande ps4 et serveur pour bien ensemble marcher
Cbampeta b120946
fix : reimplementation de l'envoie d'info par Serveur_mq
Cbampeta f6928f9
fix: chnaghement de non dans switch_remote_control
Cbampeta e04f42a
rajout de bouton reboot
Cbampeta 5cdb8be
feat :rajout de bouton reboot
Cbampeta 45045be
fix : on a serveur_mq et remote_controle et test_serveur qui marche bien
Cbampeta 2d08d23
fix : reduction du lag dans la direction en envoie (j'ai supprimer le…
Cbampeta c4f8de6
rajout de la récupération des donnée du lidar
Cbampeta b5df107
fix : enleve le raise si on trouve pas le lidar
Cbampeta 4b16f50
fix : changement dans startup pour lancer Serveur_mq avec uv
Cbampeta 0109b51
fix : enlevage de l'affichage de no de info
Cbampeta 0a76891
fix: résolution de l'appel de uv directement dans startup
Cbampeta 01df9b4
feat: passage a l'utilisatinon de when_pressed
Cbampeta 2fb2063
feat : rajout de lgpio dans les dépendances
89c90ab
feat: suppression de kill all dans les options et rajout que si un pr…
Cbampeta 459274b
fix: on fait en sorte que lorsque l'on reapuiille sur le bouton cela …
Cbampeta c46ad65
fix : petit changement dans lorganisation des fonction
Cbampeta 20b95a2
feat : rajout de fonction pas utiliser
Cbampeta 899618c
feat: mise en classe le serveur
Cbampeta 48117f7
fix : dans uv avec les bonne dépendance
Cbampeta 967d232
feat : Serveur_mq slef en alerte
Cbampeta e4e0d31
correction des selfs du C
ExoRoy 8a00574
feat: rajout de la prise de video en sortie par serveur_mq et entrée …
Cbampeta 77a7eba
rajout de Camera_serv qui lance sur un lien la camera en temps réel
Cbampeta ebb85a9
changement du thread de camera_serv dans serveur_mq
Cbampeta 8606da1
modification pour que Camera utilise Camera_serv pour récupéré les in…
Cbampeta 459e5e0
changement en uv sync et rajout de opencv dans les dependance
Cbampeta 5b6d3ff
rajouut de scipy en temps que dependance
Cbampeta 0a7e74f
feat: rajout de la fonctionnabilité de toggle le lancement du stream …
Cbampeta 4a0d602
fix: petit fix sur coment son lancé les fonctions depuis le menu
Cbampeta 0e2a082
fix: kill du thread de remote control maintenant opérationnelle
Cbampeta 298e430
fix : diminution du nombre de thread actif.
Cbampeta dc5b418
rajout, d'information a envoyé.
Cbampeta 073cdae
z
Cbampeta 574293e
fix: optimistion de Camera_serv et Camera pour avoir un flux video pl…
Cbampeta aac925b
feat: utilisation du nouveau system de programme en passant tout par …
Cbampeta 0ce59a1
fix: fix plusiseur programme pour que cela marche
Cbampeta 89666e8
fix: petit embélissement et suppression de chose inutile
Cbampeta 2126db6
fix: dans remote control import time
Cbampeta 68c134b
Merge branch 'main' into main-manager
Cbampeta 1d1218b
feat : rajout d'information pour mes fonction
Cbampeta f335843
fix : rajout de la possibilité de mettre la voiture en stand by.
Cbampeta c3212b6
feat : rajout de commantaire pour plus de visibilité
Cbampeta c1e92e5
feat : rajout Car pour qu'il soit utiliser dans la nouvelle structure
Cbampeta 863741d
test: rajout d'un programme pour les module externe
Cbampeta f76afa7
feat: uniformisation direction_d et rajout d'un module pour initialis…
Cbampeta 61a34f2
fix: petit soucis
Cbampeta e4b21ec
fix: rajout de l'import os dans poweroff
Cbampeta b7af974
fix : suppression de fichier inutile
Cbampeta 0d15e34
feat : changement de dans module_initialisation pour l'affichage (plu…
Cbampeta d1d32ea
fix: soucis oublie de self dans poweroff
Cbampeta 0525d89
fix: revue de la structure du code (en terme de architecture des fich…
Cbampeta 8a7aeae
fix: resolution de chemin de dependance pour les import (et aussi que…
Cbampeta 1efb726
fix: toujours changement relatif au import
Cbampeta d61c722
fix: toujours changement relatif au import
Cbampeta 752b677
feat: rajout de log partout
Cbampeta 168f5bd
feat: rajout de log partout
Cbampeta 8eaf919
feat: rajout de log partout
Cbampeta 73d7321
feat: suppression d'un import dans serveur_mq qui servai a rien (np) …
Cbampeta 360f3b4
feat : rajout de constante dans autotech constante et dans Serveur_mq…
Cbampeta e8e7e31
feat: rajout de Constante dans autotech constante et chnagement des p…
Cbampeta f46f8e8
feat: rajout de constant pour le stream de la camera
Cbampeta d8a554c
fix: enlevage de name= main dans car.py car non fonctionnelle en atte…
Cbampeta 1c659c2
feat: rajout de commentaire dans Autotech_constante et suppression du…
Cbampeta 612b53a
feat: changement pour êue le script se lace mme si il est toujours pa…
Cbampeta 14d26e6
feat : enlevage de tout les .name dans les Programmes
Cbampeta 6ada10e
fix : petite erreur dans autotech_constante
Cbampeta 61906bf
fix: rajout de la de l'i2c en tant que programme et resolution de pet…
Cbampeta 00bec56
feat: rajout de git reset hard pour empecher que le pull bloque si il…
Cbampeta cc4fff0
fix: oublie de src dans un from de serveur_mq.py
Cbampeta 712ccc7
fix: rajout de __name__ pour les bon dire monsieur Danura
Cbampeta 0d5f8d5
fix: remplacage de '' par 0.0.0.0 pour les bon vouloir e Danura
Cbampeta a3a5964
fix: rajout de __main = __name pour les bon vouloir e Danura
Cbampeta 1b33e99
feat: deplacage des import
Cbampeta d7ac614
fix: fix de camera_serv car soucis lors du lancement du stream
Cbampeta 1f9f09d
feat : modification mineur
Cbampeta b4e3eb8
fix: suppression de code inutile
Cbampeta File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cbampeta marked this conversation as resolved.
Show resolved
Hide resolved
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,133 +1,158 @@ | ||
| from pyPS4Controller.controller import Controller | ||
| import time | ||
| import os | ||
| from threading import Thread | ||
|
|
||
| #Pour le protocole I2C de communication entre la rasberie Pi et l'arduino | ||
| import smbus #type: ignore #ignore the module could not be resolved error because it is a linux only module | ||
| import numpy as np | ||
| import struct | ||
|
|
||
| from src.HL.programme.programme import Program | ||
| from src.HL.Autotech_constant import MAX_ANGLE | ||
| import logging | ||
| ################################################### | ||
| #Intialisation du protocole I2C | ||
| #Intialisation du protocole zmq | ||
| ################################################## | ||
|
|
||
| # Create an SMBus instance | ||
| bus = smbus.SMBus(1) # 1 indicates /dev/i2c-1 | ||
|
|
||
| # I2C address of the slave | ||
| SLAVE_ADDRESS = 0x08 | ||
|
|
||
| def write_vitesse_direction(vitesse,direction): | ||
| # Convert string to list of ASCII values | ||
| data = struct.pack('<ff', float(vitesse), float(direction)) | ||
| bus.write_i2c_block_data(SLAVE_ADDRESS, 0, list(data)) | ||
| def envoie_donnee(Voiture): #si utilisation de la voiture directement | ||
| print("lancement de l'i2c") | ||
Cbampeta marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| import smbus | ||
| import struct | ||
Cbampeta marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| from src.HL.Autotech_constant import SLAVE_ADDRESS | ||
|
|
||
| ################################################### | ||
| #Intialisation des moteurs | ||
| ################################################## | ||
| bus = smbus.SMBus(1) | ||
| while True: | ||
| try : | ||
| data = struct.pack('<ff', float(round(Voiture.vitesse_mms)), float(round(Voiture.direction_d))) | ||
| bus.write_i2c_block_data(SLAVE_ADDRESS, 0, list(data)) | ||
| #time.sleep(0.00005) | ||
| except Exception as e: | ||
| print("i2c mort" + str(e)) | ||
Cbampeta marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| time.sleep(1) | ||
|
|
||
| direction_d = 0 # angle initiale des roues en degrés | ||
| vitesse_m = 0 # vitesse initiale en métre par milliseconde | ||
|
|
||
| #paramètres de la fonction vitesse_m_s, à étalonner | ||
| vitesse_max_m_s_hard = 8 #vitesse que peut atteindre la voiture en métre | ||
| vitesse_max_m_s_soft = 2 #vitesse maximale que l'on souhaite atteindre en métre par seconde | ||
| vitesse_min_m_s_soft = -2 #vitesse arriere que l'on souhaite atteindre en métre | ||
|
|
||
| angle_degre_max = +18 #vers la gauche | ||
|
|
||
|
|
||
| MAX_LEFT = -32767 + 3000 # deadzone 3000 | ||
|
|
||
| # fonction naturel map de arduino pour plus de lisibilité | ||
| def map_range(x, in_min,in_max, out_min, out_max): | ||
| return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min | ||
|
|
||
|
|
||
| class PS4ControllerProgram(Program): | ||
Cbampeta marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| def __init__(self): | ||
| super().__init__() | ||
| self.log = logging.getLogger(__name__) | ||
| self.running = False | ||
| self.controls_car = True | ||
|
|
||
| #initialisation | ||
| self.controller = MyController(interface="/dev/input/js0", connecting_using_ds4drv=False) | ||
| self.controller.stop = True | ||
|
|
||
| def set_direction_degre(angle_degre) : | ||
| global direction_d | ||
| direction_d = angle_degre | ||
| print("angle_degré: ",direction_d,"vitesse: ",vitesse_m) | ||
|
|
||
| def set_vitesse_m_ms(vitesse_m_ms): | ||
| global vitesse_m | ||
| vitesse_m = vitesse_m_ms | ||
| print("angle_degré: ",direction_d,"vitesse: ",vitesse_m) | ||
|
|
||
| def recule(): #actuellement ne sert a rien car on peux juste envoyer une vitesse négative | ||
| global vitesse_m | ||
| vitesse_m = -2000 | ||
|
|
||
| def start(self): | ||
| self.running = True | ||
| self.controller.stop = False | ||
| self.thread = Thread( | ||
| target=self.controller.listen, kwargs=dict(timeout=60), | ||
| daemon=True | ||
| ) | ||
| self.thread.start() | ||
|
|
||
| def kill(self): | ||
| self.controller.stop = True | ||
| self.running = False | ||
|
|
||
| @property | ||
| def vitesse_d(self): | ||
| return self.controller.vitesse_mms | ||
|
|
||
| @property | ||
| def direction_d(self): | ||
| return self.controller.direction_d | ||
|
|
||
| class MyController(Controller): | ||
|
|
||
| def __init__(self, **kwargs): | ||
| Controller.__init__(self, **kwargs) | ||
| super().__init__(**kwargs) | ||
| self.log = logging.getLogger(__name__) | ||
| self.vitesse_mms = 0 # vitesse initiale en métre par milliseconde | ||
| self.direction_d = 0 # angle initiale des roues en degrés | ||
| self.filtered = 0 | ||
| self.alpha = 0.3 | ||
| self.running = 0 | ||
|
|
||
| def stable_direction(self,value): | ||
|
|
||
| # Deadzone | ||
| if value < MAX_LEFT: | ||
| target = -MAX_ANGLE | ||
| else: | ||
| target = map_range(value, -32767, 0, -MAX_ANGLE, 0) | ||
|
|
||
| # Low-pass filtering | ||
| self.filtered = self.filtered * (1 - self.alpha) + target * self.alpha | ||
| return self.filtered | ||
|
|
||
|
|
||
| def on_R2_press(self,value): | ||
| vit = map_range(value,-32252,32767,0,vitesse_max_m_s_soft*1000) | ||
| if (vit < 0): | ||
| set_vitesse_m_ms(0) | ||
| self.vitesse_mms = 0 | ||
| else: | ||
| set_vitesse_m_ms(vit) | ||
| self.vitesse_mms = vit | ||
| def on_R2_release(self): # arrete la voiture lorsque L2 est arrété d'étre préssé. | ||
| set_vitesse_m_ms(0) | ||
| self.vitesse_mms = 0 | ||
|
|
||
|
|
||
|
|
||
| def on_L3_x_at_rest(self): | ||
| set_direction_degre(0) | ||
| self.direction = 0 | ||
|
|
||
| def on_R1_press(self): #arret d'urgence | ||
| set_vitesse_m_ms(0) | ||
| self.vitesse_mms = 0 | ||
|
|
||
| def on_R1_release(self): | ||
| set_vitesse_m_ms(0) | ||
| self.vitesse_mms = 0 | ||
|
|
||
| def on_L3_up(self,value): | ||
| pass | ||
| def on_L3_down(self,value): | ||
| pass | ||
|
|
||
|
|
||
| def on_L3_right(self,value): | ||
| # print("x_r :", value, "degré : ",map_range(value,-32767, 32767, 60, 120)) | ||
| dir = map_range(value, 0, 32767, 0, angle_degre_max) | ||
| set_direction_degre(dir) | ||
| dir = map_range(value, 0, 32767, 0, MAX_ANGLE) | ||
| self.direction_d = dir | ||
|
|
||
| def on_L3_left(self,value): | ||
| print("x_r :", value, "degré : ",map_range(value,-32767, 0, -angle_degre_max, 0 )) | ||
| dir = map_range(value,-32767, 0, -angle_degre_max, 0 ) | ||
| set_direction_degre(dir) | ||
| #print("x_r :", value, "degré : ",map_range(value,-32767, 0, -MAX_ANGLE, 0 )) | ||
| dir = self.stable_direction(value) | ||
| self.direction_d = dir | ||
|
|
||
|
|
||
| def on_L2_press(self, value): | ||
| print("x_r :", value, "degré : ",map_range(value,-32767, 32767, 60, 120)) | ||
| #print("x_r :", value, "degré : ",map_range(value,-32767, 32767, 60, 120)) | ||
| vit = map_range(value,-32252,32767,0,vitesse_min_m_s_soft*1000) | ||
| if (vit > 0): | ||
| set_vitesse_m_ms(0) | ||
| self.vitesse_mms = 0 | ||
| else: | ||
| set_vitesse_m_ms(vit) | ||
| self.vitesse_mms = vit | ||
|
|
||
| def on_L2_release(self): #arrete la voiture lorsque L2 est arrété d'étre préssé. | ||
| set_vitesse_m_ms(0) | ||
|
|
||
| #envoie de la direction et de l'angle toute les millisecondes | ||
| def envoie_direction_degre(): | ||
| while True : | ||
| write_vitesse_direction(int(vitesse_m), int(direction_d)) | ||
| time.sleep(0.001) | ||
|
|
||
|
|
||
| # boucle principal | ||
| controller = MyController(interface="/dev/input/js0", connecting_using_ds4drv=False) | ||
| try: | ||
| Thread(target = envoie_direction_degre, daemon=True).start() | ||
| controller.listen(timeout=60) | ||
|
|
||
| except KeyboardInterrupt: | ||
| print("Arrêt du programme") | ||
| controller.stop() | ||
| exit(0) | ||
| self.vitesse_mms = 0 | ||
|
|
||
| def on_L3_up(self,value): | ||
| pass | ||
| def on_L3_down(self,value): | ||
| pass | ||
| def on_L3_y_at_rest(self): | ||
| pass | ||
|
|
||
| if __name__ == "__main__": | ||
| controller = MyController(interface="/dev/input/js0", connecting_using_ds4drv=False) | ||
| try: | ||
| Thread(target = envoie_donnee,args=(controller,), daemon=True).start() | ||
| controller.listen(timeout=60) | ||
|
|
||
| except KeyboardInterrupt: | ||
| print("Arrêt du programme") | ||
| controller.stop() | ||
| exit(0) | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.