SECRETARÍA DE EDUCACIÓN PÚBLICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE VERACRUZ
INGENIERÍA MECATRÓNICA
REPORTE DE PRÁCTICAS
“REPORTE INTEGRAL DE PRÁCTICAS EN ENTORNOS ROBÓTICOS CON
ROS Y LINUX”
SISTEMAS OPERATIVOS PARA ROBOT
CLAVE DE GRUPO
7F12A
ALUMNO:
CASTRO RAMÍREZ FROYLAN
MAESTRO TITULAR DE LA MATERIA
DR. HERNÁNDEZ ORDOÑEZ MARTÍN
H. VERACRUZ, VER, MÉXICO. AGOSTO-DICIEMBRE 2025
PRÁCTICA 1. INSTALACIÓN DE UBUNTU
Objetivo de la práctica.
➔ Instalar y configurar el sistema operativo Ubuntu en una computadora de
trabajo, dejándolo listo como plataforma base para el uso de herramientas de
desarrollo y entornos robóticos, como ROS.
Introducción.
➔ En el área de la robótica es fundamental contar con un sistema operativo
estable, seguro y compatible con las herramientas de desarrollo más
utilizadas. Ubuntu, una distribución de Linux, es uno de los sistemas más
empleados para trabajar con ROS (Robot Operating System) y otros
paquetes de software orientados a la robótica.
La correcta instalación de Ubuntu permite preparar el equipo de cómputo
para futuras prácticas, asegurando que se cuente con un entorno
actualizado, con los controladores básicos y con conexión a internet para
instalar paquetes adicionales cuando sea necesario.
Desarrollo.
1. Se descargó la imagen ISO de Ubuntu desde la página oficial.
2. Se creó una memoria USB booteable utilizando una herramienta como Rufus
o Ventoy.
3. Se configuró la BIOS/UEFI de la computadora para arrancar desde la
memoria USB.
4. Se inició el instalador de Ubuntu y se seleccionó el idioma y la distribución de
teclado.
5. Se eligió el tipo de instalación (modo borrado de disco o instalación junto a
otro sistema operativo, según el equipo).
6. Se configuró el usuario, contraseña y nombre del equipo.
7. Se esperó a que el proceso de copia de archivos y configuración terminara.
8. Al finalizar, se reinició el equipo y se retiró la memoria USB.
9. Se verificó el arranque correcto de Ubuntu y se realizaron las primeras
actualizaciones del sistema usando el gestor de actualizaciones o el
comando sudo apt update / sudo apt upgrade.
Resultados / Evidencias.
➔ Al concluir la práctica se obtuvo:
1) Ubuntu instalado y funcionando correctamente en el equipo asignado.
2) Usuario y contraseña configurados para el acceso al sistema.
3) Sistema actualizado y con conexión a internet operando correctamente.
Conclusión.
➔ La instalación de Ubuntu se realizó de forma satisfactoria, dejando el equipo
listo para ser utilizado como base en futuras prácticas de la materia. Se
comprendió el proceso general de instalación de un sistema operativo Linux,
así como la importancia de configurar correctamente el arranque, e usuario
y las actualizaciones iniciales. Esta práctica sirve com punto de partida para
la instalación de herramientas adicionales relacionadas con la robótica y
ROS.
PRÁCTICA 2. INTRODUCCIÓN A ROS Y USO DEL ENTORNO DE SIMULACIÓN
TURTLESIM
Objetivo de la práctica.
➔ Comprender los conceptos básicos del Robot Operating System (ROS) e
instalar y ejecutar el nodo de simulación Turtlesim para visualizar el
funcionamiento de un entorno robótico simple mediante la comunicación
nodo – tópico.
Introducción.
➔ ROS (Robot Operating System) es un marco de software utilizado
ampliamente en el desarrollo de robots debido a su arquitectura modular
basada en nodos que se comunican entre sí mediante tópicos, servicios y
parámetros.
Turtlesim es una herramienta visual que permite introducir estos conceptos
mediante una simulación sencilla en la que una “tortuga” se mueve en
respuesta a mensajes enviados desde distintos nodos.
Esta práctica se enfoca en comprender los elementos básicos del ecosistema
ROS y ejecutar Turtlesim para empezar a visualizar la comunicación entre
nodos.
Desarrollo.
1. Se abrió una terminal en Ubuntu.
2. Se verificó que ROS estuviera correctamente instalado.
3. Se instaló el paquete de Turtlesim mediante el comando.
4. Se ejecutó el nodo principal de Turtlesim.
5. En otra terminal, se ejecutó el nodo que permite controlar la tortuga con el
teclado.
6. Se observó cómo la ventana gráfica de Turtlesim respondía a los comandos
enviados desde el nodo teleop.
7. Se listaron los tópicos disponibles.
8. Se identificó el canal principal de movimiento.
9. Se probó publicar un mensaje directamente.
10. Se comprobó que la tortuga respondía moviéndose automáticamente.
Resultados / Evidencias.
Al finalizar la práctica se obtuvo:
• ROS funcionando correctamente en el sistema.
• Ventana de Turtlesim ejecutándose.
• Control de la tortuga mediante el teclado.
• Publicación y suscripción a tópicos básicos.
Conclusión.
La práctica permitió comprender los componentes básicos del framework ROS y
cómo los nodos se comunican mediante tópicos. Turtlesim demostró de manera
visual el funcionamiento de ROS y facilitó el entendimiento de cómo los mensajes
afectan el comportamiento de un nodo. Esta práctica sirve como base para trabajar
con sistemas más complejos en robótica.
PRÁCTICA 3. INSTALACIÓN COMPLETA DE ROS EN UBUNTO Y EJECUCIÓN
DEL NODO DE PRUEBA “HELLO WORLD”
Objetivo de la práctica.
Instalar correctamente el sistema ROS en Ubuntu, configurar el entorno de trabajo
y verificar su funcionamiento ejecutando un nodo básico tipo “Hello World”.
Introducción.
ROS (Robot Operating System) es un conjunto de herramientas, librerías y
convenciones que facilitan el desarrollo de aplicaciones robóticas. Para utilizarlo
adecuadamente, es necesario realizar una instalación completa que incluya los
paquetes principales, las dependencias, y configurar el entorno del sistema.
Una vez instalado, el primer paso consiste en ejecutar un nodo simple que confirme
el correcto funcionamiento del framework. Esto es equivalente a un “Hello World”
dentro del entorno ROS, lo cual garantiza que el sistema puede ejecutar nodos y
comunicarse correctamente.
Desarrollo.
1. Se utilizó el sistema Ubuntu.
2. Se añadió el repositorio de ROS a las fuentes de software de Ubuntu.
3. Se instaló la versión correspondiente a la distribución del sistema.
4. Se configuró el entorno para que ROS se cargue automáticamente al abrir
una terminal.
5. Se verificó la instalación comprobando la versión.
6. Se creó un workspace básico.
7. Se ejecutó el nodo de ejemplo “Hello World” utilizando un paquete incluido
con la instalación.
8. En otra terminal se ejecutó el nodo suscriptor para visualizar los mensajes
enviados.
9. Se observó la comunicación entre nodos donde el publicador enviaba
mensajes tipo “Hello World” y el suscriptor los imprimía en la terminal.
Resultados / Evidencias.
Se obtuvieron los siguientes resultados.
• ROS instalado correctamente en el sistema Ubuntu.
• Workspace configurado y compilado sin errores.
• Ejecución exitosa de los nodos talker y listener.
• Visualización en terminal de los mensajes “Hello World”.
Conclusión.
La instalación de ROS se realizó de forma exitosa y se verificó su correcto
funcionamiento mediante la ejecución del nodo “Hello World”. Esta práctica permitió
comprender cómo se compila un workspace, cómo se ejecutan nodos de ejemplo y
cómo se comunican mediante tópicos. Con esto se establece la base necesaria para
comenzar a desarrollar aplicaciones robóticas más complejas en ROS.
PRÁCTICA 4. CREACIÓN DE UN WORKSPACE Y GENERACIÓN DE
PAQUETES UTILIZANDO CATKIN
Objetivo de la práctica.
Crear un workspace utilizando la herramienta Catkin, generar un paquete básico
dentro de ROS y compilarlo correctamente para comprender la estructura
fundamental del desarrollo en ROS.
Introducción.
ROS se organiza en workspace que permiten mantener, desarrollar y compilar
paquetes de software de forma modular.
Catkin es el sistema de compilación clásico de ROS (ROS1), utilizado para
estructurar, compilar y administrar los paquetes del robot. Aunque ROS2 utiliza
Colcon, el uso de Catkin sigue siendo una excelente forma de entender la filosofía
de ROS y la estructura típica de un proyecto robótico.
Esta práctica permite comprender cómo se organizan los directorios, cómo se crean
paquetes desde cero y cómo se compilan utilizando el entorno ROS.
Desarrollo.
1. Se abrió una terminal en Ubuntu.
2. Se creó el directorio del workspace.
3. Se accedió al directorio del workspace.
4. Se compiló por primera vez el workspace.
5. Se configuró en entorno para que reconozca el workspace.
6. Se creó un paquete básico dentro de la carpeta.
7. Se verificó que el paquete se haya creado correctamente visualizando su
estructura.
8. Se regresó al directorio principal del workspace y se compiló nuevamente.
9. Se verificó que la compilación no tuviera errores y que el paquete estuviera
disponible para ROS.
Resultados / Evidencias.
Los resultados obtenidos fueron los siguientes:
• Workspace creado correctamente.
• Paquete generado con sus dependencias iniciales.
• Compilación exitosa.
• Archivos de configuración creados automáticamente por ROS.
Conclusión.
La práctica permitió aprender cómo se organiza un workspace en ROS y cómo se
crea un paquete utilizando Catkin. Se comprendió la estructura básica de los
archivos generados, así como el proceso de compilación. Estos conocimientos son
fundamentales para desarrollar nodos y programas más avanzados dentro del
ecosistema de ROS.
PRÁCTICA 5. CREACIÓN DE NODOS PUBLICADORES Y SUSCRIPTORES EN
PYTHON USANDO TÓPICOS EN ROS
Objetivo de la práctica.
Crear nodos en Python que se comuniquen entre sí mediante tópicos en ROS,
implementando un nodo publisher y un nodo subscriber para comprender el
funcionamiento básico de la comunicación en el ecosistema de ROS.
Introducción.
En ROS, los nodos son procesos que realizan tareas específicas dentro del sistema
robótico.
La comunicación entre nodos se realiza principalmente mediante tópicos, donde un
nodo publicador envía mensajes y un nodo suscriptor los recibe.
Esta práctica tiene como finalidad crear ambos nodos desde cero utilizando Python,
compilar el paquete y observar cómo se transmiten los mensajes en tiempo real.
Este ejercicio es esencial para entender la arquitectura de ROS y el flujo de datos
entre diferentes componentes de un robot.
Desarrollo.
1. Se abrió la terminal y se accedió al workspace de ROS.
2. Se creó un paquete nuevo para Python.
3. Se accedió a la carpeta del paquete.
4. Se creó al archivo del nodo publicador.
5. Se creó el archivo del nodo suscriptor.
6. Se editaron los archivos de configuración del paquete para incluir los nodos
creados.
7. Se regresó al workspace y se compiló.
8. Se activó el entorno del workspace compilado.
9. Se ejecutó primero el nodo publicador.
10. En otra terminal, se ejecutó el nodo suscriptor.
11. Se observó cómo los mensajes enviados por el publicador eran recibidos por
el suscriptor en tiempo real.
Resultados / Evidencias.
Los principales resultados fueron:
• Creación del paquete correctamente.
• Nodos en Python funcionando correctamente.
• Comunicación fluida entre publicador y suscriptor.
• Visualización de mensajes en la terminal en ambas direcciones.
CÓDIGO 1. SETUP
from setuptools import setup
package_name = 'my_py_pkg'
setup(
name=package_name,
version='0.0.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['[Link]']),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='alan',
maintainer_email='alan@[Link]',
description='Paquete de ejemplo ROS2 (talker/listener)',
license='Apache-2.0',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'talker = my_py_pkg.talker:main',
'listener = my_py_pkg.listener:main',
],
},
)
CÓDIGO 2. TALKER
import rclpy
from [Link] import Node
from std_msgs.msg import String
class MinimalPublisher(Node):
def __init__(self):
super().__init__('minimal_publisher')
self.publisher_ = self.create_publisher(String,
'chatter', 10)
timer_period = 0.5 # segundos
[Link] = self.create_timer(timer_period,
self.timer_callback)
self.i = 0
def timer_callback(self):
msg = String()
[Link] = f'Hello ROS2: {self.i}'
self.publisher_.publish(msg)
self.get_logger().info(f'Publicando: "{[Link]}"')
self.i += 1
def main(args=None):
[Link](args=args)
node = MinimalPublisher()
[Link](node)
node.destroy_node()
[Link]()
if __name__ == '__main__':
main()
CÓDIGO 3. LISTENER
import rclpy
from [Link] import Node
from std_msgs.msg import String
class MinimalSubscriber(Node):
def __init__(self):
super().__init__('minimal_subscriber')
[Link] = self.create_subscription(
String,
'chatter',
self.listener_callback,
10)
[Link] # evitar warning de variable sin usar
def listener_callback(self, msg):
self.get_logger().info(f'Recibí: "{[Link]}"')
def main(args=None):
[Link](args=args)
node = MinimalSubscriber()
[Link](node)
node.destroy_node()
[Link]()
if __name__ == '__main__':
main()
Conclusión.
La práctica permitió comprender cómo se implementan nodos en Python dentro de
ROS y cómo se comunican mediante tópicos. Se logró establecer un flujo de
mensajes entre un nodo publicador y un nodo suscriptor, lo que demuestra el
funcionamiento del sistema de comunicación en ROS. Este conocimiento es
esencial para el desarrollo de aplicaciones robóticas que requieren intercambio
constante de información.