Connexion entre ordinateur linux et raspberry par ethernet

Bonjour,
Comment connecter un ordinateur linux (ubuntu mint) avec la raspberry par ethernet.

  • Ouvrir le menu connexion réseau de votre linux puis dans l’onglet ethernet choisir Paramètres IPv4 et activer l’option Partagé avec d’autres ordinateurs

  • Rédémarrer votre ordinateur, branchez par ethernet votre raspberry et normalement vous pouvez acceder au menu développement par l’interface web en tapant le nom de la raspberry dans la barre URL : http://nom_raspberry.local

Une solution plutôt pratique car ma box n’est pas au même étage que ma machine de travail :stuck_out_tongue_winking_eye:

3 Likes

Super !
Alors que moi j’ai dû négocier dur avec ma femme pour le cable ethernet de 10m qui traverse le salon depuis mercredi : “ne t’inquiètes pas, mardi mon collègue vient chercher notre nouveau fils adoptif, y’aura plus le câble…”

1 Like

Je rencontre un petit problème avec la méthode de connexion que j’ai décrite ci-dessus :
Quand je connecte la carte à l’ordinateur aucun souci, j’accède bien à l’interface web qui me propose snap ou ipython mais quand j’essaye de communiquer avec l’ergo-jr impossible. Le test de connexion avec snap par exemple renvoie un échec à chaque tentative.
J’ai bien fait attention à renseigner et à valider la variable HOST mais ai-je utilisé la bonne valeur ? (nom de connexion avec la carte : ciste.local)
Peut-on imaginer que la méthode de connexion avec la carte influence la communication avec l’ergo-jr ?
J’utilise network-manager dans le mode «partage de connexion» qui va réaliser l’attribution automatique des adresses IP aussi bien à la Raspberry qu’au poste de travail, donc normalement il ne devrait pas y avoir d’incidence.

Salut Christophe,
aucun problème chez moi avec ta méthode (d’ailleurs, ma femme te remercie).
Sous Xubuntu 14.04, (même pas besoin de redémarrer d’ailleurs), le mode partagé activé dans les paramètres IPv4 de l’ethernet. Mon laptop est connecté en wifi, et l’Ergo branché sur l’ethernet libre dessus.
Je suppose que tu arrives bien à pinguer ciste.local depuis un terminal, puisque tu arrives à la page d’accueil…
Tu as vérifié (en la faisant s’afficher par ex) que la variable host est bien à ciste.local ?
Tente p-e de changer son nom dans Configure Wifi and change hostname ?

Si tu arrives bien à voir la page d’accueil le problème est probablement ailleurs.
As tu bien le contenu de la variable host (dans le projet Snap!) qui a pour valeur le nom de ta créature (poppy.local si elle s’appelait “poppy”) ?
Si oui tu as probablement un problème de câbles ou de moteurs, qu’y a t il inscrit dans lorsque tu cliques sur le lien “Display logs” dans la page d’acueil après avoir cliqué sur le lien “Start Snap!” ?

P.S. Bien joué pour le partage de connexion, mais gardez en tête que ça fonctionne car c’est votre box en wifi qui fait serveur DHCP.

Comment je sais le nom de la créature, la seule info que j’ai c’est le nom de connexion à la carte http://ciste.local

Traceback (most recent call last):
  File "/home/poppy/miniconda/bin/poppy-services", line 9, in <module>
    load_entry_point('poppy-creature==1.8.0rc1', 'console_scripts', 'poppy-services')()
  File "/home/poppy/miniconda/lib/python2.7/site-packages/poppy_creature-1.8.0rc1-py2.7.egg/poppy/creatures/services_launcher.py", line 104, in main
    poppy = installed_poppy_creatures[args.creature](**poppy_args)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/poppy_creature-1.8.0rc1-py2.7.egg/poppy/creatures/abstractcreature.py", line 100, in __new__
    poppy_creature = from_json(config, sync)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/robot/config.py", line 244, in from_json
    return from_config(config, sync=sync, strict=strict, use_dummy_io=use_dummy_io)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/robot/config.py", line 60, in from_config
    dxl_io = dxl_io_from_confignode(config, c_params, attached_ids, strict)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/robot/config.py", line 162, in dxl_io_from_confignode
    found_ids = dxl_io.scan(ids)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.py", line 221, in scan
    return [id for id in ids if self.ping(id)]
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.py", line 214, in ping
    self._send_packet(pp, error_handler=None)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.py", line 527, in _send_packet
    return self.__real_send(instruction_packet, wait_for_status_packet, _force_lock)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.py", line 495, in __real_send
    status_packet = self.__real_read(instruction_packet, _force_lock=True)
  File "/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.py", line 517, in __real_read
    raise DxlCommunicationError(self, msg, instruction_packet)
pypot.dynamixel.io.abstract_io.DxlCommunicationError: could not parse received data 

Je pense que c’est plutôt le soft NetworkManager qui attribue une adresse IP aux deux machines…Car même si je coupe mon wifi la connexion continue de fonctionner

Oui le ping fonctionne à merveille et ma femme compatit avec la tienne pour ce nouveau fils !:heart_eyes:
Mais pour l’instant il est en pleine crise d’ado, quand je pense que j’ai échappé à çà avec les miens !!!

Aucun effet

Voila l’erreur que je récupère avec ipython

from poppy.creatures import PoppyErgoJr​ergo = PoppyErgoJr()---------------------------------------------------------------------------
DxlCommunicationError                     Traceback (most recent call last)
<ipython-input-3-531aafc6b8f0> in <module>()
      1 from poppy.creatures import PoppyErgoJr
      2 
----> 3 ergo = PoppyErgoJr()

/home/poppy/miniconda/lib/python2.7/site-packages/poppy_creature-1.8.0rc1-py2.7.egg/poppy/creatures/abstractcreature.pyc in __new__(cls, base_path, config, simulator, scene, host, port, id, use_snap, snap_host, snap_port, snap_quiet, use_http, http_host, http_port, http_quiet, use_remote, remote_host, remote_port, sync)
     98         else:
     99             try:
--> 100                 poppy_creature = from_json(config, sync)
    101             except IndexError as e:
    102                 raise IOError('Connection to the robot failed! {}'.format(e.message))

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/robot/config.pyc in from_json(json_file, sync, strict, use_dummy_io)
    242         config = json.load(f)
    243 
--> 244     return from_config(config, sync=sync, strict=strict, use_dummy_io=use_dummy_io)
    245 
    246 

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/robot/config.pyc in from_config(config, strict, sync, use_dummy_io)
     58         attached_ids = [m.id for m in attached_motors]
     59         if not use_dummy_io:
---> 60             dxl_io = dxl_io_from_confignode(config, c_params, attached_ids, strict)
     61 
     62             check_motor_limits(config, dxl_io, motor_names)

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/robot/config.pyc in dxl_io_from_confignode(config, c_params, ids, strict)
    160                       error_handler_cls=handler)
    161 
--> 162     found_ids = dxl_io.scan(ids)
    163     if ids != found_ids:
    164         missing_ids = tuple(set(ids) - set(found_ids))

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.pyc in scan(self, ids)
    219     def scan(self, ids=range(254)):
    220         """ Pings all ids within the specified list, by default it finds all the motors connected to the bus. """
--> 221         return [id for id in ids if self.ping(id)]
    222 
    223     # MARK: - Specific Getter / Setter

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.pyc in ping(self, id)
    212 
    213         try:
--> 214             self._send_packet(pp, error_handler=None)
    215             return True
    216         except DxlTimeoutError:

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.pyc in _send_packet(self, instruction_packet, wait_for_status_packet, error_handler, _force_lock)
    525 
    526         if not error_handler:
--> 527             return self.__real_send(instruction_packet, wait_for_status_packet, _force_lock)
    528 
    529         try:

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.pyc in __real_send(self, instruction_packet, wait_for_status_packet, _force_lock)
    493                 return
    494 
--> 495             status_packet = self.__real_read(instruction_packet, _force_lock=True)
    496 
    497             logger.debug('Receiving %s', status_packet,

/home/poppy/miniconda/lib/python2.7/site-packages/pypot-2.11.0rc1-py2.7.egg/pypot/dynamixel/io/abstract_io.pyc in __real_read(self, instruction_packet, _force_lock)
    515             except ValueError:
    516                 msg = 'could not parse received data {}'.format(bytearray(data))
--> 517                 raise DxlCommunicationError(self, msg, instruction_packet)
    518 
    519             return status_packet

DxlCommunicationError: could not parse received data ���� after sending DxlPingPacket(id=1)

Le nom de ta créature est dans ce cas est ciste ; la variable host du projet Snap! doit être ciste.local

Une traceback se lit de bas en haut, cette erreur signifie que la carte reçoit des données malformées. Cela peut-être un cable partiellement coupé ou déconnecté, un moteur défaillant ou la carte pixel soudé à la main qui à mal supporté le transport…

Y a-t-il un moyen de localiser l’erreur ?

pas le temps d’écrire bcp, mais Christophe j’ai maintenant le même problème…
j’ai voulu tester sans la connexion wifi pour vérifier ce que disait Théo, depuis c’est mort.
Comme toi.
Là je teste des histoires de baux DHCP en direct avec ma box, je sens que ça vient de là, je sais pas pourquoi.

ça remarche !
Alors, dans l’ordre :

  1. j’ai remis l’ethernet de mon portable en position classique, DHCP dynamique.
  2. J’ai rebranché le robot sur le routeur de ma box.
  3. j’ai rebooté ma box (utile ??)
    ça marchait toujours pas
  4. j’ai changé le nom du robot, depuis l’interface Configure Wifi. Reboot du Raspberry.
    toujours pas de connexion, mais un bruit de moteur inhabituel à la remise sous tension du robot.
  5. je suis allé rechanger le nom, là au lieu de l’ancien nom proposé y’avait un “sudo je sais plus quoi”. Je suis revenu au nom de départ de mon robot. Reboot du Raspberry.

ça marche maintenant. Confirmé avec reboot.
En fait, je crois que je vais garder le cable qui traverse le salon :slight_smile: (reste à l’expliquer à ma femme.)
bon courage,

Gilles

Pour moi ça a plutôt l’air d’un problème de hard. J’ai testé le robot avant de partir mercredi pas de problème. Le seul truc que j’ai pas testé c’est la soudure de Théo … Ça sent le made in china

c’est quand même bizarre que j’aie pu reproduire le même problème que toi…
Est-ce qu’à un moment tu as été connecté en direct au Raspberry et pas à ta box ?
C’est lorsque j’ai fait ça que j’ai perdu durablement la connexion, quoique je fasse.
[Mode n’importe quoi]
C’est comme si mon pc avait dès lors considéré la Raspberry comme étant le point d’accès à internet, et que celle-ci s’était alors autoconfigurée d’une certaine manière.
Et c’est en changeant/rechangeant le nom de la carte qu’elle s’est remise à la normale.
[/Mode n’importe quoi]

pour info, j’ai aussi une foultitude d’erreurs quand je passe par ipython.
Mais c’est ok avec Snap!, tout marche bien.

Bonjour,

je suis en train de faire des tests sur Ergo Jr en utilisant Snap! et j’ai un problème sensiblement identique. Voici le problème :

J’utilise Ergo Jr via la Raspberry Pi, celui-ci est connecté au réseau par un câble ethernet. Je me connecte donc sur mon pc (linux) en ssh, et j’ouvre la page web poppy.local/ pour travailler sur le robot. Tout fonctionne, dont Snap!, et le robot réagit. Les autres fonctionnalités fonctionnent également (monitoring…).

Je change ensuite le nom du robot (donc au lieu de passer par poppy.local, avoir un nom personnalisé du type nom.local). La connexion en ssh ainsi que la page web nom.local/ fonctionnent très bien.
Cependant, le robot, et plus précisément l’host n’est plus reconnu correctement. Le monitoring ne fonctionne donc plus, et Snap! ne se connecte plus au robot malgré le changement du nom de l’host pour la connexion. De même, changer le nom de l’host dans “configure your robot” ne change rien.

Voici les logs :

Attempt 1 to start the robot...
[Errno -3] Temporary failure in name resolution
Attempt 2 to start the robot...
port already used /dev/ttyAMA0
Attempt 3 to start the robot...
port already used /dev/ttyAMA0
Attempt 4 to start the robot...
port already used /dev/ttyAMA0
Attempt 5 to start the robot...
port already used /dev/ttyAMA0
Could not start up the robot...

Je voulais donc savoir si vous aviez une solution pour changer le nom du robot, sachant que le robot est toujours fonctionnel lorsque je rebascule sur le nom poppy.local.

[EDIT : Problème résolu]
Il faut modifier 2 choses pour que le changement de nom (hostname) soit pris en compte :

  • /etc/hostname : remplacer le hostname actuel par celui voulu (ou en passant par le raspi-config)
  • /etc/hosts : remplacer l’ancien nom (initialement poppy) par votre nouveau nom

Après un reboot, votre nouveau hostname devrait fonctionner !

Merci pour ce partage, ça apporte une grande aide à tous ceux qui ont le même problème. Merci encore.