Skip to content

Latest commit

 

History

History
173 lines (142 loc) · 4.88 KB

when-to-invert.md

File metadata and controls

173 lines (142 loc) · 4.88 KB

When to invert?

Swerve Modules and Swerve Drives require some inversions to get working properly. The goal is to get everything to increase counter clockwise positive!

{% hint style="warning" %} When your gears are grinding on the ground but not while on blocks and your wheels are facing and spinning in the right directions you may need to tune PID instead of inverting! {% endhint %}

{% hint style="warning" %} IF you are inverted incorrectly your modules or robot may spin "out-of-control" {% endhint %}

Swerve Motors

When you spin your motor counterclockwise the value in Shuffleboard/NetworkTables swerve/modules/.../Raw Absolute Encoder and swerve/modules/.../Raw Angle Encoder should both increase.

How to open Shuffleboard

  1. Open shuffleboard.
  2. Take note of the swerve/modules/.../Raw Absolute Encoder value's and use them for absoluteEncoderOffset in the module JSONs.

Spin your module counterclockwise

{% hint style="danger" %} Spin your modules COUNTERclockwise from the top down view. {% endhint %}

Purple shows the way your bevels should be facing (photo by Team 2876)

The swerve drive should be on it's side or otherwise lifted. Your swerve module bevels must be facing the left like shown. To rotate the swerve modules they must be rotated counterclockwise like shown.

If the swerve/modules/.../Raw Angle Encoder is decreasing...

Invert your angle motor for every module that is decreasing!

{
  "drive": {
    "type": "sparkmax",
    "id": 2,
    "canbus": null
  },
  "angle": {
    "type": "sparkmax",
    "id": 1,
    "canbus": null
  },
  "encoder": {
    "type": "cancoder",
    "id": 10,
    "canbus": null
  },
  "inverted": {
    "drive": false,
    "angle": true
  },
  "absoluteEncoderInverted": false,
  "absoluteEncoderOffset": -50.977,
  "location": {
    "front": 12,
    "left": -12
  }
}

If the swerve/modules/.../Raw Absolute Encoder is decreasing...

Invert the absolute encoder in the module JSON with absoluteEncoderInverted as shown here.

{
  "drive": {
    "type": "sparkmax",
    "id": 2,
    "canbus": null
  },
  "angle": {
    "type": "sparkmax",
    "id": 1,
    "canbus": null
  },
  "encoder": {
    "type": "cancoder",
    "id": 10,
    "canbus": null
  },
  "inverted": {
    "drive": false,
    "angle": false
  },
  "absoluteEncoderInverted": true,
  "absoluteEncoderOffset": -50.977,
  "location": {
    "front": 12,
    "left": -12
  }
}

Spin your wheel counterclockwise

{% hint style="warning" %} Sometimes you may need to invert these if when you rotate the robot changes it's front/back while driving in field-oriented mode. {% endhint %}

{% hint style="danger" %}

Odometry mismatch

Whenever your robot is driving backwards in odometry and forwards in real life while maintaining that a spin-in-place generates Counter-Clockwise-Positive movement you may need to apply this patch.

You must add 180 to every absoluteEncoderOffset in every module file to correct this behavior. {% endhint %}

If the swerve/modules/.../Raw Drive Encoder is decreasing...

Invert your drive motor for every module that is decreasing!

{
  "drive": {
    "type": "sparkmax",
    "id": 2,
    "canbus": null
  },
  "angle": {
    "type": "sparkmax",
    "id": 1,
    "canbus": null
  },
  "encoder": {
    "type": "cancoder",
    "id": 10,
    "canbus": null
  },
  "inverted": {
    "drive": true,
    "angle": false
  },
  "absoluteEncoderInverted": false,
  "absoluteEncoderOffset": -50.977,
  "location": {
    "front": 12,
    "left": -12
  }
}

Rotate your robot counterclockwise

{% hint style="danger" %} Keep in mind that your robot spinning counter clockwise should look like this when the wheels are powered! You WILL need to change your IDs for each module file if they don't. {% endhint %}

ID's relocated in swerve module files

You should notice the Raw IMU Yaw field in Shuffleboard increase. If it doesn't you need to invert your IMU like this.

{
  "imu": {
    "type": "pigeon2",
    "id": 13,
    "canbus": "canivore"
  },
  "invertedIMU": true,
  "modules": [
    "frontleft.json",
    "frontright.json",
    "backleft.json",
    "backright.json"
  ]
}