Bonjour,
je me permets de vous posez une question concernant mon installation ros sur docker. Je me suis fait un docker basé sur vos conseils dans lequel j'ai ros qui tourne proprement (j'ai pu publier des topics manuellement avec rostopic et tout fonctionne bien). Je souhaite maintenant développer une page web qui interagit avec ros (qui tourne dans le docker) via rosbridge. Je ne souhaite pas mettre ma page web dans le docker, car je ne veux pas redéployer à chaque modification. Donc j'aurais souhaité m'y connecter avec rosbridge et pour cela je dois spécifier l'adresse et le port de ROS_MASTER_URI et je ne trouve pas les bons paramètres... (Je lance ma page web à partir d'un server tomcat).
Voici quelques élément pour illustrer mon installation:
voici une list des topics en place:
/foiler/motion_controller/engine_rpm_controller/command
/foiler/motion_controller/foil_cantangle_controller/command
/foiler/motion_controller/foil_pullout_controller/command
/foiler/motion_controller/joint_states
/foiler/motion_controller/rudder_angle_controller/command
/foiler/motion_controller/twist
/rosout
/rosout_agg
J'ai lancé la commande du server rosbridge:
Voici le script js pour me connecter à ros:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 > roslaunch rosbridge_server rosbridge_websocket.launch PARAMETERS * /rosapi/params_glob:[*] * /rosapi/services_glob:[*] * /rosapi/topics_glob:[*] * /rosbridge_websocket/address: * /rosbridge_websocket/authenticate: False * /rosbridge_websocket/bson_only_mode: False * /rosbridge_websocket/delay_between_messages: 0 * /rosbridge_websocket/fragment_timeout: 600 * /rosbridge_websocket/max_message_size: None * /rosbridge_websocket/params_glob:[*] * /rosbridge_websocket/port: 9090 * /rosbridge_websocket/retry_startup_delay: 5 * /rosbridge_websocket/services_glob:[*] * /rosbridge_websocket/topics_glob:[*] * /rosbridge_websocket/unregister_timeout: 10 * /rosbridge_websocket/use_compression: False * /rosdistro: melodic * /rosversion: 1.14.3 NODES / rosapi (rosapi/rosapi_node) rosbridge_websocket (rosbridge_server/rosbridge_websocket) ROS_MASTER_URI=http://localhost:11311 process[rosbridge_websocket-1]: started with pid [2169] registered capabilities (classes): - rosbridge_library.capabilities.call_service.CallService - rosbridge_library.capabilities.advertise.Advertise - rosbridge_library.capabilities.publish.Publish - rosbridge_library.capabilities.subscribe.Subscribe - <class 'rosbridge_library.capabilities.defragmentation.Defragment'> - rosbridge_library.capabilities.advertise_service.AdvertiseService - rosbridge_library.capabilities.service_response.ServiceResponse - rosbridge_library.capabilities.unadvertise_service.UnadvertiseService process[rosapi-2]: started with pid [2170] [INFO] [1548667268.143774]: Rosbridge WebSocket server started on port 9090
Faut-t-il lancer le server rosbridge sur la machine locale?
Code : Sélectionner tout - Visualiser dans une fenêtre à part var ros = new ROSLIB.Ros({url : 'ws://172.17.0.2:11311'});
J'ai essayer de lancer le container en utilisant l'optionpour que l'on soit sur le même réseau et spécifier localhost, mais cela ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part --net host
J'espère que vous avez un peu de temps pour considérer ma demande.
Salutations
Yvus
Nota Bene: Concernant votre tuto, je pense qu'il manque une ligne dans le Dockerfile qui lance le ros_entrypoint.sh à chaque construction
Code : Sélectionner tout - Visualiser dans une fenêtre à part ENTRYPOINT ["/ros_entrypoint.sh"]
Partager