Note: For each console remember to source your environment:
source ros2_setup.sh
You should have completed the installation tutorial of the Robot, Lower Layer (L1/L2) (Robot Body Coupler), and installed all the modules from this tutorial in the ARCOS-Lab Humanoid robot body section. https://wiki.arcoslab.org/tutorials/rbc
-
Simulated:
Install the ROS2 joystick modules.
-- Arms
-- Hands
-- Neck
-- Head
-- Platform/torso
-
Real robot:
-- Hands - real
-- Platform/torso
-
Install the ROS2 joystick module.
sudo apt-get install ros-humble-joy-linux joystick
To test it, you can run this ROS2 node in another terminal:
jstest /dev/input/js0
- Install The Humanoid Robot Joystick Control:
cd ~/wsr2/src
git clone git@gitlab.com:arcoslab/bach/2023-i/jose-gonzalez/humanoid-robot-play-station-control.git
First, you need to run the joy_linux_node of the Linux joystick in ROS2 to obtain the button and axis data. You can do this by using the following command in a terminal:
source ros2_setup.sh
ros2 run joy_linux joy_linux_node --ros-args -p deadzone:=0.2
To observe which buttons you are pressing, you can echo the topic of the joy node by running the following command in another terminal:
source ros2_setup.sh
ros2 topic echo /joy
A mapping of the buttons on the controller used, in this case, a PS4 joystick, was done. The following image shows the mapping to the button and axes numbers:

It is important to note that this mapping was done using the jstest program for the used controller. It is recommended to test the buttons using the command:
jstest /dev/input/js0
You should see output similar to the following:
Axes: 0: 0 1: 0 2:-32767 3: 0 4: 0 5:-32767 6: 0 7: 0
Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off
The above shows the reading of the different buttons on the joystick, and you can see them in the terminal.
- In a new console, Run RVIZ2
source ros2_setup.sh
ros2 run rviz2 rviz2
- In another console run the robot body simulator:
source ros2_setup.sh
ros2 launch arcos-lab-humanoid-startup-sim arcos-lab-humanoid-startup-sim.launch.py
- In another console run the robot platform simulator:
source ros2_setup.sh
ros2 launch arcos_lab_mobile_platform arcos_lab_mobile_platform_sim.launch.py
- In another console run the RBC:
source ros2_setup.sh
ros2 launch rbc rbc.launch.py
¶ Using Robot Body Coupler Examples (TODO)
Remember to put the mobile platform on "Mode 0" (look on previous steps)
ros2 service call /arcoslab_platform_torso/control impedance_control_msgs/srv/Modes "enable: [True, True, True, True, True]
mode: 0"
There are # examples: rbc_joint_init and rbc_keyboard_ctrl rbc_joint_Arms and rbc_joystick_ctrl
rbc_joint_init: takes one robot arm away from kinematic singularities. Or: starts the robot, using joint position control, on a know well-behaved starting pose. This is necessary for running the second program (or doing cartesian control)
rbc_keyboard_ctrl: the user can use various keyboard keys to control a robot end-effect, using cartesian position control, to a desired position. It is necessary to run rbc_joint_init at least once before starting to use this program.
rbc_joystick_ctrl: the user can use the joystick to control a robot end-effect, using cartesian position control, to a desired position. It is necessary to run rbc_joint_init_two_arms at least once before starting to use this program. The user can desired which modules
rbc_: The "rbc_joint_platform" program is used to control a robot's joint platform. Its main purpose is to move a robot arm away from kinematic singularities or start the robot from a well-defined and controlled initial position using joint position control. This is necessary for running other programs, such as Cartesian position control.
- Run rbc_joint_init at least once:
source ros2_setup.sh
cd ~/wsr2/src/robot-body-coupler-client-examples/rbc_joint_init/rbc_joint_init/
./rbc_joint_init.py
The robot should "arc" the arm from up looking down. Wait until the program finishes.
The program should print "Goal reached!!! yei!"
source ros2_setup.sh
cd ~/wsr2/src/robot-body-coupler-client-examples/rbc_keyboard_ctrl/rbc_keyboard_ctrl/
./rbc_keyboard_ctrl.py
Wait until the program stops printing (initialization)
-
Press "p" once to change to "last_cmd" mode. This mode takes the previous commanded position (from the program) and adds a cartesian position delta according to your keyboard inputs
-
Adjust the deltas with the keys "q" "w" (+ and - translation), "e" "r" (+ and - rotation). Select arount 0.05m of translation diff and 10 degrees of rotation diff.
-
Using keys "a s d" (+ x,y,z translation) "z x c" (- x,y,z translation), and "h j k" (+ x,y,z rotation) "n m ," (- x,y,z rotation) to control the robot end-effect (defaults to the right arm wrist).
-
Run rbc_joystick_ctrl:
first run rbc_joint_init_two_arms at least once before starting to use this program. In another terminal run this comands:
source ros2_setup.sh
cd ~/wsr2/src/humanoid-robot-play-station-control/rbc_joint_arms/rbc_joint_arms/
./rbc_joint_init_two_arms.py
Run the rbc_joystick_ctrl:
source ros2_setup.sh
cd ~/wsr2/src/humanoid-robot-play-station-control/rbc_joystick_ctrl/rbc_joystick_ctrl/
./rbc_joystick_ctrl.py
Wait until the program stops printing (initialization)
- Press "p" once to change to "last_cmd" mode. This mode takes the previous commanded position (from the program) and adds a cartesian position delta according to your keyboard inputs
- Adjust the deltas with the keys "q" "w" (+ and - translation), "e" "r" (+ and - rotation). Select arount 0.05m of translation diff and 10 degrees of rotation diff.
- Using the mentioned instructions to control the robot and change the mode
You can only use the platform with the program rbc_joint_Platform:
source ros2_setup.sh
cd ~/wsr2/src/humanoid-robot-play-station-control/rbc_joystick_ctrl/rbc_joystick_ctrl/
./rbc_joint_init_Platform.py
The L1 button (button #04) is set to control the currently selected module. It rotates through the modules, assigning a weight of 1 to the respective reacher controller and a weight of 0 to the rest. The terminal show you what module is selected, and you could control. Here are the movement instructions for each of the desired Humanoid Robot Modules:
- R1 Button (button 05): Activate/deactivate control of the mobile platform.
- Right joystick: Linear movement along the x-axis (axis 4) and the y-axis (axis 3) with a movement scaleof:
x: 0.4
y: 0.4
- Left joystick: to rotate in the "z axis", angular movement (axis 0) and movement (axis 1) to Up and Down the Torso with a movement scale of:
yaw: 0.5
- Buttonn R2 (Button 7): Activate/desactivate the control left, right of both Kuka arms LWR4+.
- Button L2 (Button 6): Change the linear or angular mode of the arms.
-- Right joystick: Linear movement along the x-axis (axis 4) and the y-axis (axis 3) with a movement scaleof:
x: 0.01 10mm
y: 0.01 10mm
- Left joystick: to rotate o move in the "z axis", angular movement (axis 1), and the same for the linear movement
¶ Wessling_hand_driver(Vector Field Reacher)
- Analog Derecho: axis de movimiento Mano derecha Wessling abrir y cerrar (axis 4) y (axis 3) para torser los dedos
- Analog Izquierdo: axis de movimiento Mano izquierda Wessling abrir y cerrar (axis 1) y (axis 0) para torser los dedos.
Fecha: 14 de marzo de 2023
Tiempo requerido estimado: 9 horas
- Presentar al profesor Jaime y al grupo los intereses de cada integrante.
- Conocer los temas y objetivos del proyecto.
- Definir los siguientes pasos a seguir.
- Presentación de los temas de trabajo y sus intereses. (Tiempo requerido: 1 hora)
- Discusión sobre los temas y objetivos del proyecto. (Tiempo requerido: 1 hora)
- Definición del tema a realizar. (Tiempo requerido: 4 horas)
- Continuar con el proyecto de acuerdo a los temas y objetivos definidos en la primera clase.
- Establecer una comunicación efectiva con el profesor a cargo de los temas interesados.
- Realizar una reunión con el profesor para presentar candidatura del proyecto.
Fecha: 21 de marzo de 2023
Tiempo requerido estimado: 9 horas
- Contactar al profesor Federico Ruiz del Arcos-Lab para expresar mi interés en colaborar en alguno de los proyectos disponibles.
- Obtener información acerca de los requisitos específicos para los proyectos que me interesan.
- Se envió un correo electrónico al profesor Ing. Federico Ruiz del Arcos-Lab expresando mi interés en colaborar en el proyecto relacionado con el robot humanoide y solicitando información acerca de los requisitos específicos para los proyectos disponibles. (Tiempo requerido: 2 horas)
- En la respuesta se coordinó para realizar una reunión virtual.
- Poca disponibilidad de tiempo para la coordinación y comunicación.
- Esperar la respuesta del profesor Federico Ruiz del Arcos-Lab para agendar la reunión.
- Si es posible, programar una reunión con el profesor para discutir la posibilidad de colaborar en el proyecto.
- Si no es posible colaborar en el proyecto del Arcos Lab, explorar otras opciones para trabajar en un proyecto relacionado con el robot humanoide.
Fecha: 31 de marzo de 2023
Tiempo requerido estimado: 9 horas
- Reunirse con el profesor Federico Ruíz para conocer los proyectos disponibles en el Arcos Lab.
- Asignación del proyecto vinculado con el Arcos-lab para control integral del robot humanoide.
- Obtener ayuda del profesor para solucionar problemas relacionados al proyecto.
-
En la reunión con el profesor Federico se conocieron los proyectos disponibles en el Arcos-Lab relacionados con el robot humanoide. (Tiempo requerido
-
Se asignó el proyecto "Módulo de ROS2 para control integral del robot humanoide con un JoyStick tipo PlayStation". (Tiempo requerido: 2 horas)
-
Se asignaron las primeras tareas, como la instalación de Linux de forma nativa en alguna laptop disponible, además de estudiar algunos videos. (Tiempo requerido: 2 horas)
-
El viernes al finalizar la semana se asistió al laboratorio y se trabajó en la instalación nativa de Xubuntu en la laptop personal. (Tiempo requerido: 2 horas)
-
El profesor Federico Ruiz me ayudó a solucionar los problemas de conexión a internet y se instalaron nuevos drivers y kernel en la laptop. (Tiempo requerido: 2 horas)
-
Se hizo un recorrido por el laboratorio y se conocieron los equipos y herramientas disponibles. (Tiempo requerido: 2 horas)
- Problemas de instalación de Xubuntu en la laptop personal con el driver de conexión inalámbrica.
- Problemas de conexión a internet después de la instalación.
- Continuar con la instalación de los programas necesarios para el proyecto asignado.
- Comenzar a trabajar en el proyecto "Módulo de ROS2 para control integral del robot humanoide con un JoyStick tipo PlayStation".
- Mantener una comunicación efectiva con el profesor Federico Ruiz para resolver dudas y dificultades en el proyecto.
- Aprovechar las herramientas y equipos disponibles en el Arcos-Lab para mejorar el desarrollo del proyecto.
Fecha: 14 de abril de 2023
Tiempo requerido estimado: 9 horas
- Continuar con la instalación y configuración del sistema operativo ROS2 en la laptop personal.
- Comprender el funcionamiento del módulo de ROS2 para el control integral del robot humanoide.
- Avanzar en la implementación del control del robot humanoide mediante el uso del JoyStick tipo PlayStation.
- Se continuó con la instalación y configuración para el ingreso al Arcos-Lab en la laptop personal, lo cual incluyó la instalación de algunos paquetes adicionales necesarios para el proyecto. (Tiempo requerido: 5 horas)
- Se siguieron las instrucciones para inscribirse en Gitlab para ARCOS-Lab, se llenó el formulario de ingreso físico al laboratorio. (Tiempo requerido: 3 horas)
- Se instaló la aplicación Element en el celular y en la PC. Se siguieron las instrucciones para la instalación y configuración de Element. (Tiempo requerido: 0.3 horas)
- Se estudiaron un poco las siguientes herramientas para participar en los proyectos del laboratorio recomendadas por Federico Ruíz: Ubuntu Focal (20.04 LTS), Kicad (versión 6.0 o superior), Freecad (versión 0.20 o superior), Git, Python, C (para microcontroladores). (Tiempo requerido: 2 horas)
- Se siguieron las guías y tutoriales en la wiki del Arcos-Lab para aprender a utilizar cada herramienta.
Fecha: 17 de abril de 2023
Tiempo requerido estimado: 9 horas
- Estudiar el funcionamiento del módulo de ROS2 para el control integral del robot humanoide.
- Comprender la estructura y funcionalidades del módulo de ROS2.
- Aprender sobre el uso de Git Skeleton para diferentes herramientas en el laboratorio.
- Coordinar las reuniones semanales con el profesor Federico Ruíz.
- Se estudió el funcionamiento del módulo de ROS2 para el control integral del robot humanoide y se logró comprender su estructura y funcionalidades. Se profundizó en los temas de suscripción y publicación de tópicos, mensajes y nodos. (Tiempo requerido: 5 horas)
- Se revisaron los videos tutoriales del Arcos-Lab sobre Git Skeleton para diferentes herramientas en el laboratorio. Tiempo requerido: 3 horas
- Se coordinaron las reuniones semanales con el profesor Federico Ruíz para los martes a las 5 pm. (Tiempo requerido: 0.2 horas)
- Se espera la reunión de este martes para realizar el fork al repositorio indicado, ya que aún no se sabe cuál debe ser según todas las herramientas vistas en el Arcos-Lab. (Tiempo requerido: 0.2 horas)
- No se ha podido identificar cuál es el repositorio que se debe forkear según las herramientas en el Arcos-Lab.
Fecha: 25 de abril de 2023
Tiempo requerido estimado: 9 horas
- Estudiar el funcionamiento de ROS2 en los tutoriales de ROS Humble para el control integral del robot humanoide.
- Comprender la estructura y funcionalidades del módulo de ROS2.
- Aprender sobre el uso de Git Skeleton para diferentes herramientas en el laboratorio.
- Coordinar las reuniones semanales con el profesor Federico Ruíz. (Tiempo requerido: 0.2 horas)
- Se estudió el funcionamiento del módulo de ROS2 para el control integral del robot humanoide y se logró comprender su estructura y funcionalidades. Se profundizó en los temas de suscripción y publicación de tópicos, mensajes y nodos. (Tiempo requerido: 6 horas)
- Se revisaron los videos tutoriales del Arcos-Lab sobre ROS Humble para diferentes herramientas en el laboratorio. (Tiempo requerido: 6 horas)
- Se coordinaron las reuniones semanales con el profesor Federico Ruíz para los martes a las 5 pm. (Tiempo requerido: 1 hora)
- Se observó los videos del tutorial para realizar la documentación de todo el trabajo a través de Git Skeleton. (Tiempo requerido: 5 horas)
- No se ha podido identificar cuál es el repositorio que se debe forkear según las herramientas en el Arcos-Lab.
Fecha: 2 de mayo de 2023
Tiempo requerido estimado: 9 horas
- Contactar a Daymer Vargas (Asistente del Lab) para solicitar asesoría sobre el uso de la cabeza/cuello desde ROS2.
- Finalizar los tutoriales de ROS2 y adquirir un mayor conocimiento en la herramienta.
- Terminar la instalación del simulador y realizar pruebas en él.
- Se contactó a Daymer por correo electrónico solicitando una reunión para aclarar dudas sobre el uso de la cabeza/cuello desde ROS2 de forma presencial en el ARCOS-LAB. Además, se encendió el robot real en el laboratorio para las primeras pruebas y aprendizaje. (Tiempo requerido: 3 horas)
- Se finalizaron los tutoriales de ROS2 y se adquirió un mayor conocimiento en la herramienta, aprendiendo a manejar los nodos y los tópicos en la comunicación entre ellos. (Tiempo requerido: 6 horas)
- Se terminó la instalación del simulador y se realizaron pruebas en él. (Tiempo requerido: 6 horas)
- Se encontró dificultad en la comprensión del uso de la cabeza/cuello desde ROS2, por lo que se solicitó la asesoría de Daymer.
- Algunas partes de los tutoriales de ROS2 resultaron un poco confusas, por lo que fue necesario repasar algunos conceptos varias veces.
- Se presentaron problemas en la instalación del simulador debido a la falta de algunas instalaciones en la laptop disponible, por lo que fue necesario hacer una optimización del sistema operativo para permitir el correcto funcionamiento del simulador.
Fecha: 9 de mayo de 2023
Tiempo requerido estimado: 9 horas
- Realizar el fork al repositorio del proyecto en Arcos-Lab.
- Coordinar reunión semanal con el profesor Federico Ruiz.
- Continuar el estudio de los videos de tutoriales del Arcos-Lab.
- Arreglar el funcionamiento del simulador del robot Rviz.
- Se realizó el fork al repositorio del proyecto en Arcos-Lab, lo que permitirá tener una copia personalizada del repositorio para realizar modificaciones y contribuir al proyecto. (Tiempo requerido: 1 hora)
- Se coordinó la reunión semanal con el profesor Federico Ruiz para el martes 23 de mayo a las 5 p. m. Esta reunión será una oportunidad para discutir el progreso del proyecto, plantear dudas y recibir orientación. (Tiempo requerido: 1 hora)
- Se continuó el estudio de los videos de tutoriales del Arcos-Lab, centrándose en los tutoriales relacionados con el uso de las herramientas de desarrollo específicas del laboratorio. Estos videos proporcionaron información adicional sobre el entorno de desarrollo y las mejores prácticas para el proyecto. (Tiempo requerido: 6 horas)
- Se identificó un problema con el funcionamiento del simulador del robot Rviz y se trabajó en su resolución. Se investigaron las posibles causas del problema y se realizaron ajustes para asegurar que el simulador funcione correctamente. (Tiempo requerido: 3 horas)
- Durante la sesión de trabajo, se encontró dificultad al arreglar el funcionamiento del simulador del robot Rviz. Sin embargo, se dedicó tiempo adicional para investigar y realizar los ajustes necesarios, lo que permitió resolver el problema.
En la próxima sesión de trabajo, se espera seguir avanzando en el proyecto, realizar pruebas adicionales en el simulador y continuar con el estudio de los tutoriales del Arcos-Lab.
Fecha: 16 de mayo de 2023
Tiempo requerido estimado: 9 horas
- Estudiar tutoriales básicos e intermedios para Python, incluyendo ROS Action.
- Controlar la plataforma con un joystick.
- Conectar el joystick a Linux y ejecutar jstest.
- Estudiar video tutoriales de rbc_joint_init y rbc_keyboard_ctrl.
- Se realizaron tutoriales básicos e intermedios para Python, incluyendo ROS Action. Se estudiaron los conceptos y ejemplos proporcionados en los tutoriales para mejorar la comprensión de Python y su uso en ROS.
- Se logró conectar el joystick a Linux y se ejecutó jstest para verificar su funcionalidad y recibir datos de entrada del joystick.
- Se revisaron los video tutoriales de rbc_joint_init y rbc_keyboard_ctrl para comprender cómo se controla la plataforma utilizando joystick y teclado respectivamente. Se tomaron notas sobre los pasos y los comandos utilizados en los tutoriales.
- Durante la sesión de trabajo, no se encontraron dificultades significativas. Sin embargo, se requirió tiempo adicional para comprender completamente el uso de ROS Action y la integración del joystick en el sistema.
- En la próxima sesión de trabajo, se continuará con la implementación práctica de los conocimientos adquiridos en los tutoriales y se realizarán pruebas para controlar la plataforma utilizando el joystick y el teclado.
Fecha: 23 de mayo de 2023
Tiempo requerido estimado: 9 horas
- Controlar la plataforma utilizando el joystick del PS4 siguiendo el tutorial "Moving Platform with Joystick" impartido por el profesor Federico Ruiz en la reunión semanal.
- Realizar un mapeo de los botones del joystick de PS4 y crear un archivo de configuración correspondiente.
- Diseñar una propuesta para el control de operación del robot utilizando los botones del joystick en diferentes partes del robot.
-
Se siguió el tutorial "Moving Platform with Joystick" impartido por el profesor Federico Ruiz durante la reunión semanal. Se logró controlar la plataforma utilizando el joystick del PS4 y se comprendió el proceso de integración del joystick en el sistema. (Tiempo requerido: 6 horas)
-
Se realizó un mapeo de los botones del joystick de PS4 y se creó un archivo de configuración correspondiente. Se asignaron funciones y acciones específicas a cada botón del joystick para su uso en el control de la plataforma y otras partes del robot. (Tiempo requerido: 3 horas)
-
Se diseñó una propuesta para el control de operación del robot utilizando los botones del joystick. Se identificaron las diferentes partes del robot y se asignaron funciones de control a los botones correspondientes para cada parte. Se tomó en cuenta la ergonomía y la facilidad de uso para mejorar la eficiencia y la experiencia de control. (Tiempo requerido: 2 horas)
- Durante la sesión de trabajo, se encontró una dificultad al mapear algunos botones del joystick de PS4 debido a la falta de documentación específica, pues no se encontraba un paquete específico del joystick en Linux. Se realizaron pruebas adicionales y se consultó la documentación del joystick para superar este obstáculo, y en la sesión con el profesor Federico, se logró solucionar.
En la próxima sesión de trabajo, se realizarán pruebas adicionales y se perfeccionará el control de la plataforma con el joystick de PS4. Además, se presentará la propuesta de control de operación del robot utilizando los botones del joystick al profesor Federico Ruiz para recibir su feedback y realizar posibles mejoras.