Skip to content

Commit

Permalink
Merge pull request #218 from clearpathrobotics/development
Browse files Browse the repository at this point in the history
Production Sync
  • Loading branch information
tonybaltovski authored Jan 18, 2024
2 parents 35c5614 + ff5d4f3 commit 700606a
Show file tree
Hide file tree
Showing 87 changed files with 8,358 additions and 112 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,7 @@ string data
clearpath_mission_scheduler_msgs/StorageState state
```

#### clearpath_mission_scheduler_msgs/srv/UpdateSchedule.srv {scheduler-updateschedule}
#### clearpath_mission_scheduler_msgs/srv/UpdateSchedule.srv {#scheduler-updateschedule}

```
# The ID of the mission to edit
Expand Down
4 changes: 3 additions & 1 deletion docs_outdoornav_user_manual/api/api_overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ sections, whose details are provided below:
by OutdoorNav Software, for use by the client to modify/control
the behaviour of the Autonomy.
- [Mission Manager API](api_endpoints/mission_manager_api.mdx): The set of [ROS
Services](http://wiki.ros.org/Services) that are used for creating, deleting, and modifying OutdoorNav missions
Services](http://wiki.ros.org/Services) that are used for creating, deleting, and modifying OutdoorNav Missions
- [Mission Scheduler API](api_endpoints/mission_scheduler_api.mdx): The set of [ROS Services](http://wiki.ros.org/Services)
that are used for creating, deleting, and modifying OutdoorNav Mission Schedules
- [Definitions](api_endpoints/definitions.mdx): The set of custom
[ROS Message](http://wiki.ros.org/Messages), [ROS
Service](http://wiki.ros.org/Services), and [ROS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,14 @@ then proceed to the respective issue listed in

#### Initialize Parameters {#initialize_parameters}

1. Update the footprint offsets of the UGV in the `${HOME}/cpr_outdoornav_launch/outdoornav_tuning.env` file.
1. Update the footprint offsets of the UGV in the `/opt/onav/<onav_version>/config/autonomy.env` file, where *onav_version*
is the version of OutdoorNav that you are currently running.

:::note

This above file path is only valid for versions after and including version 0.11.0.

:::note

<center>
<figure>
Expand Down Expand Up @@ -386,10 +393,11 @@ The following parameters should then be modified to the desired velocity ($v_{de
Finally, if you are increasing the velocity to a value greater than or equal to 4.0 m/s or if you
are seeing that the velocity is being limited even after changing the above parameters,
it is possible to try and increase the size (width and height) of the local costmap in file:
`~/cpr_outdoornav_launch/onav_robots/params/platform/navigation/costmap_local.yaml`.
The limit in the velcoity is due to the fact that the lookahead distance at higher speeds ends
up exceeding the size of the local costmap. By increasing it, we allow the controller to
lookahead further and allow for that velocity increase.
`/opt/onav/<onav_version>/app/autonomy/params/platform/navigation/costmap_local.yaml`,
where *onav_version* is the currently running version of OutdoorNav. The limit in the velocity
is due to the fact that the lookahead distance at higher speeds ends up exceeding the size of
the local costmap. By increasing it, we allow the controller to lookahead further and allow for
that velocity increase.

#### Tune Goal State {#tune_goal_state}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ toc_max_heading_level: 3

| Parameter | Description | File | Default |
|-----------|-------------|------|---------|
| `ENABLE_COLLISION_AVOIDANCE` | Flag to enable/disable collision avoidance | ~/cpr_outdoornav_launch/outdoornav_tuning.env | false |
| `ENABLE_COLLISION_AVOIDANCE` | Flag to enable/disable collision avoidance | `/opt/onav/<onav_version>/config/autonomy.env` | false |


## Costmap {#costmap_params}
Expand All @@ -20,7 +20,7 @@ toc_max_heading_level: 3
The parameters related to the costmap, can be found here:

``` bash
~/cpr_outdoornav_launch/onav_robots/params/<platform_type>/navigation/costmap_<global/local>.yaml
/opt/onav/<onav_version>/app/autonomy/params/<platform_type>/navigation/costmap_<global/local>.yaml
```

If they are not listed in the above file, it is because they are using the default values and are not being overwritten.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ import versions from "@site/static/versions.js"
The parameters related to the controller, can be found here:

``` bash
~/cpr_outdoornav_launch/onav_robots/params/<platform_type>/navigation/controls_general.yaml
/opt/onav/<onav_version>/app/autonomy/params/<platform_type>/navigation/controls_general.yaml
/opt/onav/<onav_version>/app/autonomy/params/<platform_type>/navigation/mpc_controller.yaml
/opt/onav/<onav_version>/app/autonomy/params/<platform_type>/navigation/mpc_dock_controller.yaml
```

If they are not listed in the above file, it is because they are using the default values and are not being overwritten.
Expand Down
4 changes: 2 additions & 2 deletions docs_outdoornav_user_manual/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ toc_max_heading_level: 4

5. **Where do all the video/audio/images get saved from the mission tasks?**

All of the data that gets saved (ROSbags, video recordings, audio recordings, and saved images) get stored on
UGV's computer at the following location: `~/clearpath_files/...`
All of the data that gets saved (ROSbags, video recordings, audio recordings, and saved images) gets stored on
UGV's computer at the following location: `/opt/onav/saved_files/...`

## Autonomy

Expand Down
14 changes: 8 additions & 6 deletions docs_outdoornav_user_manual/features/collision_avoidance.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ The following table lists the sensors that are useable with the
OutdoorNav software. The sensor drivers can be turned on/off using
these environment variables, however, the sensor will always remain
powered on. The environment variables, should be added to the
`~/cpr_outdoornav_launch/env/sensors_customization.env` file.
`/opt/onav/<onav_version>/config/sensors.env` file, where *onav_version*
is the currently running version of OutdoorNav.

| Environment Variable | Description | Data Type
|--------------------------------|-------------------------------------------|--------------
Expand Down Expand Up @@ -179,7 +180,8 @@ Eg. Realsense [`DepthImage`](http://docs.ros.org/en/noetic/api/sensor_msgs/html/

The following section provides a list of environment variables that can
be modified in order to tune OutdoorNav. All of the environment variables listed below
can be modified in the `~/cpr_outdoornav_launch/env/autonomy_customization.env` file.
can be modified in the `/opt/onav/<onav_version>/config/autonomy.env` file, where *onav_version*
is the currently running version of OutdoorNav.

### Costmap Inputs

Expand Down Expand Up @@ -278,12 +280,12 @@ detection bounds for the Starter Sensor Kit have yet to be determined.

1) Apply either a radial filter or a statistical outlier filter on the pointcloud data to filter out the stray detections.

- File: `~/cpr_outdoornav_launch/env/sensors_customization.env`
- File: `/opt/onav/<onav_version>/config/sensors.env`
- Environment variable(s): `<sensor_type>_ENABLE_FILTER_RADIUS_OUTLIER`, `<sensor_type>_ENABLE_FILTER_STATISTICAL_OUTLIER`

2) Increase the pointcloud to laserscan conversion filter minimum height parameter. The environment variable

- File: `~/cpr_outdoornav_launch/env/sensors_customization.env`
- File: `/opt/onav/<onav_version>/config/sensors.env`
- Environment variable(s): `PCL_TO_SCAN_MIN_HEIGHT`

#### Pitch changes
Expand All @@ -301,7 +303,7 @@ the range at which the 2D LiDAR will generate obstacles since the 3D LiDAR will
of the detections. You would be able to reduce the range that the 2D LiDAR generates obstacles,
so that it does not overlap with the detection field of the 3D LiDAR.

- File: `~/cpr_outdoornav_launch/env/autonomy_customization.env`
- File: `/opt/onav/<onav_version>/config/autonomy.env`
- Environment variable(s): `COSTMAP_LIDAR_2D_OBSTACLE_RANGE` and/or `COSTMAP_REAR_LIDAR_2D_OBSTACLE_RANGE`

#### Branches across narrow path
Expand All @@ -314,7 +316,7 @@ the navigation may not be able to maneuver through them.
**Mitigating Solution**: Reduction of the global costmap `inflation_radius` and/or `costmap_scaling_factor`
parameters may provide sufficient space for the navigation to replan though the branches.

- File: `~/cpr_outdoornav_launch/env/onav_robots/params/<platform>/navigation/costmap_global.yaml`
- File: `/opt/onav/<onav_version>/app/autonomy/params/<platform>/navigation/costmap_global.yaml`
- Environment variable(s): `/navigation/global_costmap/inflation/inflation_radius` and/or `/navigation/global_costmap/inflation/cost_scaling_factor`

:::info
Expand Down
5 changes: 4 additions & 1 deletion docs_outdoornav_user_manual/features/custom_tasks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ toc_min_heading_level: 2
toc_max_heading_level: 4
---

Users can create their custom tasks for their application following a specific template. When creating these tasks, the user should begin by creating a python file in the **~/cpr_outdoornav_launch/custom_tasks** directory. The file should be written following
Users can create their custom tasks for their application following a specific template.
When creating these tasks, the user should begin by creating a python file in the
**/opt/onav/<onav_version>/app/custom_tasks/** directory, where *onav_version*
is the currently running version of OutdoorNav. The file should be written following
the instructions provided below:

1. Import the `custom_task_base` package.
Expand Down
8 changes: 4 additions & 4 deletions docs_outdoornav_user_manual/features/navigation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ The OutdoorNav Software contains a set of features that can be enabled
or disabled according to your required application requirements. These
features can be enabled or disabled through the use of environment
variables, which should be added to the
`~/cpr_outdoornav_launch/env/autonomy_customization.env` file. The
following table describes the available features, their default state
and any additional parameters that we expose that may also be included
to tune the feature.
`/opt/onav/<onav_version>/config/autonomy.env` file, where *onav_version*
is the currently running version of OutdoorNav. The following table describes
the available features, their default state and any additional parameters
that we expose that may also be included to tune the feature.

| Feature | Description |
|-----------------------------|----------------------------------------|
Expand Down
2 changes: 1 addition & 1 deletion docs_outdoornav_user_manual/features/rosbag_recorder.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ following topics (or all the topics in the namespace if followed by a

To stop the recording navigate to the Settings drop down and select
**Stop rosbag recording**. This will save the rosbag with the date and
time as its file name in the `~/clearpath_files/rosbag_data` folder.
time as its file name in the `/opt/onav/saved_files/rosbags/` directory.
5 changes: 4 additions & 1 deletion docs_outdoornav_user_manual/getting_started/system_setup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ Follow the steps below to connect to the Web UI.

The above steps will open the Web UI, which will allow the user to
operate the UGV in Manual Mode (teleoperation) or in Autonomous Mode
(missions).
(missions). Upon startup the user will be presented with a page that
shows the End-User License Agreement. This page will be visible each
time the UGV is restarted but only on the first navigation to the page.
The EULA should be reviewed prior to using the system.

## Loading Map Tiles {#loading_map_tiles}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,66 +13,24 @@ Prior to installing the OutdoorNav software, ensure that you have completed the

All the following instructions, unless otherwise specified, are to be run on the OutdoorNav computer.

### Clone OutdoorNav Repository {#clone-install-repo}

The following repository is required to run the instructions in the subsequent sections.
### Install Command-line Interface Tool (CLI) {#install-cli}

<code>
{`
cd ~/
git clone -b ${versions.outdoornav} https://gitlab.clearpathrobotics.com/cpr-outdoornav/cpr_outdoornav_launch.git
sudo apt update
sudo apt install python3-onav-cli
`}
</code>

For remote installations, please contact Clearpath Robotics customer support in order to obtain the relevant information required to proceed.

### Install Docker {#install-docker}

``` bash
cd ~/cpr_outdoornav_launch/scripts/
./install_docker.sh
```

### Configure OutdoorNav Sensors {#configure-outdoornav-sensors}

Prior to configuring the sensors, ensure that you have measured the position (XYZ) and orientation (RPY) of each of your sensors with respect to the `base_link`. See your results from the [Integration Requirements](hardware_integration_requirements/hardware_integration_requirements.mdx).

``` bash
cd ~/cpr_outdoornav_launch/scripts/
./configure_outdoornav.sh
```

### Finalize Setup {#final-setup}

The script in the sections below will reboot the computer it is run on.

##### UGV Computer

For installations of the OutdoorNav software on the UGV computer (not a secondary or Starter Kit computer), run the following:

``` bash
cd ~/cpr_outdoornav_launch/scripts/
sudo ./setup_computers.sh
```
##### Secondary or Starter Kit Computer

Prior to running the script on the secondary or Starter Kit computer, ensure that you have the user and IP of the UGV computer that the secondary/starter kit computer is connected to. Run the following:

``` bash
cd ~/cpr_outdoornav_launch/scripts/
sudo ./setup_computers.sh -b
```

### Install OutdoorNav Software {#install-outdoornav}
### Install OutdoorNav

``` bash
cd ~/cpr_outdoornav_launch/
docker compose --profile outdoornav pull
```
<code>
{`
onav install -k <license_key>
`}
</code>

:::note
If you are installing the OutdoorNav software on a secondary or Starter Kit computer, you must also complete the [UGV Computer Checklist](platform_computer_checklist.mdx)
:::
where `license_key` is the license key that you have been assigned. Only one license key can be used per UGV.

### Configure UGV Footprint {#configure-platform-footprint}

Expand All @@ -86,8 +44,8 @@ If the UGV has sensors and/or parts that protrude outside of the UGV body, then
Change the environment variables from the Table below, in the following file:

```
cd ~/cpr_outdoornav_launch
nano outdoornav_tuning.env
cd /opt/onav/<version>/config
nano autonomy.env
```

| Environment Variable | Description | Default |
Expand All @@ -98,22 +56,27 @@ nano outdoornav_tuning.env
| **FOOTPRINT_OFFSET_NEG_Y** | Distance from base_link to the furthest edge of any part/sensor at the right of the robot | -0.35 |


### Start/Stop the OutdoorNav

### Start OutdoorNav
To start up the OutdoorNav software run:

For standard CPR UGVs (ie. not including Husky Observer), run the following to start OutdoorNav:
<code>
{`
onav start
`}
</code>

``` bash
cd ~/cpr_outdoornav_launch/ # directory with docker-compose.yaml
docker compose --profile outdoornav up -d --build
```
If you wish to start individual profiles or services, run `onav start -h` to see available profiles/services.

For Husky Observers, run the following to start OutdoorNav:
To stop the OutdoorNav software run:

``` bash
cd ~/cpr_outdoornav_launch/ # directory with docker-compose.yaml
docker compose --profile outdoornav --profile power up -d --build
```
<code>
{`
onav stop
`}
</code>

For more information and available ONAV CLI commands, see the [Terminal Interface](../getting_started/terminal_interface.mdx) section.

### Test OutdoorNav Installation

Expand All @@ -129,7 +92,6 @@ rostopic echo -n 1 /localization/odom

# GNSS units
rostopic echo /sensors/gps_<sensor_num>/fix
rostopic echo /sensors/gps_<sensor_num>/vel

# IMU (if included)
rostopic echo -n 1 /sensors/imu_<sensor_num>/data
Expand All @@ -139,14 +101,14 @@ rostopic echo /sensors/lidar_<sensor_num>/pointcloud
rostopic echo /sensors/lidar_<sensor_num>/scan

# Realsense D435 Front (if included)
rostopic echo -n 1 /sensors/stereo_0/pointcloud
rostopic echo -n 1 /sensors/stereo_0/image
rostopic echo -n 1 /sensors/stereo_0/depth/image_rect_raw
rostopic echo -n 1 /sensors/stereo_0/pointcloud --noarr
rostopic echo -n 1 /sensors/stereo_0/image --noarr
rostopic echo -n 1 /sensors/stereo_0/depth/image_rect_raw --noarr

# Realsense D435 Rear (if included)
rostopic echo -n 1 /sensors/stereo_1/pointcloud
rostopic echo -n 1 /sensors/stereo_1/image
rostopic echo -n 1 /sensors/stereo_1/depth/image_rect_raw
rostopic echo -n 1 /sensors/stereo_1/pointcloud --noarr
rostopic echo -n 1 /sensors/stereo_1/image --noarr
rostopic echo -n 1 /sensors/stereo_1/depth/image_rect_raw --noarr
```

<sensor_num> will be the number of the sensor as it was loaded into the software. Eg. If you have a VLP and an LMS1XX, then the VLP will be lidar_0, and the LMS1XX will be lidar_1. If we only have an LMS1XX, then it would be lidar_0. Ie. the 3D lidars have a higher "priority" and therefore will be loaded first.
Expand Down
26 changes: 26 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,32 @@ toc_min_heading_level: 2
toc_max_heading_level: 4
---

## 0.11.0

### New Features

- Command Line Tool used to install/update/manage OutdoorNav
- Added the End User License Agreement to the UI upon start up
- Light and PTZ Pan/Tilt controls can now be mapped to a controller
- OutdoorNav/IndoorNav switch over improvements
- Can now place waypoints at UGV location via shortcut key (Shift + X)

### API Features

- Can now delete multiple mission objects (missions, waypoints, tasks) in single call
- Stack Light can now be manually overridden/muted
- Added ability to import single missions to the robot

### Bug Fixes

- 1688: Move PTZ task only ever uses the first PTZ camera's positions
- 2011: Filter false "Move PTZ Failure" notifications when moving PTZ camera

### 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

## 0.10.0

### New Features
Expand Down
Loading

0 comments on commit 700606a

Please sign in to comment.