Ejemplo n.º 1
0
        /// <param name="port">Port defined in RSI_EthernetConfig.xml</param>
        /// <param name="limits">robot limits</param>
        public KUKARobot(int port, RobotLimits limits)
        {
            rsiAdapter = new RSIAdapter(port);
            Limits     = limits;

            worker = new BackgroundWorker()
            {
                WorkerSupportsCancellation = true
            };

            worker.DoWork += async(sender, args) => {
                // Connect with the robot
                InputFrame receivedFrame = await rsiAdapter.Connect();

                generator = new TrajectoryGenerator5(receivedFrame.Position);

                lock (receivedDataSyncLock) {
                    IPOC         = receivedFrame.IPOC;
                    position     = receivedFrame.Position;
                    HomePosition = receivedFrame.Position;
                }

                // Send first response (prevent connection timeout)
                rsiAdapter.SendData(new OutputFrame()
                {
                    Correction = new RobotVector(),
                    IPOC       = IPOC
                });

                isInitialized = true;
                Initialized?.Invoke();

                // Start loop for receiving and sending data
                while (!worker.CancellationPending)
                {
                    await ReceiveDataAsync();

                    SendData();
                }

                isInitialized = false;
                rsiAdapter.Disconnect();
            };
        }
Ejemplo n.º 2
0
 /// <param name="port">port defined in RSI_EthernetConfig.xml</param>
 /// <param name="limits">robot limits</param>
 /// <param name="transformation">optitrack transformation</param>
 public RobotConfig(int port, RobotLimits limits, Transformation transformation)
 {
     Port           = port;
     Limits         = limits;
     Transformation = transformation;
 }