Déploiement de ROS2
Pour le déploiement d'environnements pédagogique et concours
On voit plusieurs approches :
- déploiement de machine native Ubuntu, par clonage de disque par exemple
- déploiement de VM VirtualBox
- déploiement de Docker container
Veut-on enseigner la robotique ou l'ingénierie logiciel sous Linux ? Selon moi, il faut différencier deux types de public :
- On veut enseigner la robotique Open Source, par exemple à des électroniciens
- on n'aborde pas l'installation ROS, la création de package dans un workspace et sa compilation
- on fournit une machine dont l'enseignant maitrise l'état
- tout est fait dans un IDE type VSCode.
- les apprenants peuvent se concentrer sur la génération de codes et d'algorithmes pour résoudre un problème robotique
- on reste en simulation ou on déploie sur un robot en fin de parcours
- on bascule d'une conteneur à un autre depuis VSCode pour éviter les erreurs de config
- On veut enseigner l'ingénierie logiciel appliquée à la robotique avec ROS
- initiation à Ubuntu et à la ligne de commande
- on déroule tout le tutoriel ROS en encourageant à faire un dual-boot (ou éventuellement un WSL) sur une machine personnelle
- on insiste sur les réflexes de compilation dans le terminal
- on laisse naviguer entre plusieurs workspaces sans Docker
Besoin pour la robotique industrielle
Par ordre croissant de complexité :
- Visualisation et planification trajectoire avec MoveIt2 via plugin motion_planning dans RViz2 https://moveit.picknik.ai/main/doc/tutorials/quickstart_in_rviz/quickstart_in_rviz_tutorial.html
- cellule SO-ARM100 ou Panda (moveit2_tutorial officiel) ou cellule UR5e
- MoveIt2 Python API https://moveit.picknik.ai/main/doc/examples/motion_planning_python_api/motion_planning_python_api_tutorial.html
- Connexion à docker container URSim https://innovation.iha.unistra.fr/books/robotique-open-source/page/universal-robot-ros2-driver#bkmrk-installation-du-simu
- Contrôle vrai SO-ARM100
- Contrôle vrai UR5e
- Contrôle local de trajectoire avec MoveIt Servo : téléopération via manette ou asservissement visuel (TOF sensor) https://moveit.picknik.ai/main/doc/how_to_guides/controller_teleoperation/controller_teleoperation.html
- Gazebo et simulation traitement de l'image 2D/3D
- Pour aller plus loin : Cartesian Path Planning, Hybrid Planning, MoveIt Task Constructor (https://moveit.picknik.ai/main/doc/tutorials/pick_and_place_with_moveit_task_constructor/pick_and_place_with_moveit_task_constructor.html , UR10e_welding_demo)
Besoin pour la robotique mobile
Par ordre croissant de complexité :
Pour le déploiement de robots dans l'industrie
Dev Container
Pour un développement local
- Installer Visual Studio Code
- Installer Docker avec le support de l'accélération graphique
- Installer l'extension
Dev Container
Pour un développement sur un serveur/PC distant
- Installer le pack d'extensions
Remote Development
Lancer le conteneur de développement :
- Optionnel : se connecter à la machine de développement distante depuis Visual Studio Code
- Ouvrir la Command Palette
Ctrl+Shift+P
- Lancer
Remote-SSH: Connect to host...
- Configurer la connexion ssh par mot-de-passe ou clé si ce n'a pas encore été fait
- Ouvrir la Command Palette
- Cloner le dépôt https://github.com/rplayground/sandbox
- Lancer
Dev Container: Reopen in Container
https://articulatedrobotics.xyz/tutorials/docker/dev-containers/
Docker Containers + VSCode
Quelques conseils de Ragesh (https://robotair.io/) que j'ai rencontré au Fraunhofer :
https://github.com/athackst/workstation_setup
https://docs.ros.org/en/iron/How-To-Guides/Setup-ROS-2-with-VSCode-and-Docker-Container.html
https://www.allisonthackston.com/articles/vscode-docker-ros2.html
MoveIt2, docker https://fr.slideshare.net/secret/vdPbBCNB3LamRy https://moveit.picknik.ai/main/doc/how_to_guides/how_to_setup_docker_containers_in_ubuntu.html
Ansible
https://www.linkedin.com/pulse/deploying-ros2-packages-using-ansible-ragesh-ramachandran/
https://blog.robotair.io/best-way-to-ship-your-ros-app-a53927186c35
https://github.com/swarmBots-ipa/ansible_automation
https://github.com/ipa-rar/ros2-playbooks
https://github.com/Laura7089/ros2-ansible
https://github.com/jeremyfix/ros2_ansible_turtlebot
https://github.com/rarrais/ansible-role-ros2
Multipass
https://artivis.github.io/post/2023/multipass_ros_blueprint/
YOCTO
JupyterLab
https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421
Scripts bash et Cluster SSH
https://github.com/runtimerobotics/ros2_oneline_install
Scripts de Loïc Cuvillon : https://seafile.unistra.fr/d/50662484c5f641709cd7/
Scripts Gauthier Hentz : https://innovation.iha.unistra.fr/books/robotique-open-source/page/installation-pc-ros2#bkmrk-installation-de-jazz
Discussions
https://discourse.ros.org/t/easy-way-to-distribute-an-instance-of-ubuntu-w-ros-to-students/31824/4
Singularity, Robolaunch, ROSblox https://discourse.ros.org/t/what-environments-do-you-use-for-training-and-courses/26473/6
Python https://discourse.ros.org/t/teaching-with-ros-or-zeroros-at-university/32124