# Electronics Overview

```{figure} ../../_static/images/kangaroo_full_overview.png
:name: kgr-overview
Electrical overview of Kangaroo robot, describing power and communication topology.
```

The diagram illustrates the full electrical architecture of Kangaroo, showing how all motor control boards are interconnected across the robot's body. Three bus types are represented: the **EtherCAT network** (red), which connects all actuator slaves to the Control PC; the **power distribution** (black), which routes the main 63 V bus to every board; and the **STO (Safe Torque Off) line** (blue), which provides a hardware-level safety cut to all drives simultaneously. The EtherCAT network uses a **star topology**, with five independent chains branching from the torso in the following order: **right leg**, **left leg**, **right arm**, **pelvis**, and **left arm**. This arrangement mirrors the robot's physical layout and allows each limb chain to be traced and diagnosed independently.
In the case that the arms are not installed, the electrical overview diagram is still valid, the difference may be in the order of the salves ars the chains will be ordered:  **right leg**, **left leg**, and **pelvis**.

```{figure} ../../_static/images/kangaroo_torso_overview.png
:name: kgr-torso-overview
Electrical overview of Kangaroo torso system, showing all the electrical components and their connection.
```

This schematic details all electronic components housed inside the Kangaroo torso and their interconnections. The central power routing board (**PR27B04**) distributes battery power (63 V) to the motor control boards, the battery charger input, and the user panel connectors. An **EtherCAT juntion** (Omron GX-JC06) provides the EtherCAT star topology connections, with its port 1 connected to the PC where the EtherCAT master runs. A wireless router and swith provide internal LAN for control and multimedia PCs ad welll as wireless access point and WiFi client. The user panel exposes the main power switch, emergency stop button, and external connectors, while internal cooling fans manage thermal dissipation. The **CB70R01** connection boards interface the torso and arm SEA actuators to the EtherCAT bus and power rails. This diagram is the primary reference for tracing signal and power paths during maintenance or troubleshooting of torso-mounted hardware.

```{figure} ../../_static/images/kangaroo_mc_boards.png
:name: kgr-mc-boards
Motor control boards used in Kangaroo.
```

Kangaroo uses three distinct actuator module variants, each integrating motor drive electronics with the sensors required for its actuation type:

- **Linear Actuator Module** — used for hip and ankle joints. Combines the **MC23R02** motor drive (19-bit motor encoder) with the **CB73R02** force sensing board (13-bit ADC at 2 kHz) for closed-loop force control on the linear actuator rod.
- **Leg Length Actuator Module** — dedicated to the leg extension actuator. Features the **MC24R02** drive with a 16-bit absolute actuator encoder for precise stroke measurement, plus the **SB23R01** (14-bit motor encoder) and **SB25R04** force ADC board.
- **SEA Rotary Actuator Module** — used for pelvis and arm joints. The **MC23R04** board integrates dual encoders (19-bit for the motor, 18-bit on the output after the elastic element) enabling torque estimation through deflection measurement, paired with the **CB68R04** connection board.

### EtherCAT and kinematic topology

The EtherCAT topology is determined by the order of the slaves in the network which may change depending on the robot configurations (with or without arms, with or without FT sensors at the feet).
The position 0 is the PC EtherCAT master, then the order of limbs connected to the network is right leg, left leg, pelvis, right arm and left arm.

<table style="border-collapse: collapse; width: 100%;">
  <thead>
    <tr>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">RT device motor name</th>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">EC Slave position — No feet FT</th>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">EC Slave position — With feet FT</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td colspan="3" style="background-color: #dbeafe; color: #1e40af; font-weight: bold; border: 1px solid #93c5fd; padding: 5px 10px;">Right leg chain</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_right_1_motor</td>
      <td colspan="2" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_right_2_motor</td>
      <td colspan="2" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">2</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_right_3_motor</td>
      <td colspan="2" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">3</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_right_4_motor</td>
      <td colspan="2" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">4</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_right_5_motor</td>
      <td colspan="2" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">5</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_right_leg_length_motor</td>
      <td colspan="2" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">6</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">ankle_ft_right</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">7 (optional)</td>
    </tr>
    <tr>
      <td colspan="3" style="background-color: #dcfce7; color: #166534; font-weight: bold; border: 1px solid #86efac; padding: 5px 10px;">Left leg chain</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_left_1_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">7</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">8</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_left_3_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">8</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">9</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_left_2_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">9</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">10</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_left_5_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">10</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">11</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_left_4_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">11</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">12</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">leg_left_leg_length_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">12</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">13</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">ankle_ft_left</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">14 (optional)</td>
    </tr>
    <tr>
      <td colspan="3" style="background-color: #ede9fe; color: #5b21b6; font-weight: bold; border: 1px solid #c4b5fd; padding: 5px 10px;">Pelvis chain</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">pelvis_1_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">14</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">16</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">pelvis_2_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">15</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">17</td>
    </tr>
  </tbody>
</table>


<p><em><strong>↑+1</strong> — slave position = slave position of the row above in the same column, plus 1. Shaded cells (<span style="background-color:#e5e7eb; color:#6b7280; padding: 1px 5px; border-radius: 3px;">—</span>) indicate the motor is not part of that configuration's EtherCAT chain.</em></p>

<table style="border-collapse: collapse; width: 100%;">
  <thead>
    <tr>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">RT device motor name</th>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">EC Slave position — 4 DoF Arm</th>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">EC Slave position — 5 DoF Arm</th>
      <th style="border: 1px solid #ccc; text-align: center; padding: 6px 10px; background-color: #f3f4f6;">EC Slave position — 7 DoF Arm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td colspan="4" style="background-color: #dbeafe; color: #1e40af; font-weight: bold; border: 1px solid #93c5fd; padding: 5px 10px;">Right arm chain</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_1_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">pelvis_2_motor +1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_2_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_3_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_4_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_5_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_6_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_right_7_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">wrist_ft_right</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1 (optional)</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">gripper_right_finger_actuator</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td colspan="4" style="background-color: #dcfce7; color: #166534; font-weight: bold; border: 1px solid #86efac; padding: 5px 10px;">Left arm chain</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_1_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">arm_right_4_motor +1</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">arm_right_5_motor +1</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">gripper_right_finger_actuator +1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_2_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_3_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_4_motor</td>
      <td colspan="3" style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_5_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_6_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">arm_left_7_motor</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">wrist_ft_left</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1 (optional)</td>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; padding: 4px 8px;">gripper_left_finger_actuator</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px; background-color: #e5e7eb; color: #6b7280;">—</td>
      <td style="border: 1px solid #ccc; text-align: center; padding: 4px 8px;">↑+1</td>
    </tr>
  </tbody>
</table>



