Robot contrôlé par netbook via internet
Débuté par Hexa Emails, déc. 13 2010 10:51
34 réponses à ce sujet
#21
Posté 23 décembre 2010 - 02:37
Bon, je me suis réjoui un peu trop vite.
ça fonctionne, ça c'est vrai, mais pas dans le bon sens:
le pricipe de serveur/client sur Processing est:
-Le SERVER est toujours connecté, il envoie des données à tous ses clients, peu importe qui ils sont
-Le CLIENT ne peut se lancer qu'arès le serveur, il a besoin de l'adresse IP de son serveur pour se connecter, et il reçoit les données de son serveur.
CE QUE JE VOUDRAIS:
Mon robot crée un serveur dès qu'il s'allume, avec une IP fixe grâce à hamachi.
Ma télécommande, se connecte quand elle veut à cettte IP fixe, elle envoie des données à mon robot.
CE QUE J'AI:
Ma télécommande crée un serveur
Mon robot peut ensuite rejoindre ce serveur, pou recevoir les données que ma télécommande envoie
EN QUOI C'EST GÊNANT:
Je dois dire à mon robot de se connecter UNE FOIS que j'ai "allumé" la télécommande, et lui donner l'IP de ma télécommande -_-"
Comment faire:
1)RECEVOIR des données avec un serveur? en théorie c'est possible, mais je n'arrive pas à trouver les outils pour...?
2)RETENTER de se connecter à intervalles fixes? le problème est que l'échec de connexion=> crash du sketch. Et puis il faudrait toujours rentrer l'IP de la télécommande au lieu de celle du robot...
J'aime bien ces balises :p
ça fonctionne, ça c'est vrai, mais pas dans le bon sens:
le pricipe de serveur/client sur Processing est:
-Le SERVER est toujours connecté, il envoie des données à tous ses clients, peu importe qui ils sont
-Le CLIENT ne peut se lancer qu'arès le serveur, il a besoin de l'adresse IP de son serveur pour se connecter, et il reçoit les données de son serveur.
CE QUE JE VOUDRAIS:
Mon robot crée un serveur dès qu'il s'allume, avec une IP fixe grâce à hamachi.
Ma télécommande, se connecte quand elle veut à cettte IP fixe, elle envoie des données à mon robot.
CE QUE J'AI:
Ma télécommande crée un serveur
Mon robot peut ensuite rejoindre ce serveur, pou recevoir les données que ma télécommande envoie
EN QUOI C'EST GÊNANT:
Je dois dire à mon robot de se connecter UNE FOIS que j'ai "allumé" la télécommande, et lui donner l'IP de ma télécommande -_-"
Comment faire:
1)RECEVOIR des données avec un serveur? en théorie c'est possible, mais je n'arrive pas à trouver les outils pour...?
2)RETENTER de se connecter à intervalles fixes? le problème est que l'échec de connexion=> crash du sketch. Et puis il faudrait toujours rentrer l'IP de la télécommande au lieu de celle du robot...
J'aime bien ces balises :p
#25
Posté 23 décembre 2010 - 04:20
23 dec 2010: Ajout d'une fonction de contrôle plus facilement paramétrable:
Il s'agit de 2 sketches Processing: L'un peut tourner sous n'importe quel PC (il suffit au préalable d'installer et de configurer raapidement Hamachi: se logguer dans mon réseau privé -soumis à un mot de passe ^^ - ) et l'autre sketch tourne sur le netbook, sur le robot, pour envoyer les données à l'arduino qui pilote les moteurs (et ausi au moins 2 servos pour bouger une webcam, + 4-5 servos pour faire un bras robotisé lorsque je les aurai reçus.)
Le sketch sur mon EeePC: crée un serveur, reçoit si un client se connecte à ce serveur, et si ce client donne des ordres, si oui, il les envoie en brut sur mon arduino (l'arduino décryptera ensuite, genre "z"=avance, "s"=recule...).
//Crée un serveur (mon robot) qui permet de recevoir les ordres de Moi.
//le principe est simple: si une touche est appuyée, elle est envoyé sur le réseau, reçue par ce sketch, puis envoyée à l'arduino :)
//librairies nescéssaire: réseau local et arduino (port série)
import processing.net.*;
import processing.serial.*;
Serial Arduino; //pour envoyer les ordres au robot!
Server robot; //rien à voir avec l'arduino, c'est la réception des données à travers le pseudo-réseau local hamachi
PFont font1; //la police, peu utile
void setup() { // se lance au début
size(600, 500);
println(Serial.list()); // liste et affiche tous les ports disponibles
Arduino = new Serial(this, Serial.list()[0], 9600); //crée une connexion séria avec l'arduino, le dernier argument est la vitesse
robot = new Server(this, 12345); //le serveur en question, port 12345, à mon avis pas utilisé
background(0); //fond noir
frameRate(5); // 5 FPS, mon netbook est pas un alienware
font1 = createFont("Courier", 60); //la police et la taille, appellée à disparaitre
fill(255); // pour écrire le texte (couleur)
textFont(font1); //met en place la police
text("ROBOT", 175,120); // écrit "ROBOT" aux coordonnées, avec les réglages d'ériture précédentes
}
void draw() { //équivalent du loop en gros
// robot.available() renvoie un client, que je stocke dans "telecommande"
Client telecommande = robot.available();
// Si il y a un client, et qu'il donne des ordres
if (telecommande !=null) {
String ordres = telecommande.readString();
if (ordres != null) {
println(ordres);
Arduino.write(ordres);
}
}
}
[/code]
Le sketch sur mon autre ordi: rejoint le serveur, envoie le code ASCII de chaque touche appuyée sur ledit serveur.
//Crée un client qui se connecte à un serveur (mon robot) et lui envoie des ordres.
//le principe est simple: si une touche est appuyée, elle est envoyé sur le réseau
//néscessite de faire partie du réseau privé hamachi dédié à cet effet, dont je ne communique évidemment pas les identifiants ici :p
//librairies nescéssaire: réseau local
import processing.net.*;
Client commande; //envoi des données de la télécommande à mon netbook
PFont font1; //police d'écriture
void setup() { //se lance au début
size(600, 500); //taille de la fenêtre
background(0); //fond noir
stroke(0); //pas de bordures aux caractères je crois
frameRate(5); // pas besoin de 60 FPS!
commande = new Client(this, "5.74.100.8", 12345);// Lance un p'tit client
font1 = createFont("Courier", 60); // définit la police d'écriture
fill(255); // écrit en blanc je crois
textFont(font1); //applique la police
text("COMMANDE", 180,120); // pour s'y retrouver, ça l'écrit en gros!
}
void draw() { //on fait rien en boucle!
}
void keyPressed() { //si une touche est pressée
commande.write(key); //envoyer la touche pressée... je l'avait dit qu'il était simple!
}
[/code]
Il s'agit de 2 sketches Processing: L'un peut tourner sous n'importe quel PC (il suffit au préalable d'installer et de configurer raapidement Hamachi: se logguer dans mon réseau privé -soumis à un mot de passe ^^ - ) et l'autre sketch tourne sur le netbook, sur le robot, pour envoyer les données à l'arduino qui pilote les moteurs (et ausi au moins 2 servos pour bouger une webcam, + 4-5 servos pour faire un bras robotisé lorsque je les aurai reçus.)
Le sketch sur mon EeePC: crée un serveur, reçoit si un client se connecte à ce serveur, et si ce client donne des ordres, si oui, il les envoie en brut sur mon arduino (l'arduino décryptera ensuite, genre "z"=avance, "s"=recule...).
//Crée un serveur (mon robot) qui permet de recevoir les ordres de Moi.
//le principe est simple: si une touche est appuyée, elle est envoyé sur le réseau, reçue par ce sketch, puis envoyée à l'arduino :)
//librairies nescéssaire: réseau local et arduino (port série)
import processing.net.*;
import processing.serial.*;
Serial Arduino; //pour envoyer les ordres au robot!
Server robot; //rien à voir avec l'arduino, c'est la réception des données à travers le pseudo-réseau local hamachi
PFont font1; //la police, peu utile
void setup() { // se lance au début
size(600, 500);
println(Serial.list()); // liste et affiche tous les ports disponibles
Arduino = new Serial(this, Serial.list()[0], 9600); //crée une connexion séria avec l'arduino, le dernier argument est la vitesse
robot = new Server(this, 12345); //le serveur en question, port 12345, à mon avis pas utilisé
background(0); //fond noir
frameRate(5); // 5 FPS, mon netbook est pas un alienware
font1 = createFont("Courier", 60); //la police et la taille, appellée à disparaitre
fill(255); // pour écrire le texte (couleur)
textFont(font1); //met en place la police
text("ROBOT", 175,120); // écrit "ROBOT" aux coordonnées, avec les réglages d'ériture précédentes
}
void draw() { //équivalent du loop en gros
// robot.available() renvoie un client, que je stocke dans "telecommande"
Client telecommande = robot.available();
// Si il y a un client, et qu'il donne des ordres
if (telecommande !=null) {
String ordres = telecommande.readString();
if (ordres != null) {
println(ordres);
Arduino.write(ordres);
}
}
}
[/code]
Le sketch sur mon autre ordi: rejoint le serveur, envoie le code ASCII de chaque touche appuyée sur ledit serveur.
//Crée un client qui se connecte à un serveur (mon robot) et lui envoie des ordres.
//le principe est simple: si une touche est appuyée, elle est envoyé sur le réseau
//néscessite de faire partie du réseau privé hamachi dédié à cet effet, dont je ne communique évidemment pas les identifiants ici :p
//librairies nescéssaire: réseau local
import processing.net.*;
Client commande; //envoi des données de la télécommande à mon netbook
PFont font1; //police d'écriture
void setup() { //se lance au début
size(600, 500); //taille de la fenêtre
background(0); //fond noir
stroke(0); //pas de bordures aux caractères je crois
frameRate(5); // pas besoin de 60 FPS!
commande = new Client(this, "5.74.100.8", 12345);// Lance un p'tit client
font1 = createFont("Courier", 60); // définit la police d'écriture
fill(255); // écrit en blanc je crois
textFont(font1); //applique la police
text("COMMANDE", 180,120); // pour s'y retrouver, ça l'écrit en gros!
}
void draw() { //on fait rien en boucle!
}
void keyPressed() { //si une touche est pressée
commande.write(key); //envoyer la touche pressée... je l'avait dit qu'il était simple!
}
[/code]
#26
Posté 06 janvier 2011 - 07:18
[quote"MrAlexis44600"]Je me suis mal exprimé, ce que j'ai découvert lorsque je tentais de passer de réseau local à l'internet c'est que je devais régler certains paramètres dans mon routeur, ce qui ne me conviens pas car je veux pouvoir bouger mon robot et ma télécommande.
D'où mon raisonnement très simple: si j'utilise une méthode de transfert qui ne nécessite aucun paramétrage de ma box, je peux m'attendre à ce que cette technique fonctionne de n'importe où, vers n'importe où. [/quote]Dans ce cas l'idée du script php, ou de n'importe quel autre script coté serveur, est idéale ! Et à mon avis bien plus pratique qu'un réseau virtuel. Si tu héberge ton script sur un serveur (un vieil ordi chez toi toujours allumé, ou un hébergeur gratuit en ligne), le robot et la télécommande ont seulement besoin d'une connexion internet classique pour y accéder.
Alors évidement, ça ajoute un élément au réseau (le serveur), mais celui-ci n'est ni gourmand, ni complexe...
D'où mon raisonnement très simple: si j'utilise une méthode de transfert qui ne nécessite aucun paramétrage de ma box, je peux m'attendre à ce que cette technique fonctionne de n'importe où, vers n'importe où. [/quote]Dans ce cas l'idée du script php, ou de n'importe quel autre script coté serveur, est idéale ! Et à mon avis bien plus pratique qu'un réseau virtuel. Si tu héberge ton script sur un serveur (un vieil ordi chez toi toujours allumé, ou un hébergeur gratuit en ligne), le robot et la télécommande ont seulement besoin d'une connexion internet classique pour y accéder.
Alors évidement, ça ajoute un élément au réseau (le serveur), mais celui-ci n'est ni gourmand, ni complexe...
#27
Posté 06 janvier 2011 - 10:32
Je te remercie de t'inquiéter de mon cas :)
J'ai vu plusieurs exemple depuis, en effet il semble faisable d'héberger tout cela sur un site tierce, la télécommande et le robot se connectant à ce site.
Tu as raison, j'entends partout que ce n'est pas complexe, mais je n'ai aucune compétence là dedans, et à mon avis je ne suis pas près d'en avoir, donc je me contente de choses à ma portée :) .
Donc voilà, en plus en ce moment je considère la méthode de transmission comme "affaire classée" car je remet à niveau toute la base mécanique/électrotechnique. Le temps que je peux consacrer aux robots je préfère le consacrer à ceci qu'à l'apprentissage du "software pur et dur" mais qui sait, un jour peut être? ;)
J'ai vu plusieurs exemple depuis, en effet il semble faisable d'héberger tout cela sur un site tierce, la télécommande et le robot se connectant à ce site.
Tu as raison, j'entends partout que ce n'est pas complexe, mais je n'ai aucune compétence là dedans, et à mon avis je ne suis pas près d'en avoir, donc je me contente de choses à ma portée :) .
Donc voilà, en plus en ce moment je considère la méthode de transmission comme "affaire classée" car je remet à niveau toute la base mécanique/électrotechnique. Le temps que je peux consacrer aux robots je préfère le consacrer à ceci qu'à l'apprentissage du "software pur et dur" mais qui sait, un jour peut être? ;)
#28 Guest_wartotal_*
Posté 30 janvier 2011 - 09:37
j'avais pris contact avec toi via Let's make robot.
Je trouve ton idée de robot connecté grâce à un Pc vraiment intéressante.Je sais que c'est du boulot mais penserais tu a faire un tuto qui explique vraiment tout car c'est dur sur le base du post de reproduire ton robot.
Je trouve ton idée de robot connecté grâce à un Pc vraiment intéressante.Je sais que c'est du boulot mais penserais tu a faire un tuto qui explique vraiment tout car c'est dur sur le base du post de reproduire ton robot.
#30
Posté 30 janvier 2011 - 09:04
Bonjour!
@wartotal: en effet c'est du boulot les tutos (d'ailleurs j'en ai un sur le DiscoBot qui traîne :| )
et de plus je suis d'avis que tu serai plus satisfait si comme moi tu crée toi-même la plus grande part du code/de l'élec.
Commence par apprendre à te servir d'un arduino avec processing (c'est ce code qui fait 90% du travail), réfléchis à l'électronique de puissance de ton robot (pour commencer tu peux hacker une voiture téléguidée comme j'ai fait :) ) je serais ravi de t'aider si tu as un problème ponctuel, mais pour le moment un tuto n'est pas à l'ordre du jour... désolé!
@lordcuty: je ne me souviens plus trop, ça m'avais l'air bien intuitif, je crée un serveur sur un ordi avec un nom et un mdp, puis sur l'autre je le rejoins en connaissant nom et mdp. ensuite les 2 "adresses IP" sont visibles. J'ai trouvé que ça fonctionnait de manière très basique, genre msn etc. J'ai cherché du coté des alternatives libres mais c'est très loin d'être aussi "user-friendly"
@wartotal: en effet c'est du boulot les tutos (d'ailleurs j'en ai un sur le DiscoBot qui traîne :| )
et de plus je suis d'avis que tu serai plus satisfait si comme moi tu crée toi-même la plus grande part du code/de l'élec.
Commence par apprendre à te servir d'un arduino avec processing (c'est ce code qui fait 90% du travail), réfléchis à l'électronique de puissance de ton robot (pour commencer tu peux hacker une voiture téléguidée comme j'ai fait :) ) je serais ravi de t'aider si tu as un problème ponctuel, mais pour le moment un tuto n'est pas à l'ordre du jour... désolé!
@lordcuty: je ne me souviens plus trop, ça m'avais l'air bien intuitif, je crée un serveur sur un ordi avec un nom et un mdp, puis sur l'autre je le rejoins en connaissant nom et mdp. ensuite les 2 "adresses IP" sont visibles. J'ai trouvé que ça fonctionnait de manière très basique, genre msn etc. J'ai cherché du coté des alternatives libres mais c'est très loin d'être aussi "user-friendly"
#32
Posté 15 février 2011 - 07:06
Choisir et simuler un moteur pour votre robot.
Je commence à avoir un peu de mal avec les gens qui ne cherchent pas un minimum... Il y a plein de tutoriels partout sur internet et en particulier sur robotix, il faut apprendre à chercher et apprendre à s'en servir !
Je commence à avoir un peu de mal avec les gens qui ne cherchent pas un minimum... Il y a plein de tutoriels partout sur internet et en particulier sur robotix, il faut apprendre à chercher et apprendre à s'en servir !
#33 Guest_wartotal_*
Posté 15 février 2011 - 11:07
Merci pour ton lien, t'auras plus de mal avec moi c'est la derniere réponse que je poste sur ce sujet.
Il est évident qu'en faisant des calculs et en cherchant on trouve, on peut également demander un coup de pouce à ceux qui ont fait une réalisation similiaire a celle que l'on souhaite faire.
Je demandais juste conseil, sur une marque, des promos, des marques à éviter bref apparement l'entraide n'est pas de mise, dommage.
Il est évident qu'en faisant des calculs et en cherchant on trouve, on peut également demander un coup de pouce à ceux qui ont fait une réalisation similiaire a celle que l'on souhaite faire.
Je demandais juste conseil, sur une marque, des promos, des marques à éviter bref apparement l'entraide n'est pas de mise, dommage.
#34
Posté 16 février 2011 - 07:59
C'est dommage que tu le prennes comme ça, ce n'était pas vraiment le but. Je voulais juste que tu te rendes compte que tu poses une question qui n'a pas vraiment de réponse.
Le poids du robot ne suffit pas à déterminer les moteurs à utiliser.
Il y a beaucoup d'autres questions à répondre.
-Le robot aura-t-il une roue, deux roues, quatre roues motrices ?
-Quelle sera la taille de sa(ses) roue(s) ?
-Le robot devra-t-il gravir une pente ?
-A quelle vitesse doit-il avancer ?
-Quelle accélération ?
-...
Une fois que tu auras définis toutes ces choses, tu dois calculer le couple dont tu auras besoin pour tes moteurs (avec le tutoriel que j'ai donné) et ensuite tu pourras commencer à regarder ce qu'il existe comme moteurs qui développe ce couple. Après, si tu as des questions sur des marques ou des questions plus précises, on peut t'orienter. Mais il y a beaucoup de travail à faire avant de simplement répondre à ta question.
Et c'est juste ça que je voulais te faire remarquer, simplement. Sans agressivité, sans stress. ;)
Le poids du robot ne suffit pas à déterminer les moteurs à utiliser.
Il y a beaucoup d'autres questions à répondre.
-Le robot aura-t-il une roue, deux roues, quatre roues motrices ?
-Quelle sera la taille de sa(ses) roue(s) ?
-Le robot devra-t-il gravir une pente ?
-A quelle vitesse doit-il avancer ?
-Quelle accélération ?
-...
Une fois que tu auras définis toutes ces choses, tu dois calculer le couple dont tu auras besoin pour tes moteurs (avec le tutoriel que j'ai donné) et ensuite tu pourras commencer à regarder ce qu'il existe comme moteurs qui développe ce couple. Après, si tu as des questions sur des marques ou des questions plus précises, on peut t'orienter. Mais il y a beaucoup de travail à faire avant de simplement répondre à ta question.
Et c'est juste ça que je voulais te faire remarquer, simplement. Sans agressivité, sans stress. ;)
#35
Posté 17 février 2011 - 06:02
bonjour,
juste une idee pour l'application client/serveur. Compiler une ocx qui se greffe dans une page web.
le client(robot) etablira la connection toujours a la meme adresse.
dans tout les autres cas, il faut un proxy.
j'ai fait un projet similaire avec un eeepc ecrit en vb(itineraire a envoye au robot/ commande manuelle/ automatique , bridage des commandes à une seconde en cas de perte de connection avec reconnection automatique. renvoi du son + video+etat du signal wifi +batterie(du portable et/ou de la secondaire)
16F84 Uc ASM code
Le texte du lien
juste une idee pour l'application client/serveur. Compiler une ocx qui se greffe dans une page web.
le client(robot) etablira la connection toujours a la meme adresse.
dans tout les autres cas, il faut un proxy.
j'ai fait un projet similaire avec un eeepc ecrit en vb(itineraire a envoye au robot/ commande manuelle/ automatique , bridage des commandes à une seconde en cas de perte de connection avec reconnection automatique. renvoi du son + video+etat du signal wifi +batterie(du portable et/ou de la secondaire)
16F84 Uc ASM code
Le texte du lien
Répondre à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users