generated from wessel/boilerplate
42 lines
1.6 KiB
Markdown
42 lines
1.6 KiB
Markdown
# DatabaseHandlerNode (`assignments::three::g2_2025_database_node`)
|
|
|
|
The `DatabaseHandlerNode` subscribes to position and velocity topics and stores the data in a
|
|
PostgreSQL database via the `DatabaseManager`.
|
|
|
|
## Implementation Details
|
|
|
|
**Parameters**
|
|
|
|
| Parameter | Type | Default | Description |
|
|
|-----------|------|---------|-------------|
|
|
| `save_position_data` | bool | true | Enable storage of position |
|
|
| `save_velocity_data` | bool | true | Enable storage of velocity |
|
|
|
|
**Constructor**
|
|
```cpp
|
|
DatabaseHandlerNode()
|
|
```
|
|
- Initializes ROS2 node with name `database_handler_node`
|
|
- Creates subscriptions to `estimated_position` and/or `estimated_velocity` based on parameter configuration
|
|
|
|
## Functions
|
|
|
|
**`void position_callback(const geometry_msgs::msg::Pose2D::SharedPtr msg)`**
|
|
- Primary callback invoked whenever a position message is received
|
|
- Forwards: x, y, and theta to `DatabaseManager::store_position_data`
|
|
- Throttled warning (5 second interval) on storage failures
|
|
|
|
**`void velocity_callback(const geometry_msgs::msg::Twist::SharedPtr msg)`**
|
|
- Primary callback invoked whenever a velocity message is received
|
|
- Forwards: linear velocity (x, y, z) and angular velocity (z) to `DatabaseManager::store_velocity_data`
|
|
- Throttled warning (5 second interval) on storage failures
|
|
|
|
## ROS2 Interface
|
|
|
|
**Subscriptions**
|
|
- `estimated_position` (geometry_msgs/msg/Pose2D)
|
|
- Receives calculated position estimates (only subscribed if `save_position_data=true`)
|
|
|
|
- `estimated_velocity` (geometry_msgs/msg/Twist)
|
|
- Receives calculated velocity estimates (only subscribed if `save_velocity_data=true`)
|