Skip to content

Commit

Permalink
Merge pull request #265 from clearpathrobotics/development
Browse files Browse the repository at this point in the history
Sync to Production
  • Loading branch information
rhysfaultless-cpr authored Aug 26, 2024
2 parents 5e2bd1c + f6649ce commit 147d900
Show file tree
Hide file tree
Showing 103 changed files with 11,879 additions and 41 deletions.
105 changes: 105 additions & 0 deletions docs_outdoornav_user_manual/features/watchdogs.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
title: Watchdogs
sidebar_label: Watchdogs
sidebar_position: 7
toc_min_heading_level: 2
toc_max_heading_level: 4
---

As of version 0.14.0, the OutdoorNav software contains the ability for autonomous missions
to be interrupted if failures are detected by wtchdogs. Each UGV will come pre-loaded with
a set of watchdogs that are required for the overall safety of the system. Users are then
able to add/remove/modify watchdogs as they require for their specific application and
safety requirements. This will have a lot to do with the operational environment
and their network setup. A history of previous watchdogs that have triggered is also
available to the user for more precise debugging of when issues may have occured.

## Watchdog Types

Currently there a a set of watchdogs that have been developed. Users are unable to write
their own watchdogs at the present time.

| Watchdog Type | Description |
|----------------------------------|----------------------------------------|
| **Communication Watchdog** | A watchdog used to monitor device communication with the PC. It will monitor and trigger if there is loss of communication on devices that are connected via the ethernet (ip) or CAN bus (can) communication protocols. |
| **Heartbeat Watchdog** | A watchdog used to monitor the heartbeat topic of a device. This differs from the Communication, Node Status and Topic Data watchdogs because there may be devices that are deemed to be alive and communicating by the Node Status and Communication watchdogs but may not be publishing data on their published topic. For example some GNSS units will not publish to their topic unless they are in a clear open environment, however the heartbeat topic will still be publishing since the node is alive. |
| **Inclination Watchdog** | A watchdog used to monitor the inclination (roll and pitch) of the UGV. It will trigger if the IMU topic reports an inclination in either the roll or the pitch that exceeds the defined limits.|
| **Node Status Watchdog** | A watchdog used to monitor the status of a node. It will trigger if the node crashes or does not start up. |
| **Nodelet Status Watchdog** | A watchdog used to monitor the status of a nodelet manager and any nodelets associated with it. It will trigger if either the nodelet manager or the nodelet defined in the parameters crash or fail to start up. |
| **Num Points Watchdog** | A watchdog used to monitor the status of a LiDAR device. It is designed to trigger if there is an insufficient number of points in a PointCloud2 topic. The primary example for such a watchdog is if a customer has forgotten to remove a protective covering from the LiDAR. |
| **Odometry Covariance Watchdog** | A watchdog used to monitor reliability of the odometry data that is computed by our system. It will trigger if any of the odometry covariance thresholds have been exceeded. |
| **RTK Fix Watchdog** | A watchdog used to monitor whether or not a GNSS unit has an RTK fix. It will trigger if the device has lost RTK fix for more than the defined timeout. |
| **Topic Data Watchdog** | A watchdog used to monitor a ROS topic. It will trigger if no data has been received on the topic for more than the defined timeout. |


## Watchdogs Page

To access the watchdog page navigate to the **Menu** → **Autonomy** → **Watchdogs**.

<center>
<figure>
<img
src="/img/outdoornav_images/ui_watchdogs_page.png"
width="1000"
/>
<figcaption>Watchdogs Page</figcaption>
</figure>
</center>

On this page you will be able to see the history of triggered watchdogs, which includes
the time of day that it was triggered and the action taken by autonomy to prevent any
harmful behaviour. Users can clear the history as they see fit to reduce the number of
entries in the table.


### Add Watchdog

To add a watchdog, users can simply click the "Add Watchdog" button on the watchdog page.
This will open up a pop up where the user can enter the required information for the new watchdog.
The default parameters that need to be entered are:

- **Watchdog Name**: A semantic name for the watchdog. This name will only be used for internal
identification of the watchdog and must be unique.
- **Autonomy Action**: The action that the autonomy will perform when the watchdog
is triggered. Options are: "Stop", "Pause", "Warn". For example, if Pause is selected and the
watchdog is triggered while a mission is running, the mission will pause and wait for the user to
resume it manually.
- **Components**: A list of one or more components of outdoornav that the watchdog will
be classified under. Examples are: "ros", "navigation", "localization", "obstacle_detection".
- **Watchdog Type**: The type of watchdog that is to be created. Selecting the required watchdog
type will then prompt the user for further properties specific to the type.

<center>
<figure>
<img
src="/img/outdoornav_images/ui_add_watchdog.png"
width="500"
/>
<figcaption>Add Watchdog Pop-up</figcaption>
</figure>
</center>


### Remove Watchdog

The user can remove a specific watchdog by clicking the trash icon beside the relevant watchdog.


### Modify Watchdog

The user has the ability to modify the watchdog properties through the UI on the Watchdog page.
The watchdog can be enabled/disabled (without explicitly being removed entirely) by clicking
the checkbox beside the respective watchdog. Furthermore, if the watchdog entry is opened, the
user will be able to modify any and all of the properties of each watchdog. See below, for an
example of modifying the properties of the TopicDataWatchdog. To confirm and save the changes to
a watchdog, the user must click the "Save Changes" button.

<center>
<figure>
<img
src="/img/outdoornav_images/ui_update_watchdog.png"
width="500"
/>
<figcaption>Update TopicDataWatchdog</figcaption>
</figure>
</center>
24 changes: 24 additions & 0 deletions docs_outdoornav_user_manual/release_notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,30 @@ toc_min_heading_level: 2
toc_max_heading_level: 4
---

## 0.14.0

### New Features

- Added in the ability to connect a PS4 controller to the UI directly.
- Improved the PTZ Controls, allowing users to move via a draggable interface,
box selection or double clicking.
- [System Watchdogs](./features/watchdogs.mdx) can now be added to the UGV to
allow for safeguards to be put in place depending on the needs of the user.

### API Changes

- Added new message definitions and service calls for watchdogs

### Bug Fixes

- 2532: Wireless Connection adaptor not publishing

### Known Issues

- 1396: Robot gets temporarily stuck at start of mission when near a Waypoint
- 1844: [MPC] Maximum acceleration param doesn't appear to have any effect
- 2525: Path Previewer has issues cleaning up upon completion in mission less states

## 0.13.0

### New Features
Expand Down
33 changes: 28 additions & 5 deletions docs_outdoornav_user_manual/web_user_interface/ui_manual_mode.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,54 @@ methods that can be used to stop the moving UGV.

<center>
<figure>
<img src="/img/outdoornav_images/ui_manual_mode_page.png" />
<img src="/img/outdoornav_images/ui_manual_mode_page_0_14_0.png" />
<figcaption>Teleoperation Components</figcaption>
</figure>
</center>

1. **Error/Warning Bar:** A bar along the top of the page reporting
the error or warning status of the Assisted Teleoperation feature.
2. **Joystick:** The joystick will allow the user to move the UGV
2. **User Connections:** Shows the number of users connected to OutdoorNav.
3. **Joystick:** The joystick will allow the user to move the UGV
manually from the UI. Motion can be sent to the UGV in 360°
directions and the speed can be controlled by the distance of the
joystick from its neutral position. Four fixed direction buttons are
now present to move the UGV in purely forward/reverse directions or
clockwise/counter-clockwise. Finally, we overlay an obstacle map
on top of the joystick, representing obstacle distances from the
UGV.
3. **Speedometer:** An indicator of the UGV's current linear speed.
4. **Sensitivity Scale:** A UGV-specific scale that controls the
4. **Speedometer:** An indicator of the UGV's current linear speed.
5. **Sensitivity Scale:** A UGV-specific scale that controls the
maximum allowable UGV velocities at each level. The default maximum
linear velocity is 1.0 meters per second and the maximum angular
velocity is 0.5 radians per second. These can be changed in the
[General Settings](./ui_overview.mdx#config-general-settings) page.
The scale levels are 100%, 80%, 50% and 20%, with the default set
to 80%.
5. **Teleop Assist Toggle:** The "Teleop Assist" toggle can be used to
6. **Teleop Assist Toggle:** The "Teleop Assist" toggle can be used to
enable/disable the Assisted Teleoperation feature.
7. **UI Lockout:** The lockout toggle that will prevent the Joystick from
sending commands to the UGV. The purpose of this is to help prevent
unwanted users from teloperating the UGV. This feature
does not lock out the controller connected to the robot.
8. **Controller Connection:** If a controller is connected to the PC the UI
will show this icon. The user can select the icon to disable/enable
controller input.

## Remote Controller Connection

If the user has a PS4 controller they can connect it to the UI directly. This
will allow user drive the UGV the same way as the controller thats connected
directly to the UGV. The controller will only function provided the UI window
is in focus. Users can also see if other connections have a controller connected
by expanding the User Connections icon as seen below.

<center>
<figure>
<img src="/img/outdoornav_images/user_connections_expanded.png" />
<figcaption>Users connected to the UGV's UI Interface</figcaption>
</figure>
</center>

## Monitor Wireless Strength

Expand Down
71 changes: 67 additions & 4 deletions docs_outdoornav_user_manual/web_user_interface/ui_overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ available views.

<center>
<figure>
<img src="/img/outdoornav_images/ui_ptz_view-0_8_0.png" />
<img src="/img/outdoornav_images/ui_ptz_view_0_14_0.png" />
<figcaption>PTZ Camera View</figcaption>
</figure>
</center>
Expand All @@ -182,15 +182,17 @@ available views.
neutral ("zero") position.
3. **Zoom Slider:** The right slider can be used to zoom the camera
feed. By default, the slider is at its neutral ("zero") position.
4. **Save Image:** Depending on the current camera view selected, this
4. **Start/Stop Recording:** This button will start/stop video recording for the
camera and store the video file on the UGV.
5. **Save Image:** Depending on the current camera view selected, this
button will save an image to the computer/tablet running the UI.
Images will be saved to the location in which your browser saves
files.
5. **Camera Positions List:** Display the list of available camera
6. **Camera Positions List:** Display the list of available camera
positions that have been saved. These camera positions can be
deleted from this list by clicking the "garbage can" icon beside
the corresponding position.
6. **Save Camera Position:** This button will save the camera position
7. **Save Camera Position:** This button will save the camera position
to be used in the "Move PTZ" task. An example use case would be:
1. Switch to the PTZ camera view.
2. Teleoperate the UGV to a location at which the user can inspect
Expand All @@ -203,6 +205,67 @@ available views.
6. Click the settings button beside the task and add the camera
position related to the inspection point.

#### Q62 PTZ Features

<center>
<figure>
<img src="/img/outdoornav_images/ui_ptz_q62.png" />
<figcaption>Q62 PTZ Camera Controls</figcaption>
</figure>
</center>

1. **Virtual PTZ Joystick:** This joystick can be dragged away from the center
of the screen and the camera will follow. The further away from the center
the user drags the joystick, the faster the camera moves.
2. **Q62 Wiper:** Triggers the Q62 wiper to clear any water/debris on the the camera's
face.
3. **Q62 Defogger:** Triggers the Q62 Defogger. When on, a "DEFOGGER ON" message will appear
in the upper left corner of the view.
4. **Q62 Infrared:** Changes the Q62 view to leverage infrared light for improved vision in
the dark.

The Q62 PTZ Camera has the ability to move the camera in other ways besides the
sliders on the screen. Some of these are shown below in brief video clips.

<center>
<figure>
<video
autoplay="true"
loop="true"
src="/video/outdoornav_videos/ui_ptz_drag_demo.mp4"
width="700"
/>
<figcaption>Moving the Camera via the Virtual Joystick</figcaption>
</figure>
</center>

<center>
<figure>
<video
autoplay="true"
loop="true"
src="/video/outdoornav_videos/ui_ptz_box_zoom.mp4"
width="700"
/>
<figcaption>Moving the Camera via the Box Selection</figcaption>
</figure>
</center>

<center>
<figure>
<video
autoplay="true"
loop="true"
src="/video/outdoornav_videos/ui_ptz_double_click.mp4"
width="700"
/>
<figcaption>Moving the Camera via Double Clicking</figcaption>
</figure>
</center>

A user can also right click the image and zoom out or reset the camera to the
home position.

### Front and Back Views

<center>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ To drive your omnidirectional robot, **Axis 0** controls the robot's steering, *
left/right translation, and **Axis 2** controls the forward/backward velocity. **Button 4** acts as enable, and
**Button 5** acts as enable-turbo. On common controllers these correspond to the following physical controls:

| Axis/Button | Physical Input | PS4 | F710 | Xbox One | Action |
| :----------- | :------------------------------- | :-- | :--- | :------- | :--------------------- |
| **Axis 0** | Left thumb stick vertical | LJ | LJ | LJ | Drive forward/backward |
| **Axis 1** | Left thumb stick horizontal | LJ | LJ | LJ | Translate left/right |
| **Axis 2** | Right thumb stick horizontal | RJ | RJ | RJ | Rotate/turn |
| **Button 4** | Left shoulder button or trigger | L1 | LB | LB | Enable normal speed |
| **Button 5** | Right shoulder button or trigger | R1 | RB | RB | Enable turbo speed |
| Axis/Button | Physical Input | PS4 | F710 | Xbox One | Action |
| :----------- | :------------------------------- | :-- | :--- | :------- | :------------------------------------------------------------ |
| **Axis 0** | Left thumb stick vertical | LJ | LJ | LJ | Drive forward/backward |
| **Axis 1** | Left thumb stick horizontal | LJ | LJ | LJ | Translate left/right |
| **Axis 2** | Right thumb stick horizontal | RJ | RJ | RJ | Rotate/turn |
| **Button 4** | Left shoulder button or trigger | L1 | LB | LB | Enable normal speed |
| **Button 5** | Right shoulder button or trigger | R1 | RB | RB | Enable turbo speed (Dingo-O only; not supported on Ridgeback) |

:::note

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@ Then, power on the controller by pressing the `PS` button on the controller.
Once the blue LED on the top of the controller goes solid, you are paired and ready to drive.

Hold the L1 trigger button (deadman switch) and push the left thumbstick forward to drive the Ridgeback.
For full speed mode, hold the R1 trigger.
See the figure below for the Sony PS4 controls layout.
If you are not seeing any action, refer to [Support](#ridgeback-support) to get in touch with support.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1162,7 +1162,7 @@ If prompted for a password, enter: **`clearpath`**.

##### Connecting to OutdoorNav Web User Interface

In order to connect to the Outdoor Nav User Interface, ensure that the tablet
In order to connect to the OutdoorNav User Interface, ensure that the tablet
has network connectivity to the Husky Observer as described in
[Networking Setup](#networking-setup) and note the URL for accessing the OutdoorNav UI.

Expand Down Expand Up @@ -1330,7 +1330,7 @@ during the execution of the mission.

#### Autonomous Missions {#autonomous-missions}

Refer to the Outdoor Nav User Manual for details on the
Refer to the OutdoorNav User Manual for details on the
[Autonomous Mode](/docs_outdoornav_user_manual/web_user_interface/ui_overview#autonomous-features),
including details on [Autonomous Docking](/docs_outdoornav_user_manual/web_user_interface/ui_overview#autonomous-docking).

Expand Down
Loading

0 comments on commit 147d900

Please sign in to comment.