<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Práctica 4 - Control
En este documento se van a importar las librerias necesarias para graficar los datos simulados por medio de los métodos numéricos descritos en el documento (numerico.ipynb).
Este documento debe estar abierto al mismo tiempo que el documento simulador.ipynb y referencias.ipynb
Step1:  Se definen los parametros DH del manipulador a visualizar, se le da un nombre, se define el tipo de articulaciones que tiene el manipulador, las longitudes, angulos en dos arreglos y el modo de graficación.
Step2:  Se inicializan los puertos en los que tiene que escuchar los mensajes
Step3:  Se manda llamar al visualizador del robot.
<ASSISTANT_TASK:>
Python Code:
from robots.robots import Robot
from numpy import pi
Explanation: Práctica 4 - Control
En este documento se van a importar las librerias necesarias para graficar los datos simulados por medio de los métodos numéricos descritos en el documento (numerico.ipynb).
Este documento debe estar abierto al mismo tiempo que el documento simulador.ipynb y referencias.ipynb
End of explanation
params = [[ "l1", 0, 0, "q1"]]
robot1 = Robot("Pendulo simple", "R", [0.4], [0], params, "cinematico")
Explanation: Se definen los parametros DH del manipulador a visualizar, se le da un nombre, se define el tipo de articulaciones que tiene el manipulador, las longitudes, angulos en dos arreglos y el modo de graficación.
End of explanation
robot1.inicializar_puertos()
Explanation: Se inicializan los puertos en los que tiene que escuchar los mensajes
End of explanation
%matplotlib widget
robot1.visualizador()
Explanation: Se manda llamar al visualizador del robot.
End of explanation
<END_TASK>