public void Test_CommandLineParameter() { var rdk = new RoboDK { ApplicationDir = "C:\\zBuilds\\Bystronic\\repository\\ByRobotManager-2\\ByRobotManager\\bin\\Debug\\RoboDK\\RoboDK.exe", RoboDKServerStartPort = 56252, //CustomCommandLineArgumentString = "-NOSPLASH -NOSHOW -HIDDEN -PORT=56252 -NOSTDOUT -SKIPINIRECENT -SKIPINI -SKIPCOM -EXIT_LAST_COM -NOUI", CustomCommandLineArgumentString = "-PORT=56252 -NOSTDOUT -SKIPINIRECENT -SKIPINI -SKIPCOM -EXIT_LAST_COM -NOUI -TREE_STATE=-1", //CustomCommandLineArgumentString = "/NOSPLASH /NOSHOW /HIDDEN /PORT=56252 /NOSTDOUT /SKIPINIRECENT /SKIPINI /SKIPCOM /EXIT_LAST_COM /NOUI /TREE_STATE=-1", //CustomCommandLineArgumentString = "/NOSPLASH /NOSHOW /HIDDEN /NOSTDOUT /SKIPINIRECENT /SKIPINI /SKIPCOM /EXIT_LAST_COM /NOUI /TREE_STATE=-1" //CustomCommandLineArgumentString = "/NOSTDOUT /SKIPINIRECENT /SKIPINI /SKIPCOM /EXIT_LAST_COM /NOUI" }; rdk.Connect(); // Thread.Sleep(5000); var mainWindow = rdk.Command("MainWindow_ID"); var item = rdk.AddFile(@"C:\Users\mth\AppData\Local\Temp\ByRobotManager_Geometries\Regrip lower arm NS2+NS3_collision.sld"); item.SetParam("FilterMesh", "0,0.0001,0.005"); var mainWindowId = int.Parse(mainWindow); rdk.CloseRoboDK(); }
public void Test_WhenConnectingOnUsedActiveSocketThenNoConnectionAndRoboDkNotStarted() { var port = 56252; while (!RoboDK.IsTcpPortFree(port)) { port++; } using (var s = new SocketHelper()) { s.OpenServerAndClient(port); RoboDK.IsTcpPortFree(s.ServerPort).Should().BeFalse(); RoboDK.IsTcpPortFree(s.ClientPort).Should().BeFalse(); var rdk = new RoboDK { RoboDKServerStartPort = port, }; rdk.Connect().Should().BeFalse(); rdk.Connected().Should().BeFalse(); rdk.Process.Should().BeNull(); rdk.Connect().Should().BeFalse(); rdk.Connected().Should().BeFalse(); rdk.Process.Should().BeNull(); rdk.Invoking(r => r.CloseRoboDK()) .Should().Throw <RdkException>(); } }
int Factor_LM = 400; //400 void Start() { RoboDK RDK = new RoboDK(); Variables.ROBOT = RDK.ItemUserPick("Select a robot", RoboDK.ITEM_TYPE_ROBOT); // if (Variables.ROBOT.Connect()) // { // RDK.setRunMode(RoboDK.RUNMODE_RUN_ROBOT); // } // else // { // RDK.setRunMode(RoboDK.RUNMODE_SIMULATE); // } RDK.setRunMode(RoboDK.RUNMODE_SIMULATE); //Variables.ROBOT.MoveJ(home_joints); Mat frame = Variables.ROBOT.PoseFrame(); //Mat tool = Variables.ROBOT.PoseTool(); Mat pose_ref = Variables.ROBOT.Pose(); Variables.target_pose = Variables.ROBOT.Pose(); Variables.xyz_ref = Variables.target_pose.Pos(); Variables.ROBOT.MoveJ(pose_ref); Variables.ROBOT.setPoseFrame(frame); // set the reference frame //Variables.ROBOT.setPoseTool(tool); // set the tool frame: important for Online Programming Variables.ROBOT.setSpeed(500); // Set Speed to 100 mm/s Variables.ROBOT.setZoneData(5); // set the rounding instruction //Variables.ROBOT.MoveL(pose_ref); }
/// <summary> /// 在初始化线程中初始化类参数,由于RoboDK在未启动时,将会有一个启动的过程,这就导致软件的延迟启动 /// 在该线程中启动更新robot机器人参数的线程 /// 初始化完成后,线程就立即结束 /// </summary> private void InitThreadInitParameterHandler( ) { this.WriteLogHandler("RoboDK软件开启中...."); // 在创建RoboDK的对象时,会对RoboDK软件进行启动和连接,若路径不对,则启动不了,需要进行提示,并且不启动更新参数线程 try { this._rdkPlatform = new RoboDK(); // 创建RoboDK对象,其中会对RoboDK平台进行连接 this.WriteLogHandler("已开启RoboDK软件."); } catch { this._rdkPlatform = null; this.WriteLogHandler("RoboDK软件无法启动,可能路径有误," + "重新设置正确路径,然后重启.", 1); return; } this._queueRobotMoveMessage = new Queue <double[]>(); this._autoEvent = new AutoResetEvent(false); // 启动机器人参数更新的线程 this._thrdUpdateRobotParameter = new Thread(this.ThreadUpdatRobotParameterHandler); // 初始化更新机器人参数的线程 this._thrdUpdateRobotParameter.IsBackground = true; // 设置成后台线程,在前台线程结束时,所有剩余的后台线程都会停止且不会完成 this._thrdUpdateRobotParameter.Name = "UpdateRobotParameterHandler"; // 设置线程的名字 this._thrdUpdateRobotParameter.Start(); // 启动线程 //this._thrdDriveRobotMoveHandler = new Thread(ThrdDriveRobotMoveHandler); // 简单线程,驱动机器人运动操作 //this._thrdDriveRobotMoveHandler.IsBackground = true; // 设置成后台线程,在前台线程结束时,所有剩余的后台线程都会停止且不会完成 //this._thrdDriveRobotMoveHandler.Name = "DriveRobotMove"; // 设置线程的名字 //this._thrdDriveRobotMoveHandler.Start(); }
/// <summary> /// Constructor /// </summary> public Item(RoboDK connectionLink, long itemId = 0, ItemType itemType = ItemType.Any) { ItemId = itemId; Link = connectionLink; _type = itemType; _name = ""; }
public void Test_ConnectDisconnectWhenRoboDKIsAlreadyRunning() { var rdk = new RoboDK(); for (var i = 0; i < 10; i++) { rdk.Connected().Should().BeFalse(); rdk.Connect().Should().BeTrue(); // RoboDK is already running. It is not expected that connect will start a new process rdk.Process.Should().BeNull(); rdk.Connected().Should().BeTrue(); // Test some properties rdk.Version().Should().StartWith("5"); rdk.ApiVersion.Should().BeGreaterThan(0); rdk.RoboDKBuild.Should().BeGreaterThan(0); rdk.RoboDKServerPort.Should().BeGreaterThan(0); rdk.RoboDKClientPort.Should().BeGreaterThan(0); rdk.RoboDKServerIpAddress.Length.Should().BeGreaterThan(0); rdk.DefaultSocketTimeoutMilliseconds.Should().BeGreaterThan(1000); rdk.Disconnect(); rdk.Connected().Should().BeFalse(); } }
// Use this for initialization void Start() { initializeJoints(); RoboDK RDK = new RoboDK(); ROBOT = RDK.ItemUserPick("Select a robot", RoboDK.ITEM_TYPE_ROBOT); RDK.setRunMode(RoboDK.RUNMODE_SIMULATE); ROBOT.MoveJ(home_joints); Mat frame = ROBOT.PoseFrame(); //Mat tool = Variables.ROBOT.PoseTool(); Mat pose_ref = ROBOT.Pose(); target_pose = ROBOT.Pose(); xyz_ref = target_pose.Pos(); ROBOT.MoveJ(pose_ref); ROBOT.setPoseFrame(frame); //Variables.ROBOT.setPoseTool(tool); ROBOT.setSpeed(500); ROBOT.setZoneData(5); //Setting inial right controller 3D position VR_Init_Pos[0] = Right_Controller.transform.position.z; VR_Init_Pos[1] = Right_Controller.transform.position.x; VR_Init_Pos[2] = Right_Controller.transform.position.y; //Debug.Log(VR_Init_Pos[0] + " " + VR_Init_Pos[1] + " " + VR_Init_Pos[2]); }
private void SensorActive(object obj) { RoboDK RDK = new RoboDK("127.0.0.1"); RoboDK.Item SENSOR = RDK.GetItem("Sensor SICK WL4S", RoboDK.ITEM_TYPE_OBJECT); RoboDK.Item program = roboDK.GetItem("MoveConveyor"); program.RunCode(); while (true) { RoboDK.Item item = GetEndedPart(); if (item != null) { if (SENSOR.Collision(item) > 0) { Console.WriteLine("检测到碰撞"); program.Stop(); RDK.SetParam("SENSOR", "1"); // 等待东西拿走再继续 while (RDK.GetParam("SENSOR") == "1") { Thread.Sleep(10); } program.RunCode(); } } Thread.Sleep(20); } }
public void Test_DefaultStartAndEndServerPort() { var rdk = new RoboDK(); rdk.RoboDKServerStartPort.Should().BeLessOrEqualTo(rdk.RoboDKServerEndPort); rdk.RoboDKServerStartPort.Should().Be(rdk.DefaultApiServerPort); rdk.RoboDKServerEndPort.Should().Be(rdk.DefaultApiServerPort + 2); }
static void Main(string[] args) { RoboDK RDK = new RoboDK(); bool status = false; //The first connect opens roboDK status = RDK.Connect(); Console.WriteLine("Connect status: " + status.ToString()); int b = 1; }
// ReSharper disable once UnusedParameter.Local static void Main(string[] args) { var rdk = new RoboDK(); var status = false; //The first connect opens roboDK status = rdk.Connect(); Console.WriteLine($"Connect status: {status}"); //rdk.CloseStation(); }
static void Main(string[] args) { var rdk = new RoboDK(); // Connect to existing RoboDK or start a new one if RoboDK is not running var status = rdk.Connect(); Console.WriteLine($"Connect status: {status}"); // close RoboDK rdk.CloseRoboDK(); }
private void PrepareSimulation() { RoboDK RDK = new RoboDK("127.0.0.1"); RoboDK.Item frame_pallet = RDK.GetItem("PalletA", RoboDK.ITEM_TYPE_FRAME); // 获取参数 string SizeBox = RDK.GetParam("SizeBox"); // 150,200,150 箱子大小 string SizePallet = RDK.GetParam("SizePallet"); // 5,3,3 横纵列 float[] SizeBoxXyz = SizeBox.Split(',').Select((m) => float.Parse(m.Trim())).ToArray(); // [150,200,150] int[] SizePalletXyz = SizePallet.Split(',').Select((m) => int.Parse(m.Trim())).ToArray(); // [5,3,3] float SizeBoxZ = SizeBoxXyz[2]; // 箱子的高度很重要,用来计算位置和碰撞检测的 RDK.Render(false); CleanUp(RDK.GetItemList(RoboDK.ITEM_TYPE_OBJECT), "Part "); CleanUp(RDK.GetItemList(RoboDK.ITEM_TYPE_TOOL), "TCP "); RDK.GetItem("box100mm").Copy(); Random random = new Random(); for (int i = 0; i < SizePalletXyz[0]; i++) { for (int j = 0; j < SizePalletXyz[1]; j++) { for (int k = 0; k < SizePalletXyz[2]; k++) { // 计算位置 float location_x = SizeBoxXyz[0] / 2 + i * SizeBoxXyz[0]; float location_y = SizeBoxXyz[1] / 2 + j * SizeBoxXyz[1]; float location_z = SizeBoxXyz[2] / 2 + k * SizeBoxXyz[2]; // 复制新的对象 RoboDK.Item newPart = frame_pallet.Paste(); newPart.Scale(new double[] { SizeBoxXyz[0] / 100, SizeBoxXyz[1] / 100, SizeBoxXyz[2] / 100 }); newPart.SetName("Part " + i.ToString() + j.ToString() + k.ToString()); newPart.SetPose(Matrix.Transl(location_x, location_y, location_z)); newPart.SetVisible(true, 0); newPart.SetColor(new double[] { random.NextDouble(), random.NextDouble(), random.NextDouble(), 1 }); } } } RDK.SetParam("SENSOR", "0"); RDK.Render(true); RDK.Disconnect(); PartsClear(); }
public void Test_RoboDkThrowsObjectDisposedExceptionWhenCallingAnApiMethodAfterDispose() { // Given var rdk = new RoboDK(); rdk.Connect().Should().BeTrue(); // When rdk.Dispose(); // Then var whenAction = new Action(() => rdk.AddFrame("TestFrame")); whenAction.Should().Throw <ObjectDisposedException>(); }
public void Test_WhenEndServerPortSmallerThenStartServerPortThenThrowRdkException() { var rdk = new RoboDK { RoboDKServerStartPort = 10000, RoboDKServerEndPort = 9000 }; rdk.RoboDKServerStartPort.Should().Be(10000); rdk.RoboDKServerEndPort.Should().Be(9000); Action act = () => rdk.Connect(); act.Should().Throw <RdkException>(); }
/// <summary> /// 关闭所有变量,使它们都invalidition /// </summary> private void CloseAllVariable( ) { this._rdkItemRobot = null; this._rdkPlatform = null; this._thrdUpdateRobotParameter = null; this._thisLock = null; this._thrdDriveRobotMoveHandler = null; this._queueRobotMoveMessage = null; this._bolIsDriveRbtMoveThrdAlive = false; this._autoEvent = null; this._bolIsUpdateRbtParThrdAlive = false; this._bolIsThreadSuspend = false; }
public void Test_WhenSettingStartServerPortThenEndServerPortMustHaveSameValue() { var rdk = new RoboDK { RoboDKServerStartPort = 40000 }; rdk.RoboDKServerStartPort.Should().Be(40000); rdk.RoboDKServerEndPort.Should().Be(40000); rdk = new RoboDK { RoboDKServerStartPort = 10000 }; rdk.RoboDKServerStartPort.Should().Be(10000); rdk.RoboDKServerEndPort.Should().Be(10000); }
static void Main(string[] args) { RoboDK RDK = new RoboDK { RoboDKServerStartPort = 20500, RoboDKServerEndPort = 20500 }; bool status = RDK.Connect(); Console.WriteLine("Connect status: " + status.ToString()); Console.WriteLine("Last status message: " + RDK.LastStatusMessage); var robot = RDK.GetItemByName("", RoboDk.API.Model.ItemType.Robot); robot.Connect(); //robot.; int b = 1; }
public void Test_BasicEventListenerApi() { var rdk = new RoboDK(); rdk.Connect(); // Open Event Channel var eventListener = rdk.OpenRoboDkEventChannel(); var noEvent = eventListener.WaitForEvent(); noEvent.EventType.Should().Be(EventType.NoEvent); // Test Simple Event var frame1 = rdk.AddFrame("Frame1"); var itemMovedEvent = eventListener.WaitForEvent(); itemMovedEvent.EventType.Should().Be(EventType.ItemMovedPose); itemMovedEvent.Item.Name().Should().Be("Frame1"); // The RoboDK link must be set to the RoboDK API instance itemMovedEvent.Item.RDK().RoboDKClientPort.Should().Be(rdk.RoboDKClientPort); // Open a second event channel var eventListener2 = rdk.OpenRoboDkEventChannel(); var frame2 = rdk.AddFrame("Frame2"); var eventOnChannel1 = eventListener.WaitForEvent(); var eventOnChannel2 = eventListener2.WaitForEvent(); eventOnChannel1.EventType.Should().Be(EventType.ItemMovedPose); eventOnChannel1.Item.Name().Should().Be("Frame2"); eventOnChannel2.EventType.Should().Be(EventType.ItemMovedPose); eventOnChannel2.Item.Name().Should().Be("Frame2"); eventOnChannel1.Item.RDK().RoboDKClientPort.Should().Be(rdk.RoboDKClientPort); eventOnChannel2.Item.RDK().RoboDKClientPort.Should().Be(rdk.RoboDKClientPort); // After closing an event channel we should get an exception when calling WaitForEvent eventListener.Close(); var whenAction = new Action(() => eventListener.WaitForEvent()); whenAction.Should().Throw <ObjectDisposedException>(); }
public void Test_WhenStartingOnUsedActiveSocketThenNoConnectionAndRoboDkNotStarted() { var port = 56252; while (!RoboDK.IsTcpPortFree(port)) { port++; } using (var s = new SocketHelper()) { s.OpenServerAndClient(port); RoboDK.IsTcpPortFree(s.ServerPort).Should().BeFalse(); RoboDK.IsTcpPortFree(s.ClientPort).Should().BeFalse(); var rdk = new RoboDK { StartNewInstance = true, RoboDKServerStartPort = port, }; rdk.Connect().Should().BeFalse(); rdk.Connected().Should().BeFalse(); rdk.Process.Should().NotBeNull(); rdk.Process.HasExited.Should().BeTrue(); Process.GetProcessesByName("RoboDK").Should().BeEmpty(); rdk.Connect().Should().BeFalse(); rdk.Connected().Should().BeFalse(); rdk.Process.Should().NotBeNull(); rdk.Process.HasExited.Should().BeTrue(); Process.GetProcessesByName("RoboDK").Should().BeEmpty(); rdk.Invoking(r => r.CloseRoboDK()) .Should().Throw <RdkException>(); } }
private void RobotBStoreParts(object obj) { RoboDK RDK = new RoboDK("127.0.0.1"); int APPROACH = 100; RoboDK.Item robot = RDK.GetItem("UR10 B", RoboDK.ITEM_TYPE_ROBOT); RoboDK.Item tool = RDK.GetItem("GripperB", RoboDK.ITEM_TYPE_TOOL); RoboDK.Item frame_pallet = RDK.GetItem("PalletB", RoboDK.ITEM_TYPE_FRAME); RoboDK.Item frame_conv = RDK.GetItem("ConveyorReference", RoboDK.ITEM_TYPE_FRAME); RoboDK.Item frame_conv_moving = RDK.GetItem("MovingRef", RoboDK.ITEM_TYPE_FRAME); // 获取目标点 RoboDK.Item target_pallet_safe = RDK.GetItem("PalletApproachB", RoboDK.ITEM_TYPE_TARGET); RoboDK.Item target_conv_safe = RDK.GetItem("ConvApproachB", RoboDK.ITEM_TYPE_TARGET); RoboDK.Item target_conv = RDK.GetItem("Get Conveyor", RoboDK.ITEM_TYPE_TARGET); // 获取参数 string SizeBox = RDK.GetParam("SizeBox"); // 150,200,150 箱子大小 string SizePallet = RDK.GetParam("SizePallet"); // 5,3,3 横纵列 float[] SizeBoxXyz = SizeBox.Split(',').Select((m) => float.Parse(m.Trim())).ToArray(); // [150,200,150] int[] SizePalletXyz = SizePallet.Split(',').Select((m) => int.Parse(m.Trim())).ToArray(); // [5,3,3] float SizeBoxZ = SizeBoxXyz[2]; // 箱子的高度很重要,用来计算位置和碰撞检测的 Matrix tool_xyzrpw = tool.PoseTool().Translate(0, 0, SizeBoxZ / 2); RoboDK.Item tool_tcp = robot.AddTool(tool_xyzrpw, "TCP B"); robot.SetPoseTool(tool_tcp); for (int k = 0; k < SizePalletXyz[2]; k++) { for (int j = 0; j < SizePalletXyz[1]; j++) { for (int i = 0; i < SizePalletXyz[0]; i++) { // 计算位置 float location_x = SizeBoxXyz[0] / 2 + i * SizeBoxXyz[0]; float location_y = SizeBoxXyz[1] / 2 + j * SizeBoxXyz[1]; float location_z = SizeBoxXyz[2] / 2 + k * SizeBoxXyz[2]; robot.SetPoseFrame(frame_conv); Matrix target_conv_pose = target_conv.Pose().Translate(0, 0, -SizeBoxZ / 2); Matrix target_conv_app = target_conv_pose.Translate(0, 0, -APPROACH); robot.MoveJ(target_conv_safe); robot.MoveJ(target_conv_app); // 等待传感器信号 while (RDK.GetParam("SENSOR") == "0") { Thread.Sleep(10); } Thread.Sleep(10); //robot.MoveL(target_conv_pose); RoboDK.Item item = new RoboDK.Item(RDK, GetPartAndRemove().GetItemPtr()); robot.MoveL(target_conv_pose); item.SetParentStatic(tool); RDK.SetParam("SENSOR", "0"); Matrix matOffect = item.Pose(); robot.MoveL(target_conv_app); robot.MoveJ(target_conv_safe); robot.SetPoseFrame(frame_pallet); robot.MoveJ(target_pallet_safe); Matrix target_i = Matrix.Transl(location_x, location_y, location_z).RotX(Math.PI); robot.MoveJ(target_i.Translate(0, 0, -APPROACH - SizeBoxZ)); robot.MoveJ(target_i); item.SetParentStatic(frame_pallet); robot.MoveJ(target_i.Translate(0, 0, -APPROACH - SizeBoxZ)); robot.MoveJ(target_pallet_safe); } } } }
/// <inheritdoc /> public void NewLink() { Link = new RoboDK(); Link.Connect(); }
private void Form1_Load(object sender, EventArgs e) { roboDK = new RoboDK("127.0.0.1"); }
private void RobotAGetParts(object obj) { RoboDK RDK = new RoboDK("127.0.0.1"); int APPROACH = 100; RoboDK.Item robot = RDK.GetItem("UR10 A", RoboDK.ITEM_TYPE_ROBOT); RoboDK.Item tool = RDK.GetItem("GripperA", RoboDK.ITEM_TYPE_TOOL); RoboDK.Item frame_pallet = RDK.GetItem("PalletA", RoboDK.ITEM_TYPE_FRAME); RoboDK.Item frame_conv = RDK.GetItem("ConveyorReference", RoboDK.ITEM_TYPE_FRAME); RoboDK.Item frame_conv_moving = RDK.GetItem("MovingRef", RoboDK.ITEM_TYPE_FRAME); // 获取目标点 RoboDK.Item target_pallet_safe = RDK.GetItem("PalletApproachA", RoboDK.ITEM_TYPE_TARGET); RoboDK.Item target_conv_safe = RDK.GetItem("ConvApproachA", RoboDK.ITEM_TYPE_TARGET); RoboDK.Item target_conv = RDK.GetItem("Put Conveyor", RoboDK.ITEM_TYPE_TARGET); // 获取参数 string SizeBox = RDK.GetParam("SizeBox"); // 150,200,150 箱子大小 string SizePallet = RDK.GetParam("SizePallet"); // 5,3,3 横纵列 //RoboDK.Item SENSOR2 = RDK.GetItem("Sensor SICK WL4S2", RoboDK.ITEM_TYPE_OBJECT); //RoboDK.Item SENSOR3 = RDK.GetItem("Sensor SICK WL4S3", RoboDK.ITEM_TYPE_OBJECT); float[] SizeBoxXyz = SizeBox.Split(',').Select((m) => float.Parse(m.Trim())).ToArray(); // [150,200,150] int[] SizePalletXyz = SizePallet.Split(',').Select((m) => int.Parse(m.Trim())).ToArray(); // [5,3,3] float SizeBoxZ = SizeBoxXyz[2]; // 箱子的高度很重要,用来计算位置和碰撞检测的 Matrix tool_xyzrpw = tool.PoseTool().Translate(0, 0, SizeBoxZ / 2); RoboDK.Item tool_tcp = robot.AddTool(tool_xyzrpw, "TCP A"); robot.SetPoseTool(tool_tcp); for (int k = SizePalletXyz[2] - 1; k >= 0; k--) { for (int i = SizePalletXyz[0] - 1; i >= 0; i--) { for (int j = SizePalletXyz[1] - 1; j >= 0; j--) { // 计算位置 float location_x = SizeBoxXyz[0] / 2 + i * SizeBoxXyz[0]; float location_y = SizeBoxXyz[1] / 2 + j * SizeBoxXyz[1]; float location_z = SizeBoxXyz[2] / 2 + k * SizeBoxXyz[2]; // 从传送带抓取 robot.SetPoseFrame(frame_pallet); robot.MoveJ(target_pallet_safe); // 移动到上方的一个安全点 Matrix target_i = Matrix.Transl(location_x, location_y, location_z).RotX(Math.PI); robot.MoveJ(target_i.Translate(0, 0, -APPROACH - SizeBoxZ)); robot.MoveJ(target_i); RoboDK.Item item = RDK.GetItem("Part " + i.ToString() + j.ToString() + k.ToString()); item.SetParentStatic(tool); robot.MoveJ(target_i.Translate(0, 0, -APPROACH - SizeBoxZ)); robot.MoveJ(target_pallet_safe); // 放置到传送带上去 robot.SetPoseFrame(frame_conv); Matrix target_conv_pose = target_conv.Pose().Translate(0, 0, -SizeBoxZ / 2); Matrix target_conv_app = target_conv_pose.Translate(0, 0, -APPROACH); robot.MoveJ(target_conv_safe); // 移动到上方之前,需要先判断是否有物品阻挡 //RoboDK.Item itemStarted = GetStartedPart(); //if (itemStarted != null) //{ // while (true) // { // if (SENSOR2.Collision(itemStarted) > 0 || // SENSOR3.Collision(itemStarted) > 0) // { // continue; // } // else // { // break; // } // } //} robot.MoveJ(target_conv_app); robot.MoveL(target_conv_pose); AddPart(item); item.SetParentStatic(frame_conv_moving); robot.MoveL(target_conv_app); robot.MoveJ(target_conv_safe); } } } }
private void ConvertorControl(object obj) { RoboDK RDK = new RoboDK("127.0.0.1"); RoboDK.Item Convertor = RDK.GetItem("Conveyor Belt"); }
public void Test_ParallelRoboDKConnections() { var stopAsyncTask = false; var rdk = new RoboDK { RoboDKServerStartPort = 10000, Logfile = Path.Combine(Directory.GetCurrentDirectory(), "RoboDk.log"), DefaultSocketTimeoutMilliseconds = 20 * 1000 }; rdk.Connect(); rdk.Render(false); rdk.Command("AutoRenderDelay", 50); rdk.Command("AutoRenderDelayMax", 300); rdk.DefaultSocketTimeoutMilliseconds = 10 * 1000; List <IItem> AddStaticParts() { var parts = new List <IItem>(); var cwd = Directory.GetCurrentDirectory(); parts.Add(rdk.AddFile(Path.Combine(cwd, "TableOut.sld"))); parts.Add(rdk.AddFile(Path.Combine(cwd, "robot.robot"))); return(parts); } List <IItem> AddDynamicParts() { var parts = new List <IItem>(); var cwd = Directory.GetCurrentDirectory(); for (var n = 0; n < 10; n++) { parts.Add(rdk.AddFile(Path.Combine(cwd, "Phone Case Box.sld"))); parts.Add(rdk.AddFile(Path.Combine(cwd, "Box.sld"))); parts.Add(rdk.AddFile(Path.Combine(cwd, "Phone Case Done.sld"))); } return(parts); } // Task which opens a temporary new connection void DoTemporaryConnectionCalls(IReadOnlyCollection <IItem> staticParts) { // ReSharper disable once AccessToModifiedClosure while (!stopAsyncTask) { foreach (var staticPart in staticParts) { Thread.Sleep(1); using (var roboDkLink = new RoboDK.RoboDKLink(staticPart.RDK())) { var clonedItem = staticPart.Clone(roboDkLink.RoboDK); clonedItem.Pose(); } } } } var p = AddStaticParts(); var task = new Task(() => DoTemporaryConnectionCalls(p)); task.Start(); try { for (var i = 0; i < 20; i++) { var dynamicParts = AddDynamicParts(); rdk.Command("CollisionMap", "Off"); rdk.SetCollisionActive(CollisionCheckOptions.CollisionCheckOff); rdk.Delete(dynamicParts); } } catch (Exception ex) { Assert.Fail(ex.Message); } finally { stopAsyncTask = true; } try { task.Wait(); } catch (Exception ex) { Assert.Fail(ex.Message); } finally { rdk.CloseRoboDK(); } }
internal RoboDKEventSource(IRoboDK roboDk) { _roboDkApiConnection = (RoboDK)roboDk; _roboDkEventConnection = (RoboDK)_roboDkApiConnection.CloneRoboDkConnection(RoboDK.ConnectionType.Event); }