// extenstions to convert C# Xamla.Robotics.Types to Python Xamla.Robotics.Types public static PyObject ToPython(this JointSet obj) { PyObject jointNames = PyConvert.ToPyObject(obj.ToArray()); using (Py.GIL()) { return(pyXamlaMotionTypes.JointSet(jointNames)); } }
public static PyObject ToPython(this JointValues obj) { PyObject jointSet = obj.JointSet.ToPython(); PyObject values = PyConvert.ToPyObject(obj.Values); using (Py.GIL()) { return(pyXamlaMotionTypes.JointValues(jointSet, values)); } }
public static PyObject ToPython(this JointStates obj) { var positions = PyConvert.ToPyObject(obj.Positions); var velocities = PyConvert.ToPyObject(obj.Velocities); var efforts = PyConvert.ToPyObject(obj.Efforts); using (Py.GIL()) { return(pyXamlaMotionTypes.JointStates(positions, velocities, efforts)); } }
public static PyObject ToPython(this TimeSpan obj) { var days = PyConvert.ToPyObject(obj.Days); var seconds = PyConvert.ToPyObject(obj.Hours * 3600 + obj.Minutes * 60 + obj.Seconds); var microseconds = PyConvert.ToPyObject(obj.Milliseconds * 1000); using (Py.GIL()) { return(pyDateTime.timedelta(days: days, seconds: seconds, microseconds: microseconds)); } }
public static PyObject ToPython(this CollisionPrimitive obj) { var kindInt = PyConvert.ToPyObject((int)obj.Kind); var parameters = PyConvert.ToPyObject(obj.Parameters); var pose = PyConvert.ToPyObject(obj.Pose); using (Py.GIL()) { var kind = pyXamlaMotionTypes.CollisionPrimitiveKind(kindInt); return(pyXamlaMotionTypes.CollisionPrimitive(kind, parameters, pose)); } }
public static PyObject ToPython(this CartesianPath obj) { using (Py.GIL()) { var poses = new PyList(); foreach (var p in obj) { poses.Append(PyConvert.ToPyObject(p)); } return(pyXamlaMotionTypes.CartesianPath(poses)); } }
public static PyObject ToPython(this JointTrajectoryPoint obj) { var timeFromStart = PyConvert.ToPyObject(obj.TimeFromStart); var positions = PyConvert.ToPyObject(obj.Positions); var velocities = PyConvert.ToPyObject(obj.Velocities); var accelerations = PyConvert.ToPyObject(obj.Accelerations); var efforts = PyConvert.ToPyObject(obj.Effort); using (Py.GIL()) { return(pyXamlaMotionTypes.JointTrajectoryPoint(timeFromStart, positions, velocities, accelerations, efforts)); } }
public static PyObject ToPython(this CollisionObject obj) { var frame = PyConvert.ToPyObject(obj.Frame); using (Py.GIL()) { var primitives = new PyList(); foreach (var p in obj.Primitives) { primitives.Append(PyConvert.ToPyObject(p)); } return(pyXamlaMotionTypes.CollisionObject(primitives, frame)); } }
public static PyObject ToPython(this JointPath obj) { var jointSet = PyConvert.ToPyObject(obj.JointSet); using (Py.GIL()) { var jointValues = new PyList(); foreach (var v in obj) { jointValues.Append(PyConvert.ToPyObject(v)); } return(pyXamlaMotionTypes.JointPath(jointSet, jointValues)); } }
public static PyObject ToPython(this JointTrajectory obj) { var jointSet = PyConvert.ToPyObject(obj.JointSet); using (Py.GIL()) { var points = new PyList(); foreach (var p in obj) { points.Append(PyConvert.ToPyObject(p)); } return(pyXamlaMotionTypes.JointTrajectory(jointSet, points)); } }
private PyObject[] CreateArguments(object[] inputs, int firstArgIndex) { var args = new PyObject[argumentPins.Count]; if (firstArgIndex + args.Length != inputs.Length) { throw new Exception("Invalid argument count"); } for (int i = 0; i < args.Length; i++) { var x = inputs[firstArgIndex + i]; args[i] = PyConvert.ToPyObject(x); } return(args); }
public static PyObject ToPython(this PlanParameters obj) { var nullObject = new object(); nullObject = null; var none = nullObject.ToPython(); var moveGroupName = PyConvert.ToPyObject(obj.MoveGroupName); var jointSet = PyConvert.ToPyObject(obj.JointSet); var maxVelocity = PyConvert.ToPyObject(obj.MaxVelocity); var maxAcceleration = PyConvert.ToPyObject(obj.MaxAcceleration); var sampleResolution = PyConvert.ToPyObject(obj.SampleResolution); var collisionCheck = PyConvert.ToPyObject(obj.CollisionCheck); var maxDeviation = PyConvert.ToPyObject(obj.MaxDeviation); using (Py.GIL()) { return(pyXamlaMotionTypes.PlanParameters.from_arguments(moveGroupName, jointSet, maxVelocity, maxAcceleration, none, none, sample_resolution: sampleResolution, collisionCheck: collisionCheck, max_devitation: maxDeviation)); } }
public object Run( [InputPin(Name = "caption", Description = "The caption of this module", PropertyMode = PropertyMode.Always, Editor = WellKnownEditors.SingleLineText)] string caption, [InputPin(Name = "expression", Description = "The Python expression", PropertyMode = PropertyMode.Always, Editor = WellKnownEditors.SingleLineText)] string expression, [InputPin(Name = "useMainThread", Description = "Whether to run the code on the Python main thread", PropertyMode = PropertyMode.Always, Editor = WellKnownEditors.CheckBox, DefaultValue = "false")] bool useMainThread, [InputPin(Name = "input", Description = "These are the inputs for the expression", PropertyMode = PropertyMode.Never)] params object[] inputs ) { object evalBlock() { using (PyScope ps = Py.CreateScope()) { int i = 0; foreach (var inputPin in this.dynamicInputPin.Pins) { if (inputPin.Connections.Any()) { ps.Set(inputPin.Id, PyConvert.ToPyObject(inputs[i])); } i++; } ps.Set(dynamicInputPin.Alias + "s", inputs); PyObject evalResult = ps.Eval(expression); return(PyConvert.ToClrObject(evalResult, typeof(object))); } } if (useMainThread) { return(mainThread.EvalSync(evalBlock)); } else { using (Py.GIL()) { return(evalBlock()); } } }