public static SPlatform CreateEmpty(uint numberPointsOnGround, uint numberOfInstruments, uint numberOfAxes)
            {
                var pointsArray = new SPoint3D[numberPointsOnGround].Set(SPoint3D.Default());
                var axisArray   = new SAxis[numberOfAxes].Set(SAxis.Default());
                var axisArray_m = MarshalArray(axisArray);

                var childPointers    = s_childPointerLut[axisArray_m];
                var instrumentsArray = new SInstrument[numberOfInstruments].Set(SInstrument.Default(childPointers));

                return(new SPlatform()
                {
                    m_pcPlatformId = NotSet.ToPtr(),
                    m_oPlatform2Ground = STransformation.Default(),
                    m_oBoundingBox = SBoundingBox.Default(),

                    m_nNrOfPlatformPointsOnGround = numberPointsOnGround,
                    m_poPointsOnGround = MarshalArray(pointsArray),

                    m_nNrOfPlatformInstruments = numberOfInstruments,
                    m_poPlatformInstruments = MarshalArray(instrumentsArray),

                    m_nNrOfPlatformAxes = numberOfAxes,
                    m_poPlatformAxes = axisArray_m
                });
            }
Example #2
0
    public double getAxis(Joy joy, SAxis axis)
    {
        if (axis.axis == 0 || Math.Abs(axis.axis) > joy.axes.Length)
        {
            ROS.Error("Axis " + axis.axis + " out of range, joy has " + joy.axes.Length + " axes");
            return(0);
        }

        double output = Math.Abs(axis.axis) / axis.axis * joy.axes[Math.Abs(axis.axis) - 1] * axis.factor + axis.offset;

        // TODO keep or remove deadzone? may not be needed
        // if (Math.Abs(output) < axis.max_ * 0.2)
        // {
        //   output = 0.0;
        // }

        return(output);
    }