News:

SMF - Just Installed!

Main Menu

Brazo Robot + Garra

Started by SergioF, November 07, 2023, 01:10:10 PM

Previous topic - Next topic

SergioF

Buenas!!

He creado un UDC que es un robot (con cinemática inversa) y sobre él he puesto un punto builder en el extremo del robot para seleccionar entre diferentes garras (también son UDCs).
El problema viene en que al ser dos UDCs distintos, si intentamos mover el robot la garra no la seguirá.
Hemos intentado emparentarlos entre sí metiendo uno dentro de otro en la escena, pero no se puede hacer esta acción entre UDCs. 

¿Existe alguna forma de solucionar este problema?

Un saludo.
Sergio
 

EasyPLC_Master

Hola Sergio,

Los UDC son entidades independientes dentro de la simulación, la comunicación con otros componentes se realiza a través de los valores de las I/Os analógicas y digitales. Y se utilizan los parámetros como valores numéricos para configurar sus propiedades.

En la próxima versión se permitirá acceder a los componentes de un UDC de tal manera que se pueda realizar la operación que solicitas. Estará disponible en breve.

SergioF

Perfecto!! Muchas graciias  ;)

Aprovechando el hilo, me he dado cuenta que al poner un UDC con cinemática inversa en la escena (un robot), crearle unas rutas y guardar el proyecto. Al volver a abrirlo, las rutas desaparecen y hay que volver a hacerlas.

Si las configuras de antemano en el UDC Editor si las mantiene cuando lo sacas a escena. Pero si no las has programado y lo haces en la escena directamente, no se guarda dicha información.

¿Esto esta asi planteado por alguna razón?

EasyPLC_Master

No acabo de comprender el problema.
¿Te refieres a utilizar un componente de tipo Inverse Kinematics en un UDC para moverlo a las posiciones de las rutas preconfiguradas de este componente?
Si es así, he verificado y si que guarda bien las rutas programadas.
No te entiendo a que te refieres con:
Si las configuras de antemano en el UDC Editor si las mantiene cuando lo sacas a escena. Pero si no las has programado y lo haces en la escena directamente, no se guarda dicha información

En un UDC con un componente IK solo se pueden programar las rutas en el editor del UDC, no se puede hacer directamente en la escena.

¿Puedes explicarlo o enviarme un ejemplo?

Gracias  ;) 

SergioF

Vale.

Lo que estaba haciendo en el UDC es mediante script programar un parameter que cuando es true active ConfigRoutes() y asi poder realizar las rutas del robot directamente en escena, adaptándonos a cada situación, ya que desde el UDC no se como luego van a ir los otros componentes con lo que deberá interactuar.

Gracias

EasyPLC_Master

No es esa la manera. Debes de utilizar la propiedad Target del IK para moverlo a la posición que te interese en el UDC que tendrás en la escena.
Como ejemplo puedes ver como está hecho el UDC Delta Robot que utiliza este método.

EasyPLC_Master

Ya está disponible la v.3.21.1 donde se puede acceder a cada uno de los componentes del UDC.
De esta manera usando la función Link() o UnLink() puedes establecer o deshacer relaciones padres-hijos entre los componentes pertinentes.
Echa un vistazo al programa del ejemplo, donde en el código script verás como funciona:

public void Init()
{
ComponentBase gripRob = AR.UDCComponent("Grips");
Grip.Link(gripRob.Space);
}

public void Main()
{

}

public void Physics()
{

}

public void Finish()
{
 Grip.UnLink();
}

andrer1990

Hola buenas
Que es el .Space ? dentro ComponentBase hay otros valores a parte de Space? queria entender un poco el codigo ya que no lo encuentro dentro de las ayudas del programa.

EasyPLC_Master

Está explicado en el Manual del software, también tienes la ayuda en la ventana del Script Editor.
El objeto .Space de todos los componentes contiene los valores de las transformadas en el espacio (posición + orientación + escala).