diff --git a/components/installing_remote_computer_software.mdx b/components/installing_remote_computer_software.mdx
index 0af4a9c2b..77fc70e5f 100644
--- a/components/installing_remote_computer_software.mdx
+++ b/components/installing_remote_computer_software.mdx
@@ -29,6 +29,12 @@ Remote Computer must be configured correctly.
>
sudo apt-get install ros-noetic-dingo-desktop
+
+ sudo apt-get install ros-noetic-ridgeback-desktop
+
3. Configure Remote ROS Connectivity.
@@ -62,5 +68,11 @@ Remote Computer must be configured correctly.
>
roslaunch dingo_viz view_robot.launch
+
+ roslaunch ridgeback_viz view_robot.launch
+
From within RViz, you can use interactive markers to drive your robot, you can visualize its published localization estimate and you can visualize any attached sensors which have been added to its robot description XML _URDF_.
diff --git a/components/installing_robot_software.mdx b/components/installing_robot_software.mdx
index 16e04df04..8ef51cb87 100644
--- a/components/installing_robot_software.mdx
+++ b/components/installing_robot_software.mdx
@@ -1,11 +1,15 @@
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
-There are three ways to install software on the physical robot.
+There are three methods to install software on the physical robot.
-The preferred way is using the Clearpath Robotics ISO image, which is covered in this section.
-The other two ways are using Debian (.deb) packages and installing from source by directly cloning Clearpath Robotics Github repositories and building them in your ROS (catkin) workspace;
-however, these ways are not covered in this section.
+The preferred method is using the Clearpath Robotics ISO image, which is covered in this section.
+
+The second method is using Debian (.deb) packages, which is also covered in this section.
+
+The final approach is installing from source by directly cloning Clearpath Robotics Github
+repositories and building them in your ROS (catkin) workspace; however, this method is not
+covered in this section.
##### Install from ISO Image
@@ -93,6 +97,16 @@ To install the software on a physical robot through the Clearpath Robotics ISO i
sudo systemctl daemon-reload
+
+
+ rosrun ridgeback_bringup install
+
+ sudo systemctl daemon-reload
+
+
9. Finally, start ROS for the first time. In terminal, run:
@@ -101,76 +115,113 @@ To install the software on a physical robot through the Clearpath Robotics ISO i
sudo systemctl start ros
```
-
+1. Before you can install the robot packages, you need to configure Ubuntu's APT package
+ manager to add Clearpath's package server.
+
+ 1. Install the authentication key for the packages.clearpathrobotics.com repository. In terminal, run:
+
+ ```
+ wget https://packages.clearpathrobotics.com/public.key -O - | sudo apt-key add -
+ ```
+
+ 2. Add the debian sources for the repository. In terminal, run:
+
+ ```
+ sudo sh -c 'echo "deb https://packages.clearpathrobotics.com/stable/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/clearpath-latest.list'
+ ```
+
+ 3. Update your computer's package cache. In terminal, run:
+
+ ```
+ sudo apt-get update
+ ```
+
+2. After the robot's computer is configured to use Clearpath's debian package repository,
+ you can install the robot-specific packages.
+
+ 1. On a physical robot, you should only need the robot packages. In terminal, run:
+
+
+
+ sudo apt-get install ros-noetic-husky-robot
+
+
+ sudo apt-get install ros-noetic-jackal-robot
+
+
+ sudo apt-get install ros-noetic-dingo-robot
+
+
+ sudo apt-get install ros-noetic-ridgeback-robot
+
+
+
+ 2. Install the `robot_upstart` job and configure the bringup service so that ROS will launch each time the robot starts. In terminal, run:
+
+
+
+
+ rosrun husky_bringup install
+
+ sudo systemctl daemon-reload
+
+
+
+
+ rosrun jackal_bringup install
+
+ sudo systemctl daemon-reload
+
+
+
+
+ rosrun dingo_bringup install
+
+ sudo systemctl daemon-reload
+
+
+
+
+ rosrun ridgeback_bringup install
+
+ sudo systemctl daemon-reload
+
+
+
+
+ 3. Finally, start ROS for the first time. In terminal, run:
+
+ ```
+ sudo systemctl start ros
+ ```
diff --git a/components/introduction_ridgeback.mdx b/components/introduction_ridgeback.mdx
index fef678bf7..2d6cb0e00 100644
--- a/components/introduction_ridgeback.mdx
+++ b/components/introduction_ridgeback.mdx
@@ -1,9 +1,6 @@
-:::warning under construction
-
-:::
-
----
-
-## Introduction
-
-Clearpath Robotics Ridgeback is a rugged, indoor omnidirectional platform designed to move manipulators and other heavy payloads with ease and precision.
+
+
+
diff --git a/components/maintenance/getting_new_packages.mdx b/components/maintenance/getting_new_packages.mdx
new file mode 100644
index 000000000..c869f4a83
--- /dev/null
+++ b/components/maintenance/getting_new_packages.mdx
@@ -0,0 +1,18 @@
+:::note
+
+If you are upgrading your robot from an older version of ROS, please refer to our upgrade instructions [here](https://clearpathrobotics.com/assets/guides/kinetic/kinetic-to-melodic/index.html) and [here](https://clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html).
+
+:::
+
+### Getting New Packages
+
+Clearpath Robotics robots are always being improved, both its own software and the many community ROS packages upon which it depends!
+You can use the `apt` package management system to receive new versions all software running on the platform.
+
+Each robot leaves the factory already configured to pull packages from http://packages.ros.org as well as http://packages.clearpathrobotics.com.
+To update your package and download new package versions, simply run:
+
+```
+sudo apt-get update
+sudo apt-get dist-upgrade
+```
diff --git a/components/remote_ros_connectivity.mdx b/components/remote_ros_connectivity.mdx
index 2674d28be..e0d7e544f 100644
--- a/components/remote_ros_connectivity.mdx
+++ b/components/remote_ros_connectivity.mdx
@@ -25,7 +25,7 @@ corresponding line to the Remote Computer's `/etc/hosts` file:
:::note
You can verify the hostname and IP address of your robot using the following commands during an SSH session
-with the Onboard PC.
+with the Onboard Computer.
:::
diff --git a/components/software_sensor_iso_supported.mdx b/components/software_sensor_iso_supported.mdx
index c0b1d3b38..b55c7419d 100644
--- a/components/software_sensor_iso_supported.mdx
+++ b/components/software_sensor_iso_supported.mdx
@@ -38,6 +38,16 @@ This allows you to add or remove the sensor from your robot's software descripti
+
+
+
diff --git a/docs/robots/dingo/integration_dingo/integration_dingo.mdx b/docs/robots/dingo/integration_dingo/integration_dingo.mdx
index 8d08aaac4..7d0b3af17 100644
--- a/docs/robots/dingo/integration_dingo/integration_dingo.mdx
+++ b/docs/robots/dingo/integration_dingo/integration_dingo.mdx
@@ -10,8 +10,10 @@ import ComponentPacsMechanical from "/components/pacs_mechanical.mdx";
import ComponentCommonSoftwareIntegration from "/components/common_software_integration.mdx";
import Support from "/components/support.mdx";
+
+
To attach custom hardware to Dingo, you will have to take care of mechanical mounting, electrical
-supply, and software integration. This section aims to equip you with respect to these challenges.
+supply, and software integration. This guide aims to equip you with respect to these challenges.
---
diff --git a/docs/robots/dingo/maintenance_dingo.mdx b/docs/robots/dingo/maintenance_dingo.mdx
index 804cadca8..762d15612 100644
--- a/docs/robots/dingo/maintenance_dingo.mdx
+++ b/docs/robots/dingo/maintenance_dingo.mdx
@@ -5,6 +5,7 @@ sidebar_position: 5
import ComponentIntroductionDingo from "/components/introduction_dingo.mdx";
import ComponentLeadAcidBatteryCare from "/components/maintenance/lead_acid_battery_care.mdx";
+import GettingNewPackages from "/components/maintenance/getting_new_packages.mdx";
import Support from "/components/support.mdx";
@@ -19,26 +20,9 @@ With proper maintenance, the battery should maintain the majority of its capacit
---
-## Software Maintenance {#software_maintenance}
+## Software Maintenance {#software_maintenance}
-:::note
-
-If you are upgrading your Dingo from an older version of ROS, please refer to our upgrade instructions [here](https://clearpathrobotics.com/assets/guides/kinetic/kinetic-to-melodic/index.html) and [here](https://clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html).
-
-:::
-
-### Getting New Packages
-
-Dingo is always being improved, both its own software and the many community ROS packages upon which it depends!
-You can use the `apt` package management system to receive new versions all software running on the platform.
-
-Each Dingo leaves the factory already configured to pull packages from http://packages.ros.org as well as http://packages.clearpathrobotics.com.
-To update your package and download new package versions, simply run:
-
-```
-sudo apt-get update
-sudo apt-get dist-upgrade
-```
+
### MCU Firmware Update
diff --git a/docs/robots/dingo/tutorials_dingo.mdx b/docs/robots/dingo/tutorials_dingo.mdx
index b15e3db7f..fdb1d6f93 100644
--- a/docs/robots/dingo/tutorials_dingo.mdx
+++ b/docs/robots/dingo/tutorials_dingo.mdx
@@ -46,16 +46,15 @@ If instead you have an older Dingo robot running Ubuntu 18.04 with ROS Melodic,
[Dingo Software Setup](#dingo-software-setup) outlines the steps for setting up the software on your Dingo robot and optionally on a remote computer.
-[Using Dingo](#using-dingo) describes how to simulate and drive your Dingo. [Simuation](#simulating-dingo) is a great way for most users to learn more about their Dingo;
+[Using Dingo](#using-dingo) describes how to simulate and drive your Dingo. [Simulation](#simulating-dingo) is a great way for most users to learn more about their Dingo;
understanding how to effectively operate Dingo in simulation is valuable whether you are in the testing phase with software you intend to ultimately deploy on a physical Dingo or you do not have one and are simply exploring the platform's capabilities.
-
[Driving Dingo](#driving-dingo) covers how to teleoperate Dingo using the remote control, a well as safety procedures for operating the physical robot.
Anyone working with a physical robot should be familiar with this section.
-[Navigating Dingo](#navigating-dingo) is a follow-on to what is learned in the [Simuation](#simulating-dingo) tutorial, as navigation and map-making may be run in the simulated environment.
+[Navigating Dingo](#navigating-dingo) is a follow-on to what is learned in the [Simulation](#simulating-dingo) tutorial, as navigation and map-making may be run in the simulated environment.
However, this content is applicable to both the simulator and the real platform, if your Dingo is equipped with a laser scanner.
-[Testing Dingo](#testing-dingo) outlines how to validate that your physical Dingo is working correctly.
+[Dingo Tests](#testing-dingo) outlines how to validate that your physical Dingo is working correctly.
[Advanced Topics](#advanced-topics) covers items that are only required in atypical situations.
@@ -171,16 +170,16 @@ Additional configurations coming soon
You can view all topics that are active using `rostopic list`.
The most important topics are summarized in the table below.
-| Topic | Message Type | Purpose |
-| :---------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `/cmd_vel` | `geometry_msgs/Twist` | Input to Dingo's kinematic controller. Publish here to make Dingo go. |
-| `/odom` | `nav_msgs/Odometry` | Published by `robot_localization`, a filtered localization estimate based on wheel odometry (encoders) and integrated IMU. |
-| `/imu/data` | `sensor_msgs/IMU` | Published by `imu_filter_madgwick`, an orientation estimated based on the Dingo's internal IMU. |
-| `/mcu/status` | `dingo_msgs/Status` | Low-frequency status data for Dingo's systems. This information is republished in human readable form on the `diagnostics` topic and is best consumed with the Robot Monitor. |
-| `/mcu/aux_input` | `dingo_msgs/UInt8` | User can subscribe to this topic to monitor the MCU user inputs. See [AUX Inputs](/docs/robots/dingo/integration_dingo#dingo-aux-inputs). |
-| `/mcu/aux_output` | `std_msgs/UInt8` | User can publish to this topic to enable and disable the AUX outputs as well as control relays on the MCU. See [AUX Outputs and Relays](/docs/robots/dingo/integration_dingo#dingo-aux-outputs). |
-| `/mcu/fans` | `dingo_msgs/Fans` | User can publish to this topic to control an optionally installed fan. See details [Optional Fan](/docs/robots/dingo/integration_dingo#dingo-fan). |
-| `/mcu/lights` | `dingo_msgs/Lights` | User can publish to this topic to override the default behavior of the Dingo corner LEDs. |
+| Topic | Message Type | Purpose |
+| :------------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `/cmd_vel` | `geometry_msgs/Twist` | Input to Dingo's kinematic controller. Publish here to make Dingo go. |
+| `/odometry/filtered` | `nav_msgs/Odometry` | Published by `robot_localization`, a filtered localization estimate based on wheel odometry (encoders) and integrated IMU. |
+| `/imu/data` | `sensor_msgs/IMU` | Published by `imu_filter_madgwick`, an orientation estimated based on the Dingo's internal IMU. |
+| `/mcu/status` | `dingo_msgs/Status` | Low-frequency status data for Dingo's systems. This information is republished in human readable form on the `diagnostics` topic and is best consumed with the Robot Monitor. |
+| `/mcu/aux_input` | `dingo_msgs/UInt8` | User can subscribe to this topic to monitor the MCU user inputs. See [AUX Inputs](/docs/robots/dingo/integration_dingo#dingo-aux-inputs). |
+| `/mcu/aux_output` | `std_msgs/UInt8` | User can publish to this topic to enable and disable the AUX outputs as well as control relays on the MCU. See [AUX Outputs and Relays](/docs/robots/dingo/integration_dingo#dingo-aux-outputs). |
+| `/mcu/fans` | `dingo_msgs/Fans` | User can publish to this topic to control an optionally installed fan. See details [Optional Fan](/docs/robots/dingo/integration_dingo#dingo-fan). |
+| `/mcu/lights` | `dingo_msgs/Lights` | User can publish to this topic to override the default behavior of the Dingo corner LEDs. |
---
@@ -303,7 +302,7 @@ roslaunch dingo_gazebo dingo_world.launch
You should see the following window appear, or something like it.
You will see a base Dingo spawned with no additional sensors.
-You can adjust the camera angle by clicking and dragging while holding CTRL, ALT, or the shift key.
+You can adjust the camera angle by clicking and dragging while holding CTRL, ALT, or the Shift key.
@@ -485,8 +484,8 @@ The same information is also published as a [dingo_msgs\Status](https://docs.ros
There are four ways to drive Dingo and each way will work on a physical Dingo robot as well as on a simulated Dingo.
-1. Using the interactive remote controller in RViz. See [Simulating Husky](#simulating-husky).
-2. Using autonomous navigation. See [Navigating Husky](#navigating-husky).
+1. Using the interactive remote controller in RViz. See [Simulating Dingo](#simulating-dingo).
+2. Using autonomous navigation. See [Navigating Dingo](#navigating-dingo).
3. Using the controller for teleoperation. See below.
4. Publishing ROS messages. See below.
@@ -631,7 +630,7 @@ If you wish to customize the parameters of move_base, local costmap, global cost
### Making a Map {#gmapping-demo}
-In this demonstration, Dingo generates a map using gmapping. Begin by launch the gmapping launch file on the robot:
+In this demonstration, Dingo generates a map using Gmapping. Begin by launch the Gmapping launch file on the robot:
```
roslaunch dingo_navigation gmapping_demo.launch
@@ -649,7 +648,7 @@ roslaunch dingo_viz view_robot.launch config:=gmapping
src="/img/robot_images/dingo_images/rviz-gmapping.png"
width="800"
/>
- RViz with Dingo's gmapping configuration
+ RViz with Dingo's Gmapping configuration
@@ -677,7 +676,7 @@ roslaunch dingo_navigation amcl_demo.launch map_file:=/path/to/my/map.yaml
```
If you don't specify `map_file`, it defaults to an included pre-made map of the default "Dingo Race" environment which Dingo's simulator spawns in.
-If you're using a real Dingo in your own environment, you'll definitely want to override this with the map created using the gmapping demo.
+If you're using a real Dingo in your own environment, you'll definitely want to override this with the map created using the Gmapping demo.
Before navigating, you need to initialize the localization system by setting the pose of the robot in the map.
This can be done using 2D Pose Estimate in RViz or by setting the amcl `initial_pose` parameters. To visualize with the suggested RViz configuration launch:
@@ -690,7 +689,7 @@ When RViz appears, select the _Set 2D Pose tool_ from the toolbar, and click on
---
-## Dingo Tests
+## Dingo Tests {#testing-dingo}
Dingo robots come preinstalled with a set of test scripts as part of the `dingo_tests` ROS package, which can be run to verify robot functionality at the component and system levels.
diff --git a/docs/robots/dingo/user_manual_dingo.mdx b/docs/robots/dingo/user_manual_dingo.mdx
index 42fbcf544..05cd94de9 100644
--- a/docs/robots/dingo/user_manual_dingo.mdx
+++ b/docs/robots/dingo/user_manual_dingo.mdx
@@ -189,7 +189,7 @@ The direction of the axes differs from those used for roll, pitch, and yaw in ai
| Speed, Maximum | 1.3 m/s | 1.3 m/s |
| Operating Environment | Indoor | Same as Dingo-D |
| Operating Time | 2 hours (SLA), 4 hours (lithium) | 2 hours (2X SLA), 4 hours (2X lithium) |
-| Battery Chemistry | Lithium or Sealed Lead-Acid | Same as Dingo-D |
+| Battery Chemistry | Lithium or Sealed Lead-Acid | Same as Dingo-D |
| Charge Time | 4 hours | Same as Dingo-D |
| User Power | 20 A @ VBAT (11-16.8 V), 7A @ 12 V, 5 A @ 5 V | Same as Dingo-D |
| Communication | Ethernet, USB 3.0 | Same as Dingo-D |
@@ -244,8 +244,6 @@ To teleoperate Dingo, first clear the motion-stop.
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.
-Press the PS button on the Sony Bluetooth controller to sync the controller to Dingo.
-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 Dingo.
For full speed mode, hold the R1 trigger.
See the figure below for the Sony PS4 controls layout.
diff --git a/docs/robots/husky/integration_husky/integration_husky.mdx b/docs/robots/husky/integration_husky/integration_husky.mdx
index df4c536ca..ad1f68ac1 100644
--- a/docs/robots/husky/integration_husky/integration_husky.mdx
+++ b/docs/robots/husky/integration_husky/integration_husky.mdx
@@ -12,7 +12,7 @@ import ComponentTableHuskyOne from "/components/table_husky_1.mdx";
import Support from "/components/support.mdx";
To attach custom hardware to Husky, you will have to take care of mechanical mounting, electrical
-supply, and software integration. This section aims to equip you with respect to these challenges.
+supply, and software integration. This guide aims to equip you with respect to these challenges.
---
diff --git a/docs/robots/husky/maintenance_husky.mdx b/docs/robots/husky/maintenance_husky.mdx
index 7519d1a53..76880635b 100644
--- a/docs/robots/husky/maintenance_husky.mdx
+++ b/docs/robots/husky/maintenance_husky.mdx
@@ -7,6 +7,7 @@ import ComponentReplacingTireOrInnerTube from "/components/maintenance_husky/mai
import ComponentUpdatingPumaFirmware from "/components/maintenance/firmware_update_puma.mdx";
import ComponentLeadAcidBatteryCare from "/components/maintenance/lead_acid_battery_care.mdx";
import ComponentBillOfMaterialsNote from "/components/maintenance/bill_of_materials_note.mdx";
+import GettingNewPackages from "/components/maintenance/getting_new_packages.mdx";
import Support from "/components/support.mdx";
@@ -224,28 +225,9 @@ The [Common Replacement Items](#husky_maintenance_common_replacement_items) sect
---
-## Software Maintenance {#software_maintenance}
+## Software Maintenance {#software_maintenance}
-:::note
-
-If you are upgrading your Husky from an older version of ROS, please refer to
-our upgrade instructions [here](https://clearpathrobotics.com/assets/guides/kinetic/kinetic-to-melodic/index.html)
-and [here](https://clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html).
-
-:::
-
-### Getting New Packages
-
-Husky is always being improved, both its own software and the many community ROS packages upon which it depends!
-You can use the `apt` package management system to receive new versions all software running on the platform.
-
-Each Husky leaves the factory already configured to pull packages from http://packages.ros.org as well as
-http://packages.clearpathrobotics.com. To update your package and download new package versions, simply run:
-
-```
-sudo apt-get update
-sudo apt-get dist-upgrade
-```
+
### MCU Firmware Update
diff --git a/docs/robots/husky/tutorials_husky.mdx b/docs/robots/husky/tutorials_husky.mdx
index 9bc9a8ed0..58f4b1f79 100644
--- a/docs/robots/husky/tutorials_husky.mdx
+++ b/docs/robots/husky/tutorials_husky.mdx
@@ -53,7 +53,6 @@ your Husky robot and optionally on a remote computer.
is a great way for most users to learn more about their Husky; understanding how to effectively operate Husky
in simulation is valuable whether you are in the testing phase with software you intend to ultimately deploy on a
physical Husky, or you do not have one and are simply exploring the platform's capabilities.
-
[Driving Husky](#driving-husky) covers how to teleoperate Husky using the remote control, as well as safety
procedures for operating the physical robot. Anyone working with a physical robot should be familiar with this section.
@@ -61,7 +60,7 @@ procedures for operating the physical robot. Anyone working with a physical robo
tutorial, as navigation and map-making may be run in the simulated environment. However, this content is applicable
to both the simulator and the real platform, if your Husky is equipped with a laser scanner.
-[Testing Husky](#testing-husky) outlines how to validate that your physical Husky is working correctly.
+[Husky Tests](#testing-husky) outlines how to validate that your physical Husky is working correctly.
[Advanced Topics](#advanced-topics) covers items that are only required in atypical situations.
@@ -303,7 +302,7 @@ You should see the following window appear, or something like it.
:::note
You can adjust the camera angle by clicking and dragging while holding CTRL, ALT,
-or the shift key.
+or the Shift key.
:::
@@ -888,7 +887,7 @@ navigation stack, see the [ROS Navigation Tutorials](http://wiki.ros.org/navigat
Make sure to select an unoccupied (dark grey) or unexplored (light grey) location.
7. As the robot moves, you should see the grey static map (map topic) grow. Occasionally,
- the gmapping algorithm will relocalize the robot, causing a discrete jump in the
+ the Gmapping algorithm will relocalize the robot, causing a discrete jump in the
map→odom transform.
8. To save the generated map, you can run the map_saver utility:
@@ -1033,7 +1032,7 @@ In each terminal window, make sure to source the catkin workspace where you buil
Husky should explore. Watch the terminal window for instructions.
7. As the robot moves, you should see the grey static map (map topic) grow. Occasionally,
- the gmapping algorithm will relocalize the robot, causing a discrete jump in the map→odom transform.
+ the Gmapping algorithm will relocalize the robot, causing a discrete jump in the map→odom transform.
8. When the exploration goal is complete, you will see a feedback message in the terminal
window. You can now issue a new exploration goal if you wish.
diff --git a/docs/robots/jackal/integration_jackal.mdx b/docs/robots/jackal/integration_jackal.mdx
index e4417c7be..690ddf909 100644
--- a/docs/robots/jackal/integration_jackal.mdx
+++ b/docs/robots/jackal/integration_jackal.mdx
@@ -7,12 +7,13 @@ toc_max_heading_level: 4
---
import ComponentIntroductionJackal from "/components/introduction_jackal.mdx";
-import ComponentPacsMechanical from "/components/pacs_mechanical.mdx";
import ComponentCommonSoftwareIntegration from "/components/common_software_integration.mdx";
import Support from "/components/support.mdx";
+
+
To attach custom hardware to Jackal, you will have to take care of mechanical mounting, electrical
-supply, and software integration. This section aims to equip you with respect to these challenges.
+supply, and software integration. This guide aims to equip you with respect to these challenges.
---
diff --git a/docs/robots/jackal/maintenance_jackal.mdx b/docs/robots/jackal/maintenance_jackal.mdx
index a2b83c4e2..4171d65db 100644
--- a/docs/robots/jackal/maintenance_jackal.mdx
+++ b/docs/robots/jackal/maintenance_jackal.mdx
@@ -4,30 +4,14 @@ sidebar_position: 4
---
import ComponentIntroductionJackal from "/components/introduction_jackal.mdx";
+import GettingNewPackages from "/components/maintenance/getting_new_packages.mdx";
import Support from "/components/support.mdx";
-## Software Maintenance {#software_maintenance}
+## Software Maintenance {#software_maintenance}
-:::note
-
-If you are upgrading your Jackal from an older version of ROS, please refer to our upgrade instructions [here](https://clearpathrobotics.com/assets/guides/kinetic/kinetic-to-melodic/index.html) and [here](https://clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html).
-
-:::
-
-### Getting New Packages
-
-Jackal is always being improved, both its own software and the many community ROS packages upon which it depends!
-You can use the `apt` package management system to receive new versions all software running on the platform.
-
-Each Jackal leaves the factory already configured to pull packages from http://packages.ros.org as well as http://packages.clearpathrobotics.com.
-To update your package and download new package versions, simply run:
-
-```
-sudo apt-get update
-sudo apt-get dist-upgrade
-```
+
### MCU Firmware Update
diff --git a/docs/robots/jackal/tutorials_jackal.mdx b/docs/robots/jackal/tutorials_jackal.mdx
index 74b2ee4d5..2349ba6e8 100644
--- a/docs/robots/jackal/tutorials_jackal.mdx
+++ b/docs/robots/jackal/tutorials_jackal.mdx
@@ -48,14 +48,13 @@ If instead you have an older Jackal robot running Ubuntu 18.04 with ROS Melodic,
[Using Jackal](#using-jackal) describes how to simulate and drive your Jackal. [Simuation](#simulating-jackal) is a great way for most users to learn more about their Jackal;
understanding how to effectively operate Jackal in simulation is valuable whether you are in the testing phase with software you intend to ultimately deploy on a physical Jackal or you do not have one and are simply exploring the platform's capabilities.
-
[Driving Jackal](#driving-jackal) covers how to teleoperate Jackal using the remote control, a well as safety procedures for operating the physical robot.
Anyone working with a physical robot should be familiar with this section.
[Navigating Jackal](#navigating-jackal) is a follow-on to what is learned in the [Simuation](#simulating-jackal) tutorial, as navigation and map-making may be run in the simulated environment.
However, this content is applicable to both the simulator and the real platform, if your Jackal is equipped with a laser scanner.
-[Testing Jackal](#testing-jackal) outlines how to validate that your physical Jackal is working correctly.
+[Jackal Tests](#testing-jackal) outlines how to validate that your physical Jackal is working correctly.
[Advanced Topics](#advanced-topics) covers items that are only required in atypical situations.
@@ -621,7 +620,7 @@ If you wish to customize the parameters of move_base, local costmap, global cost
### Making a Map {#gmapping-demo}
-In this demonstration, Jackal generates a map using gmapping. Begin by launch the gmapping launch file on the robot:
+In this demonstration, Jackal generates a map using Gmapping. Begin by launch the Gmapping launch file on the robot:
```
roslaunch jackal_navigation gmapping_demo.launch
@@ -646,7 +645,7 @@ roslaunch jackal_viz view_robot.launch config:=gmapping
src="/img/robot_images/jackal_images/rviz-gmapping.png"
width="800"
/>
- RViz with Jackal's gmapping configuration
+ RViz with Jackal's Gmapping configuration
@@ -681,7 +680,7 @@ If your robot's lidar does not publish on `/front/scan` you can specify the corr
:::
If you don't specify `map_file`, it defaults to an included pre-made map of the default "Jackal Race" environment which Jackal's simulator spawns in.
-If you're using a real Jackal in your own environment, you'll definitely want to override this with the map created using the gmapping demo.
+If you're using a real Jackal in your own environment, you'll definitely want to override this with the map created using the Gmapping demo.
Before navigating, you need to initialize the localization system by setting the pose of the robot in the map.
This can be done using 2D Pose Estimate in RViz or by setting the amcl `initial_pose` parameters. To visualize with the suggested RViz configuration launch:
@@ -990,7 +989,7 @@ and [Navigating Jackal](#navigating-jackal) to control and monitor the robot. Fo
src="/img/robot_images/jackal_images/jackal_rviz_office_gmap.png"
width="800"
/>
- Jackal building a map of the office with gmapping
+ Jackal building a map of the office with Gmapping
diff --git a/docs/robots/jackal/user_manual_jackal.mdx b/docs/robots/jackal/user_manual_jackal.mdx
index 3cf98a2a1..75a1a0b89 100644
--- a/docs/robots/jackal/user_manual_jackal.mdx
+++ b/docs/robots/jackal/user_manual_jackal.mdx
@@ -175,7 +175,7 @@ taken to ensure that data is interpreted correctly.
| Ground Clearance | 65 mm |
| Maximum Payload | 20 kg |
| Speed, Maximum | 2.0 m/s |
-| Battery Chemistry | Lithium, 270 Wh |
+| Battery Chemistry | Lithium, 270 Wh |
| Operating Time | 8 hours (basic usage), 2 hours (heavy usage) |
| Charge Time | 4 hours |
| User Power | 16 A @ VBAT (25.6 V nominal), 7 A @ 12 V, 5 A @ 5 V |
diff --git a/docs/robots/ridgeback/integration_ridgeback.mdx b/docs/robots/ridgeback/integration_ridgeback.mdx
index 76d712b12..e2eb20ed3 100644
--- a/docs/robots/ridgeback/integration_ridgeback.mdx
+++ b/docs/robots/ridgeback/integration_ridgeback.mdx
@@ -1,12 +1,160 @@
---
-title: Integration
+title: Ridgeback Integration
+sidebar_label: Integration
sidebar_position: 2
+toc_min_heading_level: 2
+toc_max_heading_level: 4
---
import ComponentIntroductionRidgeback from "/components/introduction_ridgeback.mdx";
+import ComponentCommonSoftwareIntegration from "/components/common_software_integration.mdx";
+import Support from "/components/support.mdx";
-:::warning todo—under construction
+To attach custom hardware to Ridgeback, you will have to take care of mechanical mounting, electrical
+supply, and software integration. This guide aims to equip you with respect to these challenges.
+
+---
+
+### Mechanical Mounting
+
+When determining mechanical mounting, you can use the Standard mounting pattern on the Ridgeback.
+At this time, the "PACS" mounting system is not available for Ridgeback.
+
+#### Mechanical, Standard {#ridgeback-payload-mechanical-integration}
+
+The payload integration plate can be used to mount external payloads on top of the Ridgeback. The plate
+is made of aluminum, which allows Ridgeback to support payloads up to 100 kg (220 lbs). Ridgeback's
+batteries are positioned low in the chassis and slightly rearward of center of the robot to balance the
+weight distribution when mounting front-facing manipulator payloads. To minimize the possibility of tipping
+over, payload structures should always be mounted as close to center as possible.
+
+##### Payload Mounting Holes
+
+Located at the front-end of the mounting plate are two 5/8"-11 screw holes for mounting Baxter, UR5/UR510 manipulator
+arms, or any other payload structure. These holes are indicated in the figure below. If you purchased the Baxter
+or UR5/UR10 package from Clearpath Robotics, Ridgeback will come with the required hardware adapters to securely mount
+the payload structures to the plate.
+
+If your payload structure requires additional mounting holes or a different hole configuration, the plate can be removed
+and additional holes can be drilled. To remove the mounting plate, simply remove the screws that form the diamond pattern
+on top of the plate.
+
+
+
+
+ Payload integration plate
+
+
+
+:::warning
+
+Permanent damage resulting from custom modifications to the mounting plate is not covered under warranty and may not be
+supported by Clearpath Support. Please contact our support team if you require assistance or have any questions relating
+to custom modifications.
+
+:::
+
+### Electrical Integration {#ridgeback-payload-electrical-integration}
+
+Except for bus-powered USB cameras, most payloads have separate leads for power and data.
+
+#### Data Connections
+
+The two larger holes on the left and right side of the payload integration plate allow you to pass
+electrical wires and cables from the mounted payloads into the User Bay. Electrical wires should always
+pass through the provided plastic grommets to protect against cutting and abrasion.
+
+Ridgeback's internal computer options support USB3 and Ethernet connectivity.
+
+An Ethernet switch or PoE power injector can be added to the User Bay as required.
+
+#### Connector Summary {#ridgeback-connector-summary}
+
+Several user power connectors are accessible in the User Bay for powering user payloads.
+These are summarized in the following table and described in more detail in the following sections.
+The power rails on the User Bay Power board are protected against short circuit by fuses. See the
+illustration for the connector and fuse locations.
+
+- For the High Current VBAT User Power (labelled as 24 VDC, 20 A MAX), terminate your payload's power lead with the appropriate Anderson connectors.
+- For the User Power Ports, terminate your payload's power lead with the appropriate crimps and pins.
+ for the four pin Molex connector. The maximum current draw permitted on each rail is 5A.
+- For the Inverter Power, terminate your payload's power lead with the appropriate Anderson connectors.
+
+| Port (see Figure) | MCU board connector | Mating connector | Crimp terminals | Crimping tool |
+| :--------------------------- | :----------------------------------------------------------------------- | :------------------------------------------------- | :----------------------------------------------------------- | :--------------- |
+| High Current VBAT User Power | Anderson PP15/45 1327-BK (red) + 1327G6-BK (black) + Anderson 261G2-LPBK | Anderson PP15/45 1327-BK (red) + 1327G6-BK (black) | Anderson 262G2-LPBK (AWG 16-20) or 261G3-LPBK (AWG 10-14) | Anderson 1309G8 |
+| User Power Ports | Molex 0039301040 | Molex 0039012040 | Molex 0507528200 (AWG 20-22) or Molex 0503518100 (AWG 22-28) | Molex 2002184900 |
+| Inverter Power | Anderson 1327G8-BK (blue) + 1327G6-BK (black) | Anderson 1327G8-BK (blue) + 1327G6-BK (black) | Anderson 262G2-LPBK (AWG 16-20) or 261G3-LPBK (AWG 10-14) | Anderson 1309G8 |
+
+
+
+
+ User power board
+
+
+
+#### User Power Connections
+
+Similar to the data connections, power leads may be brought through the two larger holes on the left and
+right side of the payload integration plate, and connected to the power ports in the User Bay.
+The following are available as user power:
+
+- Unregulated VBAT power (25.6 V nominal) available in two ways:
+ - High Current VBAT User Power (20 A max)
+ - User Power ports: 5 A, shared across the User Power ports
+- Regulated 12 V power: 5 A, shared across the User Power ports
+- Regulated 5 V power: 5 A, shared across the User Power ports.
+
+:::caution
+
+Each User Power Port (Molex 0039301040) has a shared ground (GND) pin with a maximum current rating of 8 A. Ensure
+that the combined current draw for the VBAT, 12 V, and 5 V pins for the corresponding GND
+pin does not exceed 8 A.
+
+:::
+
+:::caution Unregulated Power Rail
+
+The unregulated battery output may range from as low as 20 VDC up to 30 VDC depending on the state of charge of
+the battery and the electrical loading on the system. Ensure any accessories connected to that rail are able to
+deal with unregulated battery voltages.
+
+:::
+
+:::warning Risk of Fire
+
+For continued protection against risk of fire, always replace fuses only with those of the same type and rating.
:::
+
+#### Optional External Motion Stop {#ridgeback-external-motion-stop}
+
+In addition to the built-in Motion Stop button, an external motion-stop latching button/switch can be added that has similar functionality.
+Electrically, the external motion-stop latching button/switch can be connected to the 4-pin MCU connector labelled `E-STOP BREAKOUT` using
+a mating connector. This 4-pin connector is the same as the one used for the User Power Ports. Refer to
+[Connector Summary](#ridgeback-connector-summary) for details.
+
+The four pins should be connected as follows:
+
+- 1-2: to external motion-stop breakout
+ - To engage motion-stop: press and release the latching button/switch (3.3 V)
+ - To clear motion-stop: press and release the Motion Stop button on the Ridgeback unit to clear the motion-stop
+- 3-4: short these pins to indicate that external motion-stop is present
+
+### Software Integration
+
+
+
+---
+
+## Support {#support}
+
+
diff --git a/docs/robots/ridgeback/maintenance_ridgeback.mdx b/docs/robots/ridgeback/maintenance_ridgeback.mdx
index 9b1b84063..bde7135a3 100644
--- a/docs/robots/ridgeback/maintenance_ridgeback.mdx
+++ b/docs/robots/ridgeback/maintenance_ridgeback.mdx
@@ -4,9 +4,120 @@ sidebar_position: 4
---
import ComponentIntroductionRidgeback from "/components/introduction_ridgeback.mdx";
+import GettingNewPackages from "/components/maintenance/getting_new_packages.mdx";
+import Support from "/components/support.mdx";
-:::warning todo—under construction
+## Battery Replacement
+
+If Ridgeback's batteries need replacement, they are accessible by removing the top-plate and the insulator
+cover. Before performing any service or maintenance to the robot, the battery pack must be fully disconnected.
+The batteries weigh approximately 33 kg (73 lbs) each, so use care and caution when lifting the
+batteries out of the chassis. Please contact Clearpath Robotics regarding replacement batteries.
+
+It may also be necessary to remove the antenna cables carefully prior to removing the batteries.
+
+## Long-term storage
+
+When storing Ridgeback for long periods of time, its important to properly maintain the batteries to fully
+maximize their life. Consider one of the following two procedures when placing Ridgeback in long-term storage:
+
+- Fully charge Ridgeback, turn it off and put it into storage. Once a week, connect power to the charger
+ and allow the charger to top up the battery for an hour or so.
+- Fully charge Ridgeback, turn it off and put it into storage, but leave the charger connected and powered
+ the entire time Ridgeback is in storage via a wall timer that turns off for one hour every 24-hour cycle.
+ The charger will monitor the battery and will automatically charge it up as needed. Note that the wall
+ timer is needed since the charger times out and turns off otherwise.
+
+Please contact Clearpath Robotics for additional information about Ridgeback's batteries.
+
+---
+
+## Software Maintenance {#software_maintenance}
+
+
+
+### MCU Firmware Update
+
+When you update packages, there is periodically a new version of Ridgeback's firmware available. You will know this
+is the case in one of two ways:
+
+1. The firmware and Onboard Computer are unable to connect to each other, which will be apparent if the body lights remain solid
+ red after system bootup.
+2. If the firmware version number in the `/status` message does not match the package version output by
+ `dpkg -s ros-noetic-ridgeback-firmware`. In the future there will be an automated check for this which outputs
+ a diagnostics warning when a firmware update is available to be applied.
+
+If new firmware is available, follow the below procedure to flash it to Ridgeback's MCU:
+
+1. Place Ridgeback up on blocks. Firmware loading does not usually result in unintended motion, but it's safest when
+ off the ground.
+2. Ensure that Ridgeback is on and open.
+3. Connect the MCU to the Ridgeback's Onboard Computer using a mini-USB cable connected to the port shown below:
+
+
+
+
+ Ridgeback MCU mini-USB port
+
+
+
+4. In the middle of the MCU is a two-position switch labelled `PWR MODE`. Move the switch from the default `NORM`
+ position to the `AUX` position.
+5. Press the `M_RST` button. The MCU is now in boot-loader mode, ready to receive new firmware.
+
+
+
+:::note
+
+The Ridgeback's MCU is normally rotated 90 degrees when it is installed in the robot; the `NORM` position is
+typically towards the top of the robot's chassis and the `AUX` position is normally towards the bottom.
+
+:::
+
+Now, from Ridgeback's Onboard Computer (connected via SSH or screen/keyboard), execute:
+
+```
+rosrun ridgeback_firmware upload
+```
+
+You should see about 20 seconds worth of lines output beginning with "Download from image ...".
+
+When the upload is complete, move the `PWR MODE` switch back to the `NORM` position and immediately press the
+`M_RST` button.
+
+:::note
+
+You must press the `M_RST` button immediately after changing the mode back to `NORM`. If you take too long
+the Ridgeback may power off. If this happens, simply ensure the switch is in the `NORM` position and power
+the robot back on normally. Losing power in this situation is inconvenient, but not harmful.
:::
+
+After resetting the MCU back in `NORM` mode, ensure the MCU is using the new version of the firmware by running
+
+```
+rostopic echo /status
+```
+
+and verifying that the MCU firmware version is correct.
+
+---
+
+## Support {#support}
+
+
+
+---
diff --git a/docs/robots/ridgeback/tutorials_ridgeback.mdx b/docs/robots/ridgeback/tutorials_ridgeback.mdx
index cc5246eda..54a0f5c2b 100644
--- a/docs/robots/ridgeback/tutorials_ridgeback.mdx
+++ b/docs/robots/ridgeback/tutorials_ridgeback.mdx
@@ -1,12 +1,1079 @@
---
title: Tutorials
-sidebar_position: 3
+sidebar_position: 4
---
import ComponentIntroductionRidgeback from "/components/introduction_ridgeback.mdx";
+import ComponentPs4ControllerPairing from "/components/ps4_controller_pairing.mdx";
+import ComponentChangingDefaultPassword from "/components/changing_default_password.mdx";
+import ComponentWiredRobotConnection from "/components/wired_robot_connection.mdx";
+import ComponentWifiRobotConnection from "/components/wifi_robot_connection.mdx";
+import ComponentConfiguringNetworkBridge from "/components/configuring_network_bridge.mdx";
+import ComponentPerformingABackup from "/components/performing_a_backup.mdx";
+import ComponentInstallingRobotSoftware from "/components/installing_robot_software.mdx";
+import ComponentInstallingRemoteComputerSoftware from "/components/installing_remote_computer_software.mdx";
+import ComponentAddingASourceWorkspace from "/components/adding_a_source_workspace.mdx";
+import ComponentDrivingWithRemoteController from "/components/driving_with_remote_controller.mdx";
+import Support from "/components/support.mdx";
-:::warning todo—under construction
+## Ridgeback Overview
+
+### Introduction
+
+Ridgeback is a rugged, indoor omnidirectional platform designed to move manipulators and other heavy
+payloads with ease and precision. These tutorials will assist you with setting up and operating your Ridgeback.
+The tutorial topics are listed in the right column and presented in the suggested reading order.
+
+For more information or to receive a quote, please [visit us online](http://clearpathrobotics.com/ridgeback).
+
+:::note
+
+These tutorials assume that you are comfortable working with ROS.
+We recommend starting with our [ROS tutorial](https://www.clearpathrobotics.com/assets/guides/noetic/ros/index.html) if you are not familiar with ROS already.
:::
+
+:::note
+
+These tutorials specifically target Ridgeback robots running Ubuntu 20.04 with ROS Noetic, as it is the standard OS environment for Ridgeback.
+If instead you have an older Ridgeback robot running Ubuntu 18.04 with ROS Melodic, please follow [this tutorial](https://www.clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html) to upgrade the robot OS environment to Ubuntu 20.04 with ROS Noetic.
+
+:::
+
+[Ridgeback ROS Packages](#ridgeback-ros-packages) provides the references for the software packages and key ROS topics.
+
+[Ridgeback Software Setup](#ridgeback-software-setup) outlines the steps for setting up the software on your Ridgeback robot and optionally on a remote computer.
+
+[Using Ridgeback](#using-ridgeback) describes how to simulate and drive your Ridgeback. [Simulation](#simulating-ridgeback) is a great way for most users to learn more about their Ridgeback;
+understanding how to effectively operate Ridgeback in simulation is valuable whether you are in the testing phase with software you intend to ultimately deploy on a physical Ridgeback or you do not have one and are simply exploring the platform's capabilities.
+[Driving Ridgeback](#driving-ridgeback) covers how to teleoperate Ridgeback using the remote control, a well as safety procedures for operating the physical robot.
+Anyone working with a physical robot should be familiar with this section.
+
+[Navigating Ridgeback](#navigating-ridgeback) is a follow-on to what is learned in the [Simulation](#simulating-ridgeback) tutorial, as navigation and map-making may be run in the simulated environment.
+However, this content is applicable to both the simulator and the real platform, if your Ridgeback is equipped with a laser scanner.
+
+[Ridgeback Tests](#testing-ridgeback) outlines how to validate that your physical Ridgeback is working correctly.
+
+[Advanced Topics](#advanced-topics) covers items that are only required in atypical situations.
+
+---
+
+## Ridgeback ROS Packages {#ridgeback-ros-packages}
+
+Ridgeback fully supports ROS; all of the packages are available in [Ridgeback Github](https://github.com/ridgeback).
+
+### Description Package {#description-package}
+
+The [ridgeback_description](https://github.com/ridgeback/ridgeback/tree/melodic-devel/ridgeback_description) repository provides a [URDF](http://wiki.ros.org/urdf) model of Ridgeback.
+
+Ridgeback's URDF model can be visualized in RViz.
+Once you have installed the desktop software in an upcoming tutorial, you will be able to run:
+
+```
+roslaunch ridgeback_viz view_model.launch
+```
+
+
+
+
+ Ridgeback model
+
+
+
+### Environment Variables
+
+Ridgeback can be customized and extended through the use of several environment variables.
+The details are in the [ridgeback_description](https://github.com/ridgeback/ridgeback/tree/melodic-devel/ridgeback_description) repository.
+Some of the most important ones are listed below.
+
+| Variable | Default | Description |
+| :----------------------------- | :------ | :------------------------------------------------------------------------------------- |
+| `RIDGEBACK_FRONT_HOKUYO_LASER` | `0` | Set to `1` if the robot is equipped with a front-facing Hokuyo LIDAR unit (e.g. UST10) |
+| `RIDGEBACK_REAR_HOKUYO_LASER` | `0` | Set to `1` if the robot is equipped with a rear-facing Hokuyo LIDAR unit (e.g. UST10) |
+| `RIDGEBACK_FRONT_SICK_LASER ` | `0` | Set to `1` if the robot is equipped with a front-facing SICK LMS-111 LIDAR unit |
+| `RIDGEBACK_REAR_SICK_LASER ` | `0` | Set to `1` if the robot is equipped with a rear-facing SICK LMS-111 LIDAR unit |
+| `RIDGEBACK_MICROTRAIN_IMU` | `0` | Set to `1` if the robot is equipped with a Microstrain IMU |
+
+### Configurations
+
+As an alternative to individually specifying each accessory, some fixed configurations are provided in the package.
+These can be specified using the `config` arg to `description.launch`, and are intended especially as a convenience for simulation launch.
+
+| Config | Description |
+| :------------------- | :------------------------------------------ |
+| `base` | Base Ridgeback |
+| `base_sick` | Ridgeback with front SICK laser |
+| `dual_hokuyo_lasers` | Ridgeback with front and rear Hokuyo lasers |
+| `dual_sick_lasers` | Ridgeback with front and rear SICK lasers |
+
+### Key ROS Topics
+
+You can view all topics that are active using `rostopic list`.
+The most important topics are summarized in the table below.
+
+| Topic | Message Type | Purpose |
+| :------------------- | :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `/cmd_vel` | `geometry_msgs/Twist` | Input to Ridgeback's kinematic controller. Publish here to make Ridgeback go. |
+| `/odometry/filtered` | `nav_msgs/Odometry` | Published by `robot_localization`, a filtered localization estimate based on wheel odometry (encoders) and integrated IMU. |
+| `/imu/data` | `sensor_msgs/IMU` | Published by `imu_filter_madgwick`, an orientation estimated based on the Ridgeback's internal IMU. |
+| `/mcu/status` | `ridgeback_msgs/Status` | Low-frequency status data for Ridgeback's systems. This information is republished in human readable form on the `diagnostics` topic and is best consumed with the Robot Monitor. |
+| `/mcu/cmd_fans` | `ridgeback_msgs/Fans` | User can publish to this topic to control an the installed fans. |
+| `/cmd_lights` | `ridgeback_msgs/Lights` | User can publish to this topic to override the default behavior of the Ridgeback body lights. |
+
+---
+
+## Ridgeback Software Setup {#ridgeback-software-setup}
+
+### Backing Up Robot Configuration
+
+Upgrading your Clearpath Ridgeback to ROS Noetic from older ROS distributions is a straightforward process;
+however it's important to understand that each Ridgeback is different, having undergone customization to your specifications.
+For more complete upgrade instructions see [this guide](https://clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html).
+
+Please take the time to understand what these modifications are, and how to recreate them on your fresh install of Ubuntu Focal/ROS Noetic.
+
+#### Performing a Backup {#performing-a-backup}
+
+
+
+### Installing and Configuring Robot Software
+
+:::note
+
+If you are upgrading your Ridgeback from an older version of ROS, please refer to our upgrade instructions [here](https://clearpathrobotics.com/assets/guides/kinetic/kinetic-to-melodic/index.html)
+and [here](https://clearpathrobotics.com/assets/guides/melodic/melodic-to-noetic/index.html).
+
+:::
+
+#### Installing Ridgeback Software
+
+:::note
+
+The physical Ridgeback robot comes pre-configured with ROS and the necessary Ridgeback packages already installed;
+therefore, you will only need to follow the instructions below if you are re-installing software on the Ridgeback.
+
+:::
+
+
+
+#### Testing Base Configuration
+
+You can check that the service has started correctly by checking the logs:
+
+```
+sudo journalctl -u ros
+```
+
+Your Ridgeback should now be accepting commands from your joystick (see next section).
+The service will automatically start each time you boot your Ridgeback's computer.
+
+#### Pairing the Controller {#pairing-the-controller}
+
+##### PS4 Controller
+
+
+
+### Setting up Ridgeback's Network Configuration {#ridgeback-networking}
+
+Ridgeback is normally equipped with a combination Wi-Fi + Bluetooth module.
+If this is your first unboxing, ensure that Ridgeback's wireless antennae are firmly screwed on to the chassis.
+
+#### First Connection
+
+By default, Ridgeback's Wi-Fi is in client mode, looking for the wireless network at the Clearpath factory.
+
+
+
+#### Changing the Default Password
+
+
+
+#### Wi-Fi Setup
+
+
+
+### Installing Remote Computer Software {#remote-computer-software}
+
+:::note
+
+This step is optional.
+
+:::
+
+
+
+#### Adding a Source Workspace
+
+
+
+---
+
+## Using Ridgeback {#using-ridgeback}
+
+### Simulating Ridgeback {#simulating-ridgeback}
+
+Whether you actually have a Ridgeback robot or not, the Ridgeback simulator is a great way to get started with ROS robot development.
+In this tutorial, we will go through the basics of starting Gazebo and RViz and how to drive your Ridgeback around.
+
+#### Installation
+
+To get started with the Ridgeback simulation, make sure you have a [working ROS installation](#remote-computer-software) set up on your Ubuntu desktop, and install the Ridgeback-specific metapackages for desktop and simulation:
+
+```
+sudo apt-get install ros-noetic-ridgeback-simulator ros-noetic-ridgeback-desktop
+```
+
+#### Launching Gazebo
+
+[Gazebo](https://gazebosim.org/home) is the most common simulation tool used in ROS. Ridgeback's model in Gazebo include reasonable approximations of its dynamics, including wheel slippage, skidding, and inertia.
+To launch simulated Ridgeback in a simple example world, run the following command:
+
+```
+roslaunch ridgeback_gazebo ridgeback_world.launch
+```
+
+You should see the following window appear, or something like it.
+You will see a base Ridgeback spawned with no additional sensors.
+You can adjust the camera angle by clicking and dragging while holding CTRL, ALT, or the Shift key.
+
+
+
+
+ Simulated Ridgeback in the Race World
+
+
+
+The window which you are looking at is the Gazebo Client.
+This window shows you the "true" state of the simulated world which the robot exists in.
+It communicates on the backend with the Gazebo Server, which is doing the heavy lifting of actually maintaining the simulated world.
+At the moment, you are running both the client and server locally on your own machine, but some advanced users may choose to run heavy duty simulations on separate hardware and connect to them over the network.
+
+:::note
+
+When simulating, you must leave Gazebo running.
+Closing Gazebo will prevent other tools, such as RViz (see below) from working correctly.
+
+:::
+
+:::note
+
+See also [Additional Simulation Worlds](#additional-sim).
+
+:::
+
+##### Simulation Configs
+
+Note that like Ridgeback itself, Ridgeback's simulator comes in multiple flavours called configs.
+A common one which you will need often is the `base_sick` config.
+If you close the Gazebo window, and then CTRL-C out of the terminal process, you can re-launch the simulator with a specific config.
+
+```
+roslaunch ridgeback_gazebo ridgeback_world.launch config:=base_sick
+```
+
+You should now see the simulator running with the simulated SICK LMS-111 laser present.
+
+
+
+
+ Simulated Ridgeback in the Race World with SICK LMS-111
+
+
+
+Gazebo not only simulates the physical presence of the laser scanner, it also provides simulated data which reflects the robot's surroundings in its simulated world.
+We will visualize the simulated laser scanner data shortly.
+
+### Interfacing with Ridgeback
+
+Both simulated and real Ridgeback robots expose the same ROS interface and can be interacted with in the same way.
+
+:::note
+
+Please make sure that the desktop packages for Ridgeback are installed:
+
+```
+sudo apt-get install ros-noetic-ridgeback-desktop
+```
+
+:::
+
+#### Launching RViz
+
+The next tool we will encounter is [RViz](http://wiki.ros.org/rviz).
+Although superficially similar in appearance to Gazebo, RViz has a very different purpose. Unlike Gazebo, which shows the reality of the simulated world, RViz shows the robot's _perception_ of its world, whether real or simulated.
+So while Gazebo won't be used with your real Ridgeback, RViz is used with both.
+
+You can use the following launch invocation to start RViz with a predefined configuration suitable for visualizing any standard Ridgeback config.
+
+```
+roslaunch ridgeback_viz view_robot.launch
+```
+
+You should see RViz appear.
+
+
+
+
+ Ridgeback RViz
+
+
+
+The RViz display only shows what the robot knows about its world, which presently, is nothing.
+Because the robot doesn't yet know about the barriers which exist in its Gazebo world, they are not shown here.
+
+#### Driving with Interactive Controller
+
+RViz will also show Ridgeback's interactive markers around your Ridgeback's model.
+These will appear as a blue ring and red arrows.
+Depending on your robot, there will also be green arrows.
+If you don't see them in your RViz display, select the Interact tool from the top toolbar and they should appear.
+
+Drag the red arrows in RViz to move in the linear X direction, and the blue circle to move in the angular Z direction.
+If your robot supports lateral/sideways movement, you can drag the green arrows to move in the linear Y direction.
+RViz shows you Ridgeback moving relative to its odometric frame, but it is also moving relative to the simulated world supplied by Gazebo.
+If you click over to the Gazebo window, you will see Ridgeback moving within its simulated world.
+Or, if you drive real Ridgeback using this method, it will have moved in the real world.
+
+#### Visualizing Sensors
+
+The RViz tool is capable of visualizing many common robotic sensors, as well as other data feeds which can give us clues as to what the robot is doing and why.
+A great place to start with this is adding the [LaserScan](http://wiki.ros.org/rviz/DisplayTypes/LaserScan) plugin to visualize the laser scans being produced
+by the simulated UST-10LX or LMS-111. In the left panel, click the "Add" button, then select the "Topics" tab, and then select the `front/scan` topic:
+
+
+
+
+ Adding a laser scan visualization to Ridgeback
+
+
+
+Click "OK" and you should see laser scan points now visible in the RViz window, relative to the robot.
+
+
+
+If you use the interactive markers to drive around, you'll notice that the laser scan points move a little bit but generally stay where they are.
+This is the first step toward map making using [Gmapping](#gmapping-demo).
+
+#### Control
+
+There are three ways to send your Ridgeback control commands:
+
+1. Using the provided PS4 controller.
+ Refer to the [User Manual](/docs/robots/ridgeback/user_manual_ridgeback/#controller) details on how to use the controller.
+
+2. Using the RViz instance above.
+ If you select the Interact option in the top toolbar, an interactive marker will appear around the Ridgeback and can be used to control speed.
+
+3. The [rqt_robot_steering plugin](http://wiki.ros.org/rqt_robot_steering).
+ Run the `rqt` command, and select **Plugins→Robot Tools→Robot Steering** from the top menu.
+
+Ridgeback uses [twist_mux](http://wiki.ros.org/twist_mux) to mix separate [geometry_msgs\Twist](http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html) control channels into the `ridgeback_velocity_controller/cmd_vel` topic.
+
+Additional velocity channels can be defined in [twist_mux.yaml](https://github.com/ridgeback/ridgeback/blob/melodic-devel/ridgeback_control/config/twist_mux.yaml), or can be piped into the lowest-priority `cmd_vel` topic.
+
+#### Odometry
+
+Ridgeback publishes odometry information on the `odometry/filtered` topic, as [nav_msgs/Odometry messages](http://docs.ros.org/api/nav_msgs/html/msg/Odometry.html).
+These are generated by [ekf_localization_node](http://wiki.ros.org/robot_localization), which processes data from several sensor sources using an Extended Kalman filter (EKF).
+This includes data from the wheel encoders and IMU (if available).
+
+Additional odometry information sources can be added to the EKF in [robot_localization.yaml](https://github.com/ridgeback/ridgeback/blob/melodic-devel/ridgeback_control/config/robot_localization.yaml).
+
+#### Diagnostics
+
+:::note
+
+Diagnostics are only applicable to real Ridgeback robots, not simulation.
+
+:::
+
+Ridgeback provides hardware and software system [diagnostics](http://wiki.ros.org/diagnostics) on the ROS standard `/diagnostics` topic.
+The best way to view these messages is using the [rqt_runtime_monitor](http://wiki.ros.org/rqt_runtime_monitor) plugin.
+Run the `rqt` command, and select **Plugins→Robot Tools→Runtime Monitor** from the top menu.
+
+The same information is also published as a [ridgeback_msgs\Status](https://docs.ros.org/en/api/ridgeback_msgs/html/msg/Status.html) message on the `Status` topic.
+
+### Driving Ridgeback {#driving-ridgeback}
+
+There are four ways to drive Ridgeback and each way will work on a physical Ridgeback robot as well as on a simulated Ridgeback.
+
+1. Using the interactive remote controller in RViz. See [Simulating Ridgeback](#simulating-ridgeback).
+2. Using autonomous navigation. See [Navigating Ridgeback](#navigating-ridgeback).
+3. Using the controller for teleoperation. See below.
+4. Publishing ROS messages. See below.
+
+:::warning
+
+Ridgeback is capable of reaching high speeds.
+Careless driving can cause harm to the operator, bystanders, the robot, or other property.
+Always remain vigilant, ensure you have a clear line of sight to the robot, and operate the robot at safe speeds.
+We strongly recommend driving in normal (slow) mode first, and only enabling turbo in large, open areas that are free of people and obstacles.
+
+:::
+
+#### Driving with Remote Controller
+
+:::note
+
+For instructions on controller pairing, [Pairing the Controller](#pairing-the-controller).
+
+:::
+
+
+
+#### Driving with ROS Messages
+
+You can manually publish `geometry_msgs/Twist` ROS messages to either the `/ridgeback_velocity_controller/cmd_vel` or the `/cmd_vel` ROS topics to drive Ridgeback.
+
+For example, in terminal, run:
+
+```
+rostopic pub /ridgeback_velocity_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}'
+```
+
+The command above makes Ridgeback drive forward momentarily at 0.5 m/s without any rotation.
+
+### Extending Ridgeback Startup
+
+Now that you've had Ridgeback for a while, you may be interested in how to extend it, perhaps add some more payloads, or augment the URDF.
+
+#### Startup Launch Context
+
+When ROS packages are grouped together in a directory and then built as one, the result is referred to as a workspace.
+Each workspace generates a `setup.bash` file which the user may source in order to correctly set up important environment variables such as `PATH`, `PYTHONPATH`, and `CMAKE_PREFIX_PATH`.
+
+The standard system-wide setup file is in `/opt`:
+
+```
+source /opt/ros/noetic/setup.bash
+```
+
+When you run this command, you'll have access to `rosrun`, `roslaunch`, and all the other tools and packages installed on your system from Debian packages.
+
+However, sometimes you want to add additional system-specific environment variables, or perhaps packages built from source.
+For this reason, Clearpath platforms use a wrapper setup file, located in `/etc/ros`:
+
+```
+source /etc/ros/setup.bash
+```
+
+This is the setup file which gets sourced by Ridgeback's background launch job, and in the default configuration, it is also sourced on your login session.
+For this reason it can be considered the "global" setup file for Ridgeback's ROS installation.
+
+This file sets some environment variables and then sources a chosen ROS workspace, so it is one of your primary modification points for altering how Ridgeback launches.
+
+#### Launch Files
+
+The second major modification point is the `/etc/ros/noetic/ros.d` directory.
+This location contains the launch files associated with the `ros` background job.
+If you add launch files here, they will be launched with Ridgeback's startup.
+
+However, it's important to note that in the default configuration, any launch files you add may only reference ROS software installed in `/opt/ros/noetic`.
+If you want to launch something from workspace in the home directory, you must change `/etc/ros/setup.bash` to source that workspace's setup file rather than the one from `/opt`.
+
+#### Adding URDF
+
+There are two possible approaches to augmenting Ridgeback's URDF.
+The first is that you may simply set the `Ridgeback_URDF_EXTRAS` environment variable in `/etc/ros/setup.bash`.
+By default, it points to an empty dummy file, but you can point it to a file of additional links and joints which you would like mixed into Ridgeback's URDF (via xacro) at runtime.
+
+The second, more sophisticated way to modify the URDF is to create a _new_ package for your own robot, and build your own URDF which wraps the one provided by [ridgeback_description](https://github.com/ridgeback/ridgeback/tree/melodic-devel/ridgeback_description).
+
+### Keeping Ridgeback Updated
+
+For details on updating Ridgeback software or firmware, refer to [Software Maintenance](/docs/robots/ridgeback/maintenance_ridgeback#software_maintenance).
+
+---
+
+## Navigating Ridgeback {#navigating-ridgeback}
+
+To get all Navigation related files for Ridgeback, run:
+
+```
+sudo apt-get install ros-noetic-ridgeback-navigation
+```
+
+Below are the example launch files for three different configurations for navigating Ridgeback:
+
+- Navigation in an odometric frame without a map, using only [move_base](http://wiki.ros.org/move_base).
+- Generating a map using [Gmapping](http://wiki.ros.org/gmapping).
+- Localization with a known map using [amcl](http://wiki.ros.org/amcl).
+
+Referring to the [Simulating Ridgeback](#simulating-ridgeback) instructions, bring up Ridgeback with the front laser enabled for the following demos:
+
+```
+roslaunch ridgeback_gazebo ridgeback_world.launch config:=front_laser
+```
+
+If you're working with a real Ridgeback, it's suggested to connect via SSH and launch the [ridgeback_navigation](https://github.com/ridgeback/ridgeback/tree/melodic-devel/ridgeback_navigation) launch files from onboard the robot.
+You'll need to have bidirectional communication with the robot's roscore in order to launch RViz on your workstation (see [here](#remote-computer-software)).
+
+### Navigation without a Map
+
+In the odometry navigation demo Ridgeback attempts to reach a given goal in the world within a user-specified tolerance.
+The 2D navigation, generated by `move_base`, takes in information from odometry, laser scanner, and a goal pose and outputs safe velocity commands.
+In this demo the configuration of move_base is set for navigation without a map in an odometric frame (that is, without reference to a map).
+
+To launch the navigation demo, run:
+
+```
+roslaunch ridgeback_navigation odom_navigation_demo.launch
+```
+
+To visualize with the suggested RViz configuration launch:
+
+```
+roslaunch ridgeback_viz view_robot.launch config:=navigation
+```
+
+
+
+To send goals to the robot, select the _2D Nav Goal_ tool from the top toolbar, and then click anywhere in the RViz view to set the position.
+Alternatively, click and drag slightly to set the goal position and orientation.
+
+If you wish to customize the parameters of move_base, local costmap, global costmap and base_local_planner, clone [ridgeback_navigation](https://github.com/ridgeback/ridgeback/tree/melodic-devel/ridgeback_navigation) into your own workspace and modify the corresponding files in the `params` subfolder.
+
+### Making a Map {#gmapping-demo}
+
+In this demonstration, Ridgeback generates a map using Gmapping. Begin by launch the Gmapping launch file on the robot:
+
+```
+roslaunch ridgeback_navigation gmapping_demo.launch
+```
+
+And on your workstation, launch RViz with the suggested configuration:
+
+```
+roslaunch ridgeback_viz view_robot.launch config:=gmapping
+```
+
+
+
+
+ RViz with Ridgeback's Gmapping configuration
+
+
+
+You must slowly drive Ridgeback around to build the map.
+As obstacles come into view of the laser scanner, they will be added to the map, which is shown in RViz.
+You can either drive manually using the interactive markers, or semi-autonomously by sending navigation goals (as above).
+
+When you're satisfied, you can save the produced map using [map_saver](http://wiki.ros.org/map_server#map_saver):
+
+```
+rosrun map_server map_saver -f mymap
+```
+
+This will create a `mymap.yaml` and `mymap.pgm` file in your current directory.
+
+### Navigation with a Map
+
+Using [amcl](http://wiki.ros.org/amcl), Ridgeback is able to globally localize itself in a known map.
+AMCL takes in information from odometry, laser scanner and an existing map and estimates the robot's pose.
+
+To start the AMCL demo:
+
+```
+roslaunch ridgeback_navigation amcl_demo.launch map_file:=/path/to/my/map.yaml
+```
+
+If you don't specify `map_file`, it defaults to an included pre-made map of the default "Ridgeback Race" environment which Ridgeback's simulator spawns in.
+If you're using a real Ridgeback in your own environment, you'll definitely want to override this with the map created using the Gmapping demo.
+
+Before navigating, you need to initialize the localization system by setting the pose of the robot in the map.
+This can be done using 2D Pose Estimate in RViz or by setting the amcl `initial_pose` parameters. To visualize with the suggested RViz configuration launch:
+
+```
+roslaunch ridgeback_viz view_robot.launch config:=localization
+```
+
+When RViz appears, select the _Set 2D Pose tool_ from the toolbar, and click on the map to indicate to the robot approximately where it is.
+
+---
+
+## Ridgeback Tests {#testing-ridgeback}
+
+Ridgeback robots come preinstalled with a set of test scripts as part of the `ridgeback_tests` ROS package, which can be run to verify robot functionality at the component and system levels.
+
+If your Ridgeback does not have the `ridgeback_tests` ROS package installed already, you can manually install it by opening terminal and running:
+
+```
+sudo apt-get install ros-noetic-ridgeback-tests
+```
+
+### ROS Tests
+
+The `ros_tests` script exposes a set of interactive tests to verify the functionality of core features.
+These tests run at the ROS-level via ROS topics, and serve as a useful robot-level diagnostic tool for identifying the root cause of problems, or at the very least, narrowing down on where the root cause(s) may be.
+
+#### Running ROS Tests
+
+To run `ros_tests` on a Ridgeback robot, open terminal and run:
+
+```
+rosrun ridgeback_tests ros_tests
+```
+
+Upon running `ros_tests`, a list of available tests will be shown in a menu.
+From the menu, you can choose individual tests to run, or simply choose the option to automatically run all the tests.
+
+The details of each test are shown below.
+
+- **Lighting Test**
+
+ The **Lighting Test** checks that the robot's lights are working properly.
+
+ This test turns the lights off, red, green, and blue (in order) by publishing lighting commands to the `/cmd_lights` ROS topic.
+ The user will be asked to verify that the lights change to the expected colours.
+
+- **Motion Stop Test**
+
+ The **Motion Stop Test** checks that the robot's motion-stop is working properly.
+
+ This test subscribes to the `/mcu/status` ROS topic and checks that when the motion-stop is manually engaged by the user, the motion-stop state is correctly reported on the `/mcu/status` ROS topic.
+ The user will be asked to verify that the lights flash red while the motion-stop is engaged.
+
+- **ADC Test**
+
+ The **ADC Test** checks that the robot's voltage and current values across its internal hardware components are within expected tolerances.
+
+ This test subscribes to the `/mcu/status` ROS topic and checks that the voltage and current values across the internal hardware are within expected tolerances.
+
+- **Rotate Test**
+
+ The **Rotate Test** rotates the robot counter clockwise 2 full revolutions and checks that the motors, IMU, and EKF odometry are working properly.
+
+ This test:
+
+ - Subscribes to the `/imu/data` ROS topic to receive angular velocity measurements from the IMU's Gyroscope.
+ These measurements are converted into angular displacement estimations, and the robot will rotate until 2 full revolutions are estimated.
+ - Subscribes to the `/odometry/filtered` ROS topic to receive angular velocity estimations from the EKF odometry.
+ These measurements are converted into angular displacement estimations, and are output as comparison to the angular displacement estimations from the IMU's Gyroscope.
+ - Publishes to the `/cmd_vel` ROS topic to send drive commands to rotate the robot.
+ - The user will be asked to verify that the robot rotates 2 full revolutions.
+
+ :::note
+
+ The **Rotate Test** rotates the robot using the IMU's Gyroscope data, which inherently will not be 100% accurate.
+ Therefore, some undershoot/overshoot is to be expected.
+
+ :::
+
+- **Drive Test**
+
+ The **Drive Test** drives the robot forward 1 metre and checks that the motors, encoders, and encoder-fused odometry are working properly.
+
+ This test:
+
+ - Subscribes to the `/ridgeback_velocity_controller/odom` ROS topic to receive linear displacement estimations from the encoder-fused odometry.
+ The robot will drive forward until 1 metre is estimated.
+ - Subscribes to the `/feedback` ROS topic to receive linear displacement measurements from the individual encoders.
+ These measurements are output as comparison to the linear displacement estimations from the encoder-fused odometry.
+ - Subscribes to the `/joint_state` ROS topic to receive linear displacement measurements from individual the encoders.
+ These measurements are output as comparison to the linear displacement estimations from the encoder-fused odometry.
+ - Publishes to the `/cmd_vel` ROS topic to send drive commands to drive the robot.
+ - The user will be asked to verify that the robot drives forward 1 metre.
+
+ :::note
+
+ The **Drive Test** drives the robot using the Odometry data, which inherently will not be 100% accurate.
+ Therefore, some undershoot/overshoot is to be expected.
+
+ :::
+
+- **Cooling Test**
+
+ The **Cooling Test** checks that the fans are working properly.
+
+ This test makes the fans spin at different speeds by publishing fan speed commands to the `/mcu/cmd_fans` ROS topic.
+ The user will be asked to verify that the fans change to the expected speeds.
+
+### CAN Bus Test
+
+The `check_can_bus_interface` script checks that communication between the motors, encoders, robot's MCU, and robot's computer are working properly over the CAN bus interface.
+
+This script verifies that the `can0` interface is detected and activated, then proceeds to check the output of `candump` to verify that good CAN packets are being transmitted.
+
+#### Running CAN Bus Test
+
+To run the `check_can_bus_interface` script on a Ridgeback robot, open terminal and run:
+
+```
+rosrun ridgeback_tests check_can_bus_interface
+```
+
+---
+
+## Advanced Topics
+
+### Configuring the Network Bridge
+
+
+
+### Additional Simulation Worlds {#additional-sim}
+
+In addtion to the default `ridgeback_world.launch` file, `ridgeback_gazebo` also contains
+`spawn_ridgeback.launch`, which is intended to be included in any custom world to add a
+Ridgeback simulation to it.
+
+To add a Ridgeback to any of your own worlds, simply include the `spawn_ridgeback.launch` file in your own world's launch:
+
+```markup
+
+
+
+
+
+
+
+```
+
+Finally, Clearpath provides an additional suite of simulation environments that can be downloaded separately and used with Ridgeback, as described below.
+
+#### Clearpath Gazebo Worlds
+
+The Clearpath Gazebo Worlds collection contains 4 different simulation worlds, representative of different environments our robots are designed to operate in:
+
+- Inspection World: a hilly outdoor world with water and a cave
+- Agriculture World: a flat outdoor world with a barn, fences, and solar farm
+- Office World: a flat indoor world with enclosed rooms and furniture
+- Construction World: office world, under construction with small piles of debris and partial walls
+
+Ridgeback is supported in the Office and Construction worlds.
+
+#### Installation
+
+To download the Clearpath Gazebo Worlds, clone the repository from github into the same workspace as your Ridgeback:
+
+```
+cd ~/catkin_ws/src
+git clone https://github.com/clearpathrobotics/cpr_gazebo.git
+```
+
+Before you can build the package, make sure to install dependencies.
+Because Clearpath Gazebo Worlds depends on all of our robot's simulation packages, and some of these are currently only
+available as source code, installing dependencies with `rosdep install --from-paths [...]` will likely fail.
+
+To simulate Ridgeback in the Office and Construction worlds the only additional dependency is the `gazebo_ros` package.
+
+Once the dependencies are installed, you can build the package:
+
+```
+cd ~/catkin_ws
+catkin_make
+source devel/setup.bash
+```
+
+#### Running the Office Simulation
+
+Office World is a small indoor environment representing a commercial office space. It features several large, open
+areas with furniture, as well as a narrow hallway with smaller offices and meeting rooms. It is intended to simulate
+missions in commercial spaces, such as facilitating deliveries, security monitoring, and inspecting equipment.
+
+
+
+
+ Ridgeback in the Office World
+
+
+
+To launch Office World with a Ridgeback, run the following command:
+
+```
+roslaunch cpr_office_gazebo office_world.launch platform:=ridgeback
+```
+
+You should see Ridgeback spawn in the office world, as pictured.
+
+To customize Ridgeback's payload, for example to add additional sensors, see
+[Customizing Ridgeback's Payload](#customizing-ridgeback-payloads).
+
+Once the simulation is running you can use RViz and other tools as described
+in [Simulating Ridgeback](#simulating-ridgeback) and
+[Navigating Ridgeback](#navigating-ridgeback) to control and monitor the robot.
+For example, below we can see the `gmapping_demo` from `ridgeback_navigation`
+being used to build a map of the office world:
+
+
+
+
+ Gmapping in Office World
+
+
+
+You can see the complete layout of the office below:
+
+
+
+
+ The layout of Office World
+
+
+
+#### Running the Construction Simulation
+
+Construction World is the same basic layout as Office World, representing the same office space under construction/rennovation.
+It is an indoor environment with small hills of debris/rubble, partial walls, and piles of construction supplies. It
+is designed to simulate missions in any sort of construction site.
+
+
+
+
+ Ridgeback in the Construction World
+
+
+
+To launch Construction World with a Ridgeback, run the following command:
+
+```
+roslaunch cpr_office_gazebo office_construction_world.launch platform:=ridgeback
+```
+
+You should see Ridgeback spawn in the construction world, as pictured.
+
+To customize Ridgeback's payload, for example to add additional sensors, see
+[Customizing Ridgeback's Payload](#customizing-ridgeback-payloads).
+
+Once the simulation is running you can use RViz and other tools as described
+in [Simulating Ridgeback](#simulating-ridgeback) and
+[Navigating Ridgeback](#navigating-ridgeback) to control and monitor the robot.
+
+You can see the complete layout of the office below:
+
+
+
+
+ The layout of Construction World
+
+
+
+### Customizing Ridgeback's Payload {#customizing-ridgeback-payloads}
+
+To customize Ridgeback's payload you must use the environment variables described in
+[ridgeback_description](https://github.com/ridgeback/ridgeback/tree/melodic-devel/ridgeback_description).
+For example, to equip Ridgeback with a Sick LMS-111 lidar, as pictured in several of the images above, run
+
+```
+export RIDGEBACK_LASER=1
+```
+
+before launching the simulation world.
+
+You can also add additional sensors by creating a customized URDF and setting the `RIDGEBACK_URDF_EXTRAS` environment
+variable to point to it.
+
+For example, let's suppose you want to equip Ridgeback with an Intel RealSense D435 camera. First, install the `realsense2_camera`
+and `realsense2_description` packages, along with the gazebo plugins:
+
+```
+sudo apt-get install ros-$ROS_DISTRO-realsense2-camera ros-$ROS_DISTRO-realsense2-description ros-$ROS_DISTRO-gazebo-plugins
+```
+
+Then create your customized URDF file, for example `$HOME/Desktop/realsense.urdf.xacro`. Put the following in it:
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ 30
+
+
+ 1.5184351666666667
+ 1.0122901111111111
+
+
+ 640
+ 480
+ RGB8
+
+
+
+ 0.01
+ 50.0
+
+
+
+ 0.2
+ true
+ 30
+ realsense
+ color/image_raw
+ color/camera_info
+ depth/image_rect_raw
+ depth/camera_info
+ depth/color/points
+ front_realsense_gazebo
+ 0.105
+ 8.0
+ 0.00000001
+ 0.00000001
+ 0.00000001
+ 0.00000001
+ 0.00000001
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+This file defines the additional links for adding a RealSense camera to the robot, as well as configuring the `openni_kinect`
+plugin for Gazebo to simulate data from a depth camera. The camera itself will be connected to the Ridgeback's `front_mount`
+link, offset 5cm towards the front of the robot.
+
+Now, set the `RIDGEBACK_URDF_EXTRAS` environment variable and try viewing the Ridgeback model:
+
+```
+export RIDGEBACK_URDF_EXTRAS=$HOME/Desktop/realsense.urdf.xacro
+roslaunch ridgeback_viz view_model.launch
+```
+
+You should see the Ridgeback model in RViz, with the RealSense camera mounted to it:
+
+
+
+
+ Ridgeback with a RealSense D435
+
+
+
+To launch the customized Ridgeback in any of the new simulation environments, similarly run:
+
+```
+export RIDGEBACK_URDF_EXTRAS=$HOME/Desktop/realsense.urdf.xacro
+roslaunch cpr_office_gazebo office_world.launch platform:=ridgeback
+```
+
+You should see Ridgeback spawn in the office world with the RealSense camera:
+
+
+
+
+ Ridgeback with a RealSense D435 in Office World
+
+
+
+You can view the sensor data from the RealSense camera by running
+
+```
+roslaunch ridgeback_viz view_robot.launch
+```
+
+and adding the camera & pointcloud from the `/realsense/color/image_raw` and `/realsense/depth/color/points` topics:
+
+
+
+
+ Ridgeback with a RealSense in RViz showing pointcloud and RGB topics
+
+
+
+---
+
+## Support {#support}
+
+
diff --git a/docs/robots/ridgeback/user_manual_ridgeback.mdx b/docs/robots/ridgeback/user_manual_ridgeback.mdx
index 1aaf819eb..b2a5ba6c0 100644
--- a/docs/robots/ridgeback/user_manual_ridgeback.mdx
+++ b/docs/robots/ridgeback/user_manual_ridgeback.mdx
@@ -1,12 +1,332 @@
---
title: User Manual
sidebar_position: 1
+toc_min_heading_level: 2
+toc_max_heading_level: 4
---
import ComponentIntroductionRidgeback from "/components/introduction_ridgeback.mdx";
+import ComponentSupport from "/components/support.mdx";
+import ComponentUsingRos from "/components/using_ros.mdx";
+import ComponentWiredRobotConnection from "/components/wired_robot_connection.mdx";
+import ComponentWifiRobotConnection from "/components/wifi_robot_connection.mdx";
+import ComponentRemoteRosConnectivity from "/components/remote_ros_connectivity.mdx";
+import ComponentCommonSafeWorkProcedures from "/components/common_safe_work_procedures.mdx";
+import ComponentSafetyWarning from "/components/safety_warning.mdx";
-:::warning todo—under construction
+## Introduction
+
+Clearpath Robotics Ridgeback is a rugged, indoor omnidirectional platform designed to move manipulators and other heavy
+payloads with ease and precision. This manual contains information about the setup, safe operation, and maintenance of
+your Ridgeback unmanned omnidirectional platform.
+
+
+
+### Shipment Contents
+
+Your Ridgeback shipment contains the following:
+
+- Ridgeback Omnidirectional Robotic Platform, including computer, forward-facing LIDAR, batteries, and integrated
+ battery charger
+- One Sony PS4 Bluetooth controller
+- One Ridgeback quick start guide
+
+If you elected to purchase standard payload modules or custom integration services with Ridgeback, then additional
+equipment will be included per your specific configuration, plus further documentation as required.
+
+### Hardware Overview
+
+#### System Architecture
+
+Ridgeback is built around a computer running Ubuntu (Intel-based computer or Jetson developer kit), paired with a 32-bit microcontroller MCU.
+The MCU handles I/O, power supply monitoring, and motor control, as well as supplying data from the integrated IMU.
+The communication channel between the MCU and computer is a Gigabit Ethernet connection.
+
+#### Exterior Features {#ridgeback-exterior-features}
+
+The exterior of Ridgeback is shown below and includes:
+
+- Stop, Reset, and Power buttons
+- Body Lights
+- User Bay
+- Payload Integration Plate
+
+
+
+
+ Ridgeback exterior
+
+
+
+#### Buttons
+
+There are four push buttons located on the back of the Ridgeback: the two red mushroom Stop buttons, the
+Stop Reset button below the left rear Stop button, and the Power ON/OFF button below the rear right
+Stop button. On the front of the robot, there are another two red mushroom Stop buttons. These buttons
+are described further in the table below.
+
+| Button | Description |
+| :----------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Power ON/OFF | Turns Ridgeback on or off. Note that the power button is a soft, momentary switch: to shut Ridgeback down, press and release it, and when the Onboard Computer has completed a safe power-down, the robot itself will also power-down. |
+| 4X Stop | Stops Ridgeback by placing the four integrated motor drivers into an electrical reset condition. This is intended as a backup option for immobilizing Ridgeback when autonomy software malfunctions or commands unintended motion. The Stop buttons have a mechanical latch, which can be released by twisting the latched button. If you have a wireless Stop pendant, or other stop-asserting hardware you would like to integrate with Ridgeback, a breakout header is supplied on the main microcontroller PCB. |
+| Stop Reset | Clears the electrically-enforced stop latch, allowing Ridgeback to run again after it has been stopped via one of the Stop buttons. Note that the mushroom button's mechanical latch must be cleared before the electrical reset can have any effect. |
+
+#### Body Lights
+
+Ridgeback includes eight RGB body lights, stacked in a pair on each corner of the chassis. These lights
+express system status according to the table below, but in the absence of one of the low-level conditions, they can
+be commanded from ROS to display indications from autonomy or other higher-level software.
+See http://wiki.ros.org/ridgeback_base for information on commanding the body lights.
+
+| Front Lights | Rear Lights | System State |
+| :------------------ | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Solid red | Solid red | The MCU is not in contact with the computer. That is, the `rosserial` connection is not active. This condition will be seen briefly on startup while Ridgeback's computer is booting up. If it persists, or is seen after initialization, either the base node on the computer has crashed, the network switch has failed, or a serious MCU error has occurred. If you suspect one of these conditions, please contact support. |
+| Flashing red | Flashing red | Stop mode is engaged. To disengage, twist the mushroom buttons to ensure that they are unlatched, and check any external stop hardware, if present. |
+| Flashing orange | Flashing orange | A system fault has been detected, typically the motor drivers. Refer to logs or diagnostics for details. |
+| Pulsing orange | Pulsing orange | Battery is low. Connect Ridgeback to the charger. |
+| Alternating red/off | Alternating red/orange | All stops are mechanically cleared but still electrically latched. Press the Stop Reset button to enable full operation. |
+| Pulsing green | Pulsing green | Charger is connected, Ridgeback's battery is charging. Note that the battery can also be charged with the platform off. This indication will only be seen if the charger is connected while Ridgeback is powered up. |
+| Solid green | Solid green | Charger is connected and Ridgeback is charged fully. |
+| Solid white | Solid red | Normal operation; ready to drive. The intensity of the lights will increase slightly when actually in motion. This is the status which may be overridden by publishing your own light patterns to the `/cmd_lights` ROS topic. |
+
+#### User Bay
+
+The User Bay provides access to the User Power Panel, as well as USB and Ethernet ports, and additional
+space for stowing user equipment. The electrical panel can be used to power your payloads, with further details available
+in [Electrical Integration](/docs/robots/ridgeback/integration_ridgeback#ridgeback-payload-electrical-integration).
+The USB3 ports are connected directly to the Onboard Computer, and the Ethernet ports connect to the onboard network switch. To
+connect a device to the onboard network, it is suggested to give it a static IP in the 192.168.131.x/24 subnet and
+this cannot be changed since the MCU is statically set to 192.168.131.2 and expects the computer to be at
+192.168.131.1. Avoid IPs in use by the following pre-existing devices:
+
+| IP Address | Device Assignment |
+| :------------- | :--------------------------------------------------- |
+| 192.168.131.1 | Onboard Computer (both ports, br0 network interface) |
+| 192.168.131.2 | Ethernet-connected MCU |
+| 192.168.131.20 | Front-facing LIDAR |
+| 192.168.131.21 | Rear-facing LIDAR (if present) |
+
+See [Network IP Addresses](/docs/tools/network_ip_addresses) for a full list of common IP addresses.
+
+#### Payload Integration Plate
+
+The Payload Integration Plate provides a robust foundation for mounting payload structures such as
+UR5/UR10 manipulation arms or any other combination of sensors and manipulators. For more information
+and guidance on mounting payload structures on top of Ridgeback, please refer to
+[Mechanical Integration](/docs/robots/ridgeback/integration_ridgeback#ridgeback-payload-mechanical-integration).
+
+#### Orientation References
+
+The reference frame used by all Clearpath Robotics ground robots is based on ISO 8855.
+
+
+
+When commanded with a positive translational velocity (forward), wheels travel in the positive x-direction.
+The direction of the axes differs from those used for roll, pitch, and yaw in aircraft, and care should be taken to ensure that data is interpreted correctly.
+
+
+
+### System Specifications
+
+| Specification | Measurement |
+| :-------------------- | :--------------------------------------------------------------------------- |
+| Dimension, Length | 960 mm |
+| Dimension, Width | 793 mm |
+| Dimension, Height | 311 mm † |
+| Ground Clearance | 18 mm |
+| Maximum Payload | 100 kg |
+| Speed, Maximum | 1.1 m/s |
+| Operating Environment | Indoor |
+| Operating Time | 15 hours with max payload (24 V 100 Ah) |
+| Battery Chemistry | Marine Grade AGM Sealed Lead Acid |
+| Charge Time | 8 hours |
+| User Power | 20 A @ VBAT (24 V), 5 A @ 12 V, 5 A @ 5 V |
+| Power | 800 W Typical Use, Shore Power Available |
+| Control Modes | Kinematic control (forward, sideways, rotation), individual wheel velocities |
+| Communication | Ethernet, USB 3.0, RS232 |
+| Internal Sensing | Battery Status, Wheel Odometry, Motor Currents, Onboard IMU |
+
+† The height of the Ridgeback was increased by 15 mm starting with the robot with serial number R100-0111. Older Ridgebacks measure 296 mm high.
+
+
+
+
+
+---
+
+## Getting Started
+
+You are ready to go! This section details how to get Ridgeback into action.
+If you are just opening up the shipping crate, you can unfold the ramp, and remove the ratchet straps which
+secure Ridgeback during shipping.
+
+To begin, place Ridgeback "up on blocks" as described in the [Safety](#safety) section, making sure that the wheels
+are clear of the ground.
+
+### Onboard Computer Setup
+
+A standard Ridgeback ships with an integrated Onboard Computer that is directly connected to the Ridgeback MCU. Most users
+will also make use of a Remote Computer, which is used to control Ridgeback and gather data.
+These two computers must be set up to communicate with each other. Details on the Remote Computer setup
+can be found in [Ridgeback Tutorials](/docs/robots/ridgeback/tutorials_ridgeback).
+
+### Powering Up
+
+Press the power button on the back of Ridgeback. Once the body lights are flashing red, clear the all Stop
+buttons (if necessary), and press the blinking red Stop Reset button. In a moment, the platform should go to
+solid red lights in back, and solid white in front.
+
+### Network Configuration
+
+To get Ridgeback connected to your local Wi-Fi network, you must first access the Onboard Computer using a wired connection to the robot.
+Open the User Bay, then connect to one of the network ports with a standard Ethernet cable.
+Then, see [Ridgeback Tutorials](/docs/robots/ridgeback/tutorials_ridgeback#ridgeback-networking) for details
+on completing the networking setup.
+
+### Connecting and Using the Controller {#controller}
+
+To use your controller, it must be paired with your Ridgeback and powered on.
+For a standard Ridgeback with the Onboard Computer from Clearpath Robotics, the controller is already paired with your Ridgeback.
+If your controller has become unpaired or if you wish to pair a new controller, following the instructions in the
+[Ridgeback Tutorials](/docs/robots/ridgeback/tutorials_ridgeback#pairing-the-controller).
+
+To teleoperate Ridgeback, first clear the motion-stop.
+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.
+
+
+
+
+ PS4 Controls Layout
+
+
+
+### Using ROS
+
+
+
+### Battery Charging
+
+Ridgeback uses two 8A31DTM Group-31 lead-acid (PbSO4) deep-cycle AGM batteries mounted low in the
+chassis. They provide an output of 24 VDC (nominal) and 100 Ah of capacity.
+
+When finished with the Ridgeback, press and release the power button to power it off.
+
+Ridgeback has an internal charger. All that is required to charge Ridgeback is to open the User Bay access
+panel, locate the charger power cord and plug it into any 85-270 VAC 50/60Hz mains outlet. The robot can be
+turned "on", though we recommend against driving the robot when the battery is charging.
+
+The battery pack is rugged and designed for the environments into which Ridgeback may be deployed.
+However, please take note of the following:
+
+- The batteries and robot must not be stored or operated above 50 ◦C or below -20 ◦C.
+- If the robot is to be stored for any length of time it should be in a cool, dry location. The batteries should
+ be fully charged and periodically maintained at full charge to ensure a long service life. Ridgeback
+ should not be stored with a low state of charge nor for extended periods of time without top-up charging.
+ The batteries may suffer from "sulfation" which reduces their capacity and lifetime.
+- Do not allow the batteries to reach a depth of discharge of 80%.
+- The batteries must not be punctured or disassembled.
+- The batteries should be disposed of pursuant to your local regulations regarding electrical and/or hazardous waste.
+
+Please contact Clearpath Robotics for additional information about Ridgeback's batteries or for information about
+purchasing additional batteries.
+
+---
+
+## Safety Considerations {#safety}
+
+Clearpath Robotics is committed to high standards of safety.
+Ridgeback contains several features to protect the safety of users and the integrity of the robot.
+
+:::caution
+
+Ridgeback is a powerful, heavy, fast moving robotic platform. Please read the following notices carefully.
:::
+
+### General Warnings
+
+Ridgeback is a rugged and high-performance vehicle.
+For the safety of yourself and others, always conduct initial experiments and software development with the vehicle raised off the ground.
+Place a wooden crate, a set of sawhorses, a sturdy storage tub, or any other solid flat structure having a height greater than 150 mm (6 inches)
+under Ridgeback to keep the wheels clear of the ground ("up on blocks").
+
+When starting out, favour slower wheel speeds.
+Ridgeback's control loops can accurately maintain velocities as low as 0.1 m/s.
+Operating at such speeds will give you more time to react if things don't go quite as you expect.
+
+### Stop Buttons {#ridgeback-stop-buttons}
+
+Ridgeback has four red Stop buttons, two on the front and two on the back. To engage Stop Mode, press
+any of the four Stop buttons once; you should see that all four corner LEDs are flashing red.
+To disengage Stop Mode, pull any engaged Stop buttons to release them, then press the Stop Reset button
+located below the rear-left Stop button; all corner LEDs should return to their original values.
+
+When in Stop mode the Ridgeback will not drive. The commands received during stop are not buffered;
+Ridgeback will always act on the latest commands received. This means that if motion commands are discontinued
+before the Stop button is released, the Ridgeback will not move. If the commands are continued,
+Ridgeback will move at the speed commanded once the Stop is released.
+
+Always ensure the Stop buttons are accessible at all times. Avoid mounting payloads that extend over the
+front or rear of Ridgeback and would occlude the Stop buttons.
+
+Note that the Ridgeback MCU board includes a breakout to allow an external motion-stop button/switch to be
+integrated by the end user, which could be used to engage/disengage Stop Mode.
+See [Optional External Motion Stop](/docs/robots/ridgeback/integration_ridgeback#ridgeback-external-motion-stop)
+for details on adding an external motion-stop button/switch.
+
+### Electrical System
+
+Ridgeback is powered by two lead-acid (PbSO4) deep-cycle AGM batteries that are capable of delivering over 2000 W
+for short durations. This gives Ridgeback's motors their great performance; however, it is also enough power to
+cause severe bodily harm. Always use caution when operating Ridgeback to avoid personal injury or property damage.
+To ensure safety, please observe the following precautions:
+
+- Do not tamper with the battery terminals or wiring.
+- Do not tamper with the fuse panel, except to check and change the fuses, and to connect and disconnect the battery plug.
+- Always replace fuses with the same type and rating to ensure continued protection against risk of fires.
+- Consult Clearpath Robotics Support if you need to service the batteries.
+- Do not lay tools or other objects on top of the batteries.
+- Do not move the robot while charging the batteries.
+- Charge the battery only with the integrated charger installed by Clearpath Robotics.
+- Please dispose of the batteries properly or return them to Clearpath Robotics to do so.
+
+### Lifting and Transport
+
+- Ensure that Ridgeback's Stop Mode is engaged when transporting short distances and powered off when transporting longer distances.
+- Do not push the robot at more than 0.5 m/s (1.6 ft/s) or damage to the motor controls may occur.
+
+### Performance Considerations
+
+Included in Ridgeback are native software checks and limits to protect the robot.
+However, it is recommended to monitor the system's status during usage with the `/status` and `/diagnostics` topics.
+These topics provides useful information regarding voltages, currents, temperatures and general health of the system.
+
+### Recommended Safe Work Procedures
+
+
+
+---
+
+## Support {#ridgeback-support}
+
+
diff --git a/docs/robots/warthog/user_manual_warthog.mdx b/docs/robots/warthog/user_manual_warthog.mdx
index 4b7d2dd78..56e4b4533 100644
--- a/docs/robots/warthog/user_manual_warthog.mdx
+++ b/docs/robots/warthog/user_manual_warthog.mdx
@@ -93,9 +93,9 @@ For more information and guidance on mounting payload structures on top of Warth
| Drive Configuration | 4 X 4 Skid Steer |
| Operating Environment | Outdoor |
| Traction | Ø610 mm (24") Argo tire (Turf tire or 300 mm (12") wide Quad Track System optional) |
-| Battery Chemistry | AGM sealed lead-acid (lithium optional) |
-| Capacity | 105 Ah at 48 V, expandable to 200 Ah with lithium option |
-| Nominal Run Time | Lead-acid: 2.5 hrs, lithium: 6 hrs |
+| Battery Chemistry | AGM sealed lead-acid (lithium optional) |
+| Capacity | 105 Ah at 48 V, expandable to 200 Ah with lithium option |
+| Nominal Run Time | Lead-acid: 2.5 hrs, lithium: 6 hrs |
| Charge Time | 4 Hours approx |
| User Power | 12 V, 24 V and 48 V Fused at 10A |
| Control Modes | Remote control, computer controlled velocity commands, indoor/outdoor autonomy packages |
diff --git a/static/img/robot_images/ridgeback_images/construction_world.png b/static/img/robot_images/ridgeback_images/construction_world.png
new file mode 100644
index 000000000..6c30b5adc
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/construction_world.png differ
diff --git a/static/img/robot_images/ridgeback_images/mcu_buttons.png b/static/img/robot_images/ridgeback_images/mcu_buttons.png
new file mode 100644
index 000000000..ff6000bfe
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/mcu_buttons.png differ
diff --git a/static/img/robot_images/ridgeback_images/mcu_usb.png b/static/img/robot_images/ridgeback_images/mcu_usb.png
new file mode 100644
index 000000000..d8900bbd4
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/mcu_usb.png differ
diff --git a/static/img/robot_images/ridgeback_images/office_world.png b/static/img/robot_images/ridgeback_images/office_world.png
new file mode 100644
index 000000000..31283eb15
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/office_world.png differ
diff --git a/static/img/robot_images/ridgeback_images/payload_integration_plate.png b/static/img/robot_images/ridgeback_images/payload_integration_plate.png
new file mode 100644
index 000000000..13849748c
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/payload_integration_plate.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback-1.png b/static/img/robot_images/ridgeback_images/ridgeback-1.png
new file mode 100644
index 000000000..2327f8332
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback-1.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback-sony-ps4-controller-labelled.png b/static/img/robot_images/ridgeback_images/ridgeback-sony-ps4-controller-labelled.png
new file mode 100644
index 000000000..ebc4401a2
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback-sony-ps4-controller-labelled.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_construction_world.png b/static/img/robot_images/ridgeback_images/ridgeback_construction_world.png
new file mode 100644
index 000000000..a3f348605
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_construction_world.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_dimensions.png b/static/img/robot_images/ridgeback_images/ridgeback_dimensions.png
new file mode 100644
index 000000000..788715173
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_dimensions.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_external_features.png b/static/img/robot_images/ridgeback_images/ridgeback_external_features.png
new file mode 100644
index 000000000..cb06ba820
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_external_features.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_gazebo.png b/static/img/robot_images/ridgeback_images/ridgeback_gazebo.png
new file mode 100644
index 000000000..a2b5fae39
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_gazebo.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_gazebo_laser.png b/static/img/robot_images/ridgeback_images/ridgeback_gazebo_laser.png
new file mode 100644
index 000000000..f691ac55a
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_gazebo_laser.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_office_gmap.png b/static/img/robot_images/ridgeback_images/ridgeback_office_gmap.png
new file mode 100644
index 000000000..7428a2faf
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_office_gmap.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_office_realsense.png b/static/img/robot_images/ridgeback_images/ridgeback_office_realsense.png
new file mode 100644
index 000000000..0534fcfbd
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_office_realsense.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_office_world.png b/static/img/robot_images/ridgeback_images/ridgeback_office_world.png
new file mode 100644
index 000000000..f87d868ac
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_office_world.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_rviz.png b/static/img/robot_images/ridgeback_images/ridgeback_rviz.png
new file mode 100644
index 000000000..de23be5bf
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_rviz.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_rviz_add_laser.png b/static/img/robot_images/ridgeback_images/ridgeback_rviz_add_laser.png
new file mode 100644
index 000000000..507be73a3
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_rviz_add_laser.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_rviz_laser.png b/static/img/robot_images/ridgeback_images/ridgeback_rviz_laser.png
new file mode 100644
index 000000000..054aa68ca
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_rviz_laser.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_rviz_office_realsense.png b/static/img/robot_images/ridgeback_images/ridgeback_rviz_office_realsense.png
new file mode 100644
index 000000000..138e5418e
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_rviz_office_realsense.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_rviz_realsense.png b/static/img/robot_images/ridgeback_images/ridgeback_rviz_realsense.png
new file mode 100644
index 000000000..91f154636
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_rviz_realsense.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_urdf.png b/static/img/robot_images/ridgeback_images/ridgeback_urdf.png
new file mode 100644
index 000000000..e6242e358
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_urdf.png differ
diff --git a/static/img/robot_images/ridgeback_images/ridgeback_user_power.png b/static/img/robot_images/ridgeback_images/ridgeback_user_power.png
new file mode 100644
index 000000000..3b38ac392
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/ridgeback_user_power.png differ
diff --git a/static/img/robot_images/ridgeback_images/rviz-gmapping.png b/static/img/robot_images/ridgeback_images/rviz-gmapping.png
new file mode 100644
index 000000000..138952ee1
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/rviz-gmapping.png differ
diff --git a/static/img/robot_images/ridgeback_images/rviz-odom-navigation.png b/static/img/robot_images/ridgeback_images/rviz-odom-navigation.png
new file mode 100644
index 000000000..04f1214aa
Binary files /dev/null and b/static/img/robot_images/ridgeback_images/rviz-odom-navigation.png differ