Teilen Sie Ihre Erfahrunge und Wünsche mit uns und anderen Usern!

+1
Answered

When will Unity 2019 be supported?

Stan 8 months ago in OPCUA4Unity updated by Thomas 8 months ago 5

Hello,


I was wondering when will OPC UA for Unity 2019 will be supported?

With kind regards,

Stan (Developer at Siemens)

Answer
Thomas 8 months ago

Hi, we have no tutorial about that.Even if Unity 2019 is not officially supported yet, you should be able to get it running. What is your problem. What kind of error messages do you have?

0
Completed

VR in Game4Automation

Pablo Navarrete 18 hours ago updated by Thomas 6 hours ago 1

Hello forum


I bought an Oculus Quest 2 headset last week and I would like to know if its possible to connect it to the demo of Game4Automation.

Is there any resource about how to use VR in Game4Automation?

Thanks in advance and please, try to translate the menu of the forum cause we all arent german :)

Answer
Thomas 6 hours ago

Hello Pablo,

G4A is fully compatible with more or less all VR/AR solutions you can find for Unity.

you should follow the Occulus Documentation:

https://developer.oculus.com/documentation/unity/book-unity-dg/

Or you could use Steam - the advantage with Steam is that it works with most VR headsets on the market:

https://valvesoftware.github.io/steamvr_unity_plugin/articles/Quickstart.html

At the end, you need to integrate with all that VR Applications some standard Assets in your project and in your scene some standard components like VR Camera, Teleport and so on. You will need to deactivate or delete the G4A Camera because camera movement will be replaced by the VR application.

Maybe I will do soon an official tutorial about that. But if you follow the VR documentations and tutorials on the web you should be able to do that.

And sorry, did not notice, the forum is now also in English...

Best regards

Thomas

0
Answered

Unity Build Player Window error

Denis 1 week ago in Game4Automation Starter and Professional updated by Thomas yesterday at 1:43 a.m. 8

Hello , I have errors when i trying to build player window , its works when i delete game4automation , and if i add game4automation and trying to compile i get some errors , I want to mention that I did not add the s7 interface, I did not add anything

Answer
Thomas yesterday at 1:43 a.m.

Problem was solved by deleting Parts4Cad and Zip in Tools. Included ZIP is not compatible with UWP. We will change that in future.

0
Started

Kuka VKRC , integration example.

Дмитрий Мурашов 2 weeks ago in General Questions updated by Thomas 4 days ago 5

Kuka VKRC , integration example.

Answer
Thomas 4 days ago

Hi,

nice work. How did you connected to KUKA. 

There seems to be still a cycle time problem. If you would like I could support you, if you support me for getting it into the Professional version ;-)

Best regards

Thomas

0
Answered

S7 plc i want to show on scene value from the controller

Denis 2 weeks ago in Game4Automation Starter and Professional updated 1 week ago 4

Hello , i want to show value from the controler as a text on scene , how i can do that?

Answer
Thomas 2 weeks ago

Hello,

you need to do it with a little script that takes Signal.Value and which is putting this into a Unity UI text box.

0
Answered

Chain rotation is bugged

SMF - 3PTechnology 2 weeks ago updated 1 week ago 8

I implemented your chain script as descript in https://game4automation.com/documentation/current/chain.html and as you have done in the scene DemoChain. The rotation of my chain elements are not correct and jumps at some points along the chain. All my anchers and all their tangent have rotation (0,0,0). I don't understand what I have done wrong. 

Answer
Thomas 1 week ago

I don't know exactly how you would like to align the objects. But playing around with the Align Object and the rotation of the geometry in your Chain Element should do the job. Please check the video:

QbVAbcVI4D.mp4

0
Answered

Change the model from CADLink to a prefab (MU)

zhou zhou 2 months ago in CADLink updated 1 month ago 2

Hi,


 I use CADLink importing a model into scene and want to make a MU.  How to change it to a prefab quickly ? Thanks so much.



0
Answered

RobotDK jitter

Дмитрий Мурашов 2 months ago in General Questions updated by Thomas 2 months ago 2
Hello, i add RobotDK API to game4automation if check on video Comm cycle in very long, without moving in RobotDK it's 3-5ms, during movment is is 1500ms, is any possibility to make it smaller and more stable? or it is problem of RobotDK ?


Here is code od RobotDK script.

using System;
using UnityEngine;
using Sharp7;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

namespace game4automation
{
public class RoboInterfaceDK : InterfaceThreadedBaseClass
{

[ReadOnly] public string notifybar;
[ReadOnly] public string txtJoints;

public string Adress = "localhost"; //!< The ip adress of the PLC

public Drive Axis1;
public Drive Axis2;
public Drive Axis3;
public Drive Axis4;
public Drive Axis5;
public Drive Axis6;



private RoboDK RDK = null;
private bool starting = true;

// Keep the ROBOT item as a global variable
private RoboDK.Item ROBOT = null;


public bool Check_RDK()
{
// check if the RDK object has been initialised:
if (RDK == null)
{
notifybar = "RoboDK has not been started";
return false;
}

// Check if the RDK API is connected
if (!RDK.Connected())
{
notifybar = "Connecting to RoboDK OK!";
// Attempt to connect to the RDK API

if (!RDK.Connect())
{

notifybar = "Problems using the RoboDK API. The RoboDK API is not available...";
return false;
}


}
return true;
}

public string Values_2_String(double[] dvalues)
{
if (dvalues == null || dvalues.Length < 1)
{
return "Invalid values";
}
// Not supported on .NET Framework 2.0:
//string strvalues = String.Join(" , ", dvalues.Select(p => p.ToString("0.0")).ToArray());
string strvalues = dvalues[0].ToString();
for (int i = 1; i < dvalues.Length; i++)
{
strvalues += " , " + dvalues[i].ToString();
}

return strvalues;
//return "";
}
public void SelectRobot()
{
notifybar = "Selecting robot...";
if (!Check_RDK())
{
ROBOT = null;
return;
}
ROBOT = RDK.ItemUserPick("Select a robot", RoboDK.ITEM_TYPE_ROBOT); // select robot among available robots
//ROBOT = RL.getItem("ABB IRB120", ITEM_TYPE_ROBOT); // select by name
//ITEM = RL.ItemUserPick("Select an item"); // Select any item in the station
if (ROBOT.Valid())
{
ROBOT.NewLink(); // This will create a new communication link (another instance of the RoboDK API), this is useful if we are moving 2 robots at the same time.
notifybar = "Using robot: " + ROBOT.Name();
}
else
{
notifybar = "Robot not available. Load a file first";
}
}

public bool Check_ROBOT(bool ignore_busy_status = false)
{
if (!Check_RDK())
{
return false;
}
if (ROBOT == null || !ROBOT.Valid())
{
notifybar = "A robot has not been selected. Load a station or a robot file first.";
SelectRobot();
return false;
}
try
{
notifybar = "Using robot: " + ROBOT.Name();
}
catch (RoboDK.RDKException rdkex)
{
notifybar = "The robot has been deleted: " + rdkex.Message;
return false;
}

// Safe check: If we are doing non blocking movements, we can check if the robot is doing other movements with the Busy command
/*if (!MOVE_BLOCKING && (!ignore_busy_status && ROBOT.Busy()))
{
notifybar = "The robot is busy!! Try later...";
return false;
}*/
return true;
}

//! Updates all signals in the parallel communication thread
protected override void CommunicationThreadUpdate()
{
if (!Check_ROBOT(true)) { return; }

double[] joints = ROBOT.Joints();
//Mat pose = ROBOT.Pose();

// update the joints
Axis1.TargetStartMove = !Axis1.TargetStartMove;
Axis1.TargetPosition = (float)joints[0];

Axis2.TargetStartMove = !Axis2.TargetStartMove;
Axis2.TargetPosition = (float)joints[1] + 90;

Axis3.TargetStartMove = !Axis3.TargetStartMove;
Axis3.TargetPosition = (float)joints[2] - 90;

Axis4.TargetStartMove = !Axis4.TargetStartMove;
Axis4.TargetPosition = (float)joints[3];

Axis5.TargetStartMove = !Axis5.TargetStartMove;
Axis5.TargetPosition = (float)joints[4];

Axis6.TargetStartMove = !Axis6.TargetStartMove;
Axis6.TargetPosition = (float)joints[5];

string strjoints = Values_2_String(joints);
txtJoints = strjoints;

}


public override void OpenInterface()
{

if (RDK == null) { RDK = new RoboDK(); }
base.OpenInterface();
}


public override void CloseInterface()
{
//if (!Check_RDK()) { ;}
// Force to stop and close RoboDK (optional)
// RDK.CloseAllStations(); // close all stations
// RDK.Save("path_to_save.rdk"); // save the project if desired
//RDK.CloseRoboDK();
RDK = null;

base.CloseInterface();
}

private void Update()
{
//Check_RDK();
/*if (Check_RDK()) { starting = false; }

if (!Check_RDK() && !starting)
{
RDK = new RoboDK();

}*/


}
}
}

Answer
Thomas 2 months ago

Hi, I checked your example on my computer. It moves smoothly on my side´(RoboDK and G4A),

I think your started to implement your own RoboDK Interface because you did not purchased professional version - right?

It could save you some time to use G4A Professional. Please get in contact with me if you need an offer.

0

S7PLC to PLCSIM Compact

Here is solution for S7PLC connect to PLCSIM Compact, comment in S7Interface disconection timeout.

SetPDU to 10 (working not stable and max 5 byte in, 5 byte out)

And using Nettoplcsim-S7o-v-1-2-4-0 program

Some features in configs NetToPlcsim

start.cmd

//

sc stop "S7DOS Help Service"
START /B NetToPLCSim.exe -f=S7Test.ini -s=NO -autostart

TIMEOUT /T 4
sc start "S7DOS Help Service"
TIMEOUT /T 4
"D:\Program Files\Siemens\Automation\S7-PLCSIM V15_1\Bin\Siemens.Simatic.PlcSim.Compact.exe"

S7Test.ini

//

[Station_1]
Name=PLC#001
NetworkIpAddress=192.168.88.50 //External IP of PLCSIM , adress of Ethernet board
PlcsimIpAddress=192.168.0.1   //internal IP of PLCSIM , not change this one
PlcsimRackNumber=0
PlcsimSlotNumber=0
TsapCheckEnabled=False

And now can connect to PLCSIM

0
Answered

Automatic aggregation of objects and relations

Christiane 2 months ago updated by Thomas 2 months ago 2

Hi,

I am wondering whether G4A includes some way to automatically derive a meaningful object hierarchy and derive relations (e.g. spatial relations such as RCC8 relations). When you import models from CAD, there is often quite a "flat" hierarchy, i.e. most objects will be on the same level (e.g. a screw is on the same level as a motor). But this is usually not what you want, it would be better to have a "higher-level" hierarchy computed based on the positions of objects relative to each other. Similar with the relations like adjacent etc. Is there a way to derive this automatically in G4A? In the documentation I could not find anything.

Best regards,

Christiane