2018 Robots:

We redesigned our robots from scratch from other years. This year we designed and modelled the robot in Fusion 360 and Eagle and then cut out the part/ordered circuit boards for the robots. Some key differences from the 2017 robots are:

  • Dribbler mechanism
  • Kicker
  • Custom circuit boards
    • The main hub board
    • The bottom hub board
    • The side colour sensor boards
    • The kicker board
  • Various sensors and components
  • Code
    • 4-wheel omni drive code
    • Compass calibration and interpretation
    • Inter-processor communication

Below is a video of the construction of our robots for the 2018 competition.

The Dribbler:

Our dribbler has some notable features, these include:

  • A damper
  • The ability to pivot
  • The roller
  • A lower roller.

These all contributed to make a highly effective dribbler.

The damper is 100mm long and is filled with 1300cst silicon oil.

The pivot point is a shaft bolted onto the robot, and the mainframe goes onto the shaft on bearings.

The roller is an M6 steel rod with 2 aluminium spacers attacked with Loctite 680. Onto these was placed some silicon tube to add significantly more grip. It is worth mentioning that the spacers were shaped and placed in a way to allow it to touch the ball in 2 spots, adding extra grip.

A lower roller is used to reduce friction between the ball and ground. It was made of 6mm steel and mounted on bearings.

The Kicker:

  • Solenoid
  • Steel plunger
  • Kicker plate,
  • Rubber band
  • End stabilisation plate
  • Power supply

The solenoid is made of 4 layers of 18 AWG wire, around 50mm long.

The plunger is an M9.5 steel rod with an acetal resin head.

The kicker plate is made of 3mm aluminium plate stuck to 5mm acrylic.

There is a plate on the end of plunger which makes the kicker plate unable to turn and acts as a stop.

The plunger is tensioned by a rubber band.

The solenoid is power by a 50V 10,000µF capacitor @ 44V and is operated by a 30V 30A relay.

The kicker was designed in Fusion 360 and the parts were then cut out on a CNC mill or on a lathe.

Circuit Boards:

We decided to use custom circuit boards rather than the DIY perf board. That we previously used, as the circuit boards allow us to fit more components into a smaller space. This meant that we could we could fit 5 motor drivers in an area of only 30 cm2. We designed the circuit boards in Autodesk eagle and its fusion 360 integration to improve our workflow.

We are using 12 custom circuit boards on our robots. 4 colour sensor boards, 5 motor capacitor boards, 1 button board, 1 main board and 1 kicker board.

The colour sensor boards contain a total of 7 tcs3200 sensor boards and 3 ultrasonic distance sensors, and acts as an interconnector for the colour sensors, ultrasonic distance sensors and Arduino Nano used processing data and communication.

The main board is used to do processing, voltage regulation, change direction and speed of the motors using PWM. The voltage spikes generated by the inductive load are evened out using a RC snubber and flyback diodes. The main board also has fuse sockets to protect against overcurrent. We have used 2 0.1-ohm resistors in series as current shunts to measure the current.

The kicker board has a capacitor and a voltage regulator. The voltage regulator raises the voltage to 40v which then charges the capacitor. The capacitor acts as a buffer and allows the solenoid to draw a very large current, that would be too large for the voltage regulator to handle by itself.

The motor capacitor boards are used to minimize the interference generated by the motors.

The button board has got 4 buttons, one switch bank and 10 10k resistors and is used to control various parts of the robot.

Key new minor components:

A laser ranger finder was added to the front of the robot to be able to see robots in front of it. The battery was changed to a 4S 1,600mAh Turnigy LiPo battery for our robots. There is 7 colour sensors and 3 ultrasonics in the robot. We are using different motor drivers and various other very minor components.

Code:

4 Wheel Omni Drive Code:

It was decided to write an all direction drive code (drive at any angle) we also added rotation. This was done by comparing the wheel angle and the target angle and get what ratio it is compared to how close it is to the target angle. The direction was then decided by what the wheel angle is relative to the target angle to move in the appropriate direction.

Rotation was accomplished by merging a rotate on the spot with a move in given to allow the robot to drive in the given direction and rotate at the same time. E.g. if you want it to rotate at 50% then the drive would be multiplied by 0.5 then added to rotate on the spot multiplied by 0.5.

Compass Calibration:

Compass calibration is particularly important for accurate reading on a compass. It is common for a compass to only display 90° of the full reading which in that case is unusable. There are 2 types of interference hard and soft iron interface.

Hard Iron Calibration:

  • Hard iron calibration is a type of calibration that fixes a magnetic field offset. (see calibration example diagrams)
  • The standard method for removing hard iron interference is:
  1. Find the min and max of a set of data point in each axis.
  2. Add the min and max and divide by 2 for each axis.
  3. Take this value and subtract it off any new incoming data.
  4. The new calibrated data will then be centralised around (0,0) as in the after calibration scatter graph.

Soft Iron Calibration:

  • Soft iron calibration is used when the data does not form a sphere and rather an elliptical shape. It is performed after hard iron calibration.
  • It is normally performed by calculating the width and height of the ellipse. This can be done by subtract the minimum value off the maximum value for each given axis.
  • Each axis is then scaled to a constant in this case 100.
    • e.g. if the height is 150 then we calculate what percentage we need to scale it down. So 100/150 or 2/3rds. We can the multiply the incoming data by this number to scale it to the correct size.

List of 2018 components:

  • Top level:
    • 35A rocker switch
    • 1 x Arduino pro mini (3.3v, 8Mhz)
    • 1 x Arduino Nano (ATmega328)
    • 1 x custom button board:
      • 6 switch integrated circuit
      • 4 x tactile buttons
      • 10kΩ pull-up resistors
    • Voltage sensor for the lipo battery
    • Mounting bracket for:
      • Pixy CMUcam5
      • Compass
      • button board
      • voltage sensor
      • pro mini
      • Arduino Nano
      • 9v regulator
      • 2 x 1A fuse holders
    • Goal ring
      • 2 layers of 5mm acrylic for protective goal ring
      • 2 x 92mm poles ¼ inch in diameter
      • 4 x 95mm poles ¼ inch in diameter
    • VL53L0X lidar module
    • Pixy CMUcam5 camera
    • HMC5883L Compass
    • Dribbler Assembly:
      • 2 x Metal frames
      • 34900 Johnson motor
      • Damper (100mm filled with 1300cst silicon oil)
      • 2 x F695ZZ bearings
      • 4 x M105ZZ bearings
      • 3 x 62mm support poles
      • 2 x pivot brackets for top assembly
      • 2 x brackets for holding low bearings
      • 2 0.6 module gears following the ratio 12:29 or reduction ratio of around 2.42
      • 2 silicon rollers on aluminium centres
    • 4S 1,600mah Turnigy Li-Po battery
    • Main board circuit:
      • 5 x L6203 Full-Bridge Motor Drivers
      • 1 x XL4005 Buck step down converter (for 5v line)
      • 2 x BSS138 Transistors for i2c voltage shifting
      • 10 x fly-back diodes
      • 10 x Current Shunt resistors
      • 5 x RC snubber circuits for fly-back protection
        • 10 ohm resistor
        • 22 nF capacitor
      • 1 x ESP32
      • 4 x various valued mini fuses
      • 5 x push button 2 wire cage terminal block
      • 1 x 2 connector cage screw terminal
      • Pin headers
      • 12 AWG wire (30 amp @ 90°C)
  • Bottom Level:
    • Kicker:
      • 1 x Kicker driver board
        • 1 x 2 connector cage screw terminal
        • 1 x XL6009 boost converter (up to 48v)
        • 1 x Resistor for current limiting (33Ω, 3w)
        • 1 x 10,000µf, 50v capacitor
        • Custom made circuit board
      • Relay 30A 30V (over voltage is fine as it is not continuous)
      • Solenoid
        • 10mm diameter steel rod 55mm long attack to acetal piece
        • Acetal piece 25mm diameter 4mm thick with 4 M3 holes and a 10mm acetal shaft connected.
        • 3mm aluminium plate
        • 5mm acrylic plate
        • End stabiliser to stop plate rotating
        • Rubber band for return mechanism
        • 4-layer 40mm long coil of AWG 18 copper enamelled wire
        • Core for wire made of 25mm diameter acetal rod
      • 2 x 22mm clamp
    • 4 x RS- 365S motor (17v)
    • 4 x 23:1 second hand Pittman planetary gearbox
    • 4 x Custom Wheels:
      • 5mm acrylic body for roller shafts (CNCed)
      • 13 x 8mm M3 Steel rods
      • 13 x V groove bearing
      • 3mm acrylic cover (CNCed)
      • 3 x 12mm M3 high tensile bolts
      • 3 x 8mm M3 grubscrews
    • 8 x 22mm clamp
    • 3 x colour sensor side circuit board
      • 2 x TCS320 colour sensor
      • A HC-SR04
      • Pin headers
    • colour sensor board
      • Arduino nano (atmega 328p)
      • A TCS3200 colour sensor
      • Pin Headers
    • 3 x 5mm plastic stabilisers for HC-SR04 ultrasonic sensors