Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added batteries #209

Merged
merged 1 commit into from
Jan 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ The lighting node will publish the current lighting command directly to the MCU.
<td>D100, D150, R100, W200</td>
</tr>
<tr>
<td>Shore power Fault</td>
<td>Shore Power Fault</td>
<td>
<center>
<img
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ toc_max_heading_level: 4
| diagnostics | [diagnostics_msgs/DiagnosticArray](https://github.com/ros2/common_interfaces/blob/humble/diagnostic_msgs/msg/DiagnosticArray.msg) | Various nodes | Diagnostic messages reported by various nodes | [System Default](overview.mdx#system-default) |
| joy_teleop/cmd_vel | [geometry_msgs/Twist](https://github.com/ros2/common_interfaces/blob/humble/geometry_msgs/msg/Twist.msg) | Joy node | Velocity commands from joystick inputs | [System Default](overview.mdx#system-default) |
| joy_teleop/joy | [sensor_msgs/Joy](https://github.com/ros2/common_interfaces/blob/humble/sensor_msgs/msg/Joy.msg) | Joy node | Joystick input states | [System Default](overview.mdx#system-default) |
| platform/bms/state | [sensor_msgs/BatteryState](https://github.com/ros2/common_interfaces/blob/humble/sensor_msgs/msg/BatteryState.msg) | Battery node | System battery state | [Sensor Data](overview.mdx#sensor-data) |
| platform/cmd_lights | [clearpath_platform_msgs/Lights](https://github.com/clearpathrobotics/clearpath_msgs/blob/main/clearpath_platform_msgs/msg/Lights.msg) | User | User lighting command request | [System Default](overview.mdx#system-default) |
| platform/cmd_vel_unstamped | [geometry_msgs/Twist](https://github.com/ros2/common_interfaces/blob/humble/geometry_msgs/msg/Twist.msg) | Twist Mux node | Resulting velocity commands from twist mux | [System Default](overview.mdx#system-default) |
| platform/dynamic_joint_states | [control_msgs/DynamicJointState](https://github.com/ros-controls/control_msgs/blob/humble/control_msgs/msg/DynamicJointState.msg) | Control node | Platform dynamic joint state | [System Default](overview.mdx#system-default) |
Expand Down
320 changes: 308 additions & 12 deletions docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import W200BulkheadDefault from "/docs_versioned_docs/version-ros2humble/compone
import W200Generator from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/generator.mdx";

Every robot platform has unique structures such as versatile sensor mounting solutions, wireless charging receivers, and waterproofing enclosures; we refer to these as **attachments**.
Each robot also supports specific batteries and battery configurations.

## Joystick Controller
We support two types of controllers:
Expand All @@ -30,7 +31,302 @@ We support two types of controllers:
controller: ps4 # or logitech
```

## Batteries

Each robot platform can support different types of batteries, and in different configurations. The configuration is how
many batteries the robot has in series and parallel.A configuration of S2P1 indicates that there is one row of two batteries in series. S4P3
indicates that there are 3 parallel rows of 4 batteries in series, for a total of 12 batteries.

Some robots support "smart" batteries which have built in battery management system (BMS). If these batteries are specified, a corresponding driver node will
be launched as part of the platform service. For batteries without a BMS, the [battery state estimator](https://github.com/clearpathrobotics/clearpath_robot/blob/main/clearpath_diagnostics/clearpath_diagnostics/battery_state/battery_state_estimator)
node will be launched. This node will interpolate the state of charge of the robot from measured battery voltages.

The battery state of the platform is available on the `platform/bms/state` topic.

:::note

For systems without a BMS, the state of charge should be treated as a rough estimate. This is especially true with Lead Acid batteries.

:::


<details><summary>A200</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ES20_12C</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>20.0</td>
<td>S2P1</td>
</tr>
<tr>
<td><code>HE2613</code></td>
<td>Lithium Ion</td>
<td>25.9</td>
<td>12.8</td>
<td>S1P3<br/>S1P4</td>
</tr>
</tbody>
</table>

</p>
</details>

<details><summary>J100</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ES20_12C</code></td>
<td>Lithium Ion</td>
<td>25.9</td>
<td>12.8</td>
<td>S1P1</td>
</tr>
</tbody>
</table>

</p>
</details>

<details><summary>W200</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>U1_35</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>35.0</td>
<td>S4P3</td>
</tr>
<tr>
<td><code>NEC_ALM12V35</code></td>
<td>Lithium Ion</td>
<td>13.2</td>
<td>35.0</td>
<td>S4P3</td>
</tr>
<tr>
<td><code>VALENCE_U24_12XP</code></td>
<td>Lithium Ion</td>
<td>12.8</td>
<td>118.0</td>
<td>S4P1</td>
</tr>
<tr>
<td><code>VALENCE_U27_12XP</code></td>
<td>Lithium Ion</td>
<td>12.8</td>
<td>144.0</td>
<td>S4P1</td>
</tr>
</tbody>
</table>

</p>
</details>

<!-- TODO: Uncomment these platforms when they are supported -->

<!-- <details><summary>DD100</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>TLV1222</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>22.0</td>
<td>S1P1</td>
</tr>
<tr>
<td><code>PH3054</code></td>
<td>Lithium Ion</td>
<td>14.4</td>
<td>33.6</td>
<td>S1P1</td>
</tr>
</tbody>
</table>

</p>
</details>

<details><summary>DO100</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>TLV1222</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>22.0</td>
<td>S1P1<br/>S1P2<br/>S1P3</td>
</tr>
<tr>
<td><code>PH3054</code></td>
<td>Lithium Ion</td>
<td>14.4</td>
<td>33.6</td>
<td>S1P1<br/>S1P2<br/>S1P3</td>
</tr>
</tbody>
</table>

</p>
</details>

<details><summary>DD150</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>TLV1222</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>22.0</td>
<td>S1P1</td>
</tr>
<tr>
<td><code>RB20</code></td>
<td>Lithium Ion</td>
<td>12.8</td>
<td>20.0</td>
<td>S1P1</td>
</tr>
</tbody>
</table>

</p>
</details>

<details><summary>DO150</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>TLV1222</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>22.0</td>
<td>S1P1<br/>S1P2<br/>S1P3</td>
</tr>
<tr>
<td><code>RB20</code></td>
<td>Lithium Ion</td>
<td>12.8</td>
<td>20.0</td>
<td>S1P1<br/>S1P2<br/>S1P3</td>
</tr>
</tbody>
</table>

</p>
</details>

<details><summary>R100</summary>
<p>

<table>
<thead>
<tr>
<th>Battery</th>
<th>Chemistry</th>
<th>Nominal Voltage (V)</th>
<th>Capacity (Ah)</th>
<th>Configurations</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>8A31DTM</code></td>
<td>Lead Acid</td>
<td>12.0</td>
<td>105.0</td>
<td>S2P1</td>
</tr>
</tbody>
</table>

</p>
</details> -->


## Attachments

Each robot platform has its own unique set of attachments. To facilitate customization, any attachment from any robot platform can be added on any other robot platform.

There is a default `parent` links at which these attachments are added; however, the `parent` link can be change to wherever you'd want the attachment to be placed.
Expand All @@ -41,7 +337,7 @@ Each attachment requires two parameters. The `name` parameter that will define t

Some attachment types will have the same `type` parameter across different platforms. In that case, if you'd like to use the attachment that belongs to a specific platform, you will need to prefix the `type` parameter with the platform that it belongs to. For example, `top_plate` would become `a200.top_plate`. If no prefix is set, then the platform defined in the `serial_number` will be used.

### Husky A200
### Husky A200 {#attachments-a200}

#### Bumper
The A200 can have bumpers of a variable length. By setting the `extension` parameter, the bumper can be extended if required.
Expand Down Expand Up @@ -80,46 +376,46 @@ The A200 has two types of sensor archs which are used to mount sensors from a va
<A200SensorArch510/>
<br/>

## Jackal J100 {#attachments-j100}
### Jackal J100 {#attachments-j100}

### Fenders
#### Fenders
There are two types of fenders that can be equipped on the **J100** platform.

#### Default Fenders
##### Default Fenders
The **default** fenders are the standard fenders that come with every **J100**.

The front and rear fender entries are indepenent from each other such that they can be modified independently.
<J100FenderDefault/>
<br/>

#### Sensor Fenders
##### Sensor Fenders
The **default** fenders are the standard fenders that come with every **J100**.

The front and rear fender entries are indepenent from each other such that they can be modified independently.
<J100FenderSensor/>
<br/>

### Top Plate
#### Top Plate
The Jackal only has one type of top plate. The ark enclosure.

#### Ark Enclosure
##### Ark Enclosure
<J100TopPlateArkEnclosure/>
<br/>

## Warthog W200 {#attachments-w200}
### Warthog W200 {#attachments-w200}

### Bulkhead
#### Bulkhead
The Warthog bulkhead is used to cover payloads and to add a second surface to which to attach more payloads.

#### Default {#default-bulkhead}
##### Default {#default-bulkhead}
<W200BulkheadDefault/>
<br/>

#### Arm Mount {#arm-mount-bulkhead}
##### Arm Mount {#arm-mount-bulkhead}
<W200BulkheadArmMount/>
<br/>

### Arm Mount
#### Arm Mount
If instead of using the **bulkhead** to add an arm mount. We can add the arm mount independently using the following entry.

<W200ArmMount/>
Expand Down