diff --git a/README.md b/README.md index 7d9f90c6..34222048 100644 --- a/README.md +++ b/README.md @@ -154,10 +154,12 @@ Next, to start the development of a new version, the latest released version of For Example, for making a new release after humble, the contents of `docs_versioned_docs/version-ros2humble/` would be copied to `docs/`. This folder will then be built as the "next" version. Once enabled, this version will be available in the version drop down (just like how it is visible for OutdoorNav - http://docs.clearpathrobotics.com/docs_outdoornav_user_manual/next/index). -Enable the visibility of the "next" version by setting +Enable the visibility of the "next" version by setting + ``` includeCurrentVersion: true, ``` + in `docusaurus.config.js` alongside `id: "docs",`. Ensure to reset this to false before releasing the changes. Continue through to step 9 of the workflow above to complete the update. Once complete, continue to the release phase. @@ -198,11 +200,11 @@ includeCurrentVersion: false, 5. Empty the docs folder leaving only the .keep file (such that the folder is still tracked by git). -6. When ready, publish your branch on GitHub, and submit a Pull Request to merge your changes into the _development_ branch. - Be sure to include the updates to the following: - - docs_versioned_docs/ - - docs_versioned_sidebars/ - - docs_versions.json +6. When ready, publish your branch on GitHub, and submit a Pull Request to merge your changes into the _development_ branch. + Be sure to include the updates to the following: + - docs_versioned_docs/ + - docs_versioned_sidebars/ + - docs_versions.json @@ -341,7 +343,7 @@ The list below are not strict rules, but are considered good practice to keep im ## Links and Imports -All links to, or imports of versioned elements (images, markdown files etc.) must be referred to using relative links (`img/image-name.png` or `../../robots/add-ons/pacs.mdx`), including the file extension. These versioned pages will be moved together and ensures that the correct version is used. Including the file extension ensures that the next page will be located based on the file location not the generated links. This method is much more robust and should be followed whenever possible. +All links to, or imports of versioned elements (images, markdown files etc.) must be referred to using relative links (`img/image-name.png` or `../../robots/add-ons/pacs.mdx`), including the file extension. These versioned pages will be moved together and ensures that the correct version is used. Including the file extension ensures that the next page will be located based on the file location not the generated links. This method is much more robust and should be followed whenever possible. When using visual studio code, the `Relative Path` extension can make this process easy. All links to, or imports of unversioned static elements must be referred to using absolute paths (`/static/img/image-name.png`). This allows these assets to be found irrelevant of the location of the particular page. This link should be the path to the file including the file extension, even when it is an md or mdx file. diff --git a/docs_versioned_docs/version-ros2humble/components/_jackal_firmware.mdx b/docs_versioned_docs/version-ros2humble/components/_jackal_firmware.mdx index a7c65f47..5ba4cc90 100644 --- a/docs_versioned_docs/version-ros2humble/components/_jackal_firmware.mdx +++ b/docs_versioned_docs/version-ros2humble/components/_jackal_firmware.mdx @@ -15,7 +15,7 @@ tray secured to the underside of the lid. 1. The `M_RST` button, used to reset the MCU. 2. The MCU mode switch. Left is `NORM` or normal mode, right is `ALT` used for flashing the firmware. -3. The mini-USB port used for transmitting data. This should be connected to Jackal's PC for both normal operation and firmware flashing. +3. The mini-USB port used for transmitting data. This should be connected to Jackal's computer for both normal operation and firmware flashing. ::: diff --git a/docs_versioned_docs/version-ros2humble/components/_tutorials_link.mdx b/docs_versioned_docs/version-ros2humble/components/_tutorials_link.mdx index ba1bfeb9..b38a374a 100644 --- a/docs_versioned_docs/version-ros2humble/components/_tutorials_link.mdx +++ b/docs_versioned_docs/version-ros2humble/components/_tutorials_link.mdx @@ -14,7 +14,7 @@ For a general list of topics and descriptions see the [Clearpath API](../ros/api ## Software Setup - [Robot Software](../ros/installation/robot.mdx) -- [Remote Computer](../ros/installation/remote_pc.mdx) +- [Offboard Computer](../ros/installation/offboard_pc.mdx) - [PS4 Joystick Controller (if applicable)](../ros/installation/controller.mdx) ## Using your Robot diff --git a/docs_versioned_docs/version-ros2humble/components/_computer_networking_setup_install.mdx b/docs_versioned_docs/version-ros2humble/components/networking/_computer_networking_setup_install.mdx similarity index 77% rename from docs_versioned_docs/version-ros2humble/components/_computer_networking_setup_install.mdx rename to docs_versioned_docs/version-ros2humble/components/networking/_computer_networking_setup_install.mdx index 7c4f48bb..6eea619e 100644 --- a/docs_versioned_docs/version-ros2humble/components/_computer_networking_setup_install.mdx +++ b/docs_versioned_docs/version-ros2humble/components/networking/_computer_networking_setup_install.mdx @@ -1,6 +1,6 @@ The `clearpath_computer_setup` package offers a terminal menu tool for configuring a robot computer. The main feature of this tool is the ability to generate `netplan` configurations. The `clearpath_computer_setup` -package is available on the [Clearpath package server](../ros/installation/robot.mdx#clearpath-package-server). +package is available on the [Clearpath package server](../../ros/installation/robot.mdx#clearpath-package-server). It should be installed on the robot's computer: diff --git a/docs_versioned_docs/version-ros2humble/components/networking/_ros2_networking_overview.mdx b/docs_versioned_docs/version-ros2humble/components/networking/_ros2_networking_overview.mdx new file mode 100644 index 00000000..8a542586 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/networking/_ros2_networking_overview.mdx @@ -0,0 +1,14 @@ +ROS 2 networking uses an abstracted middleware referred to as the "RMW Implementation". The Clearpath robot packages support +eProsima Fast DDS as the middleware implementation. This middleware has two supported options for ROS 2 node discovery, Simple +Discovery and Discovery Server. Each of these discovery mechanisms has their own use case: + +**Simple Discovery** +- Default, does not require manual setup +- Generally operates on the basis that any ROS 2 devices on the network should be discoverable and connect automatically +- Requires multicasting on the network (may be restricted on school or corporate networks) +- Good for simple systems (small number of robots on a dedicated local network) + +**Discovery Server** +- Requires manual configuration in the robot.yaml +- Generally operates on the basis that ROS 2 networks should be controlled and can only discover other devices as directed +- Does not require multicasting (more likely to work on school or corporate networks) \ No newline at end of file diff --git a/docs_versioned_docs/version-ros2humble/components/_standard_clearpath_bridge_setup.mdx b/docs_versioned_docs/version-ros2humble/components/networking/_standard_clearpath_bridge_setup.mdx similarity index 83% rename from docs_versioned_docs/version-ros2humble/components/_standard_clearpath_bridge_setup.mdx rename to docs_versioned_docs/version-ros2humble/components/networking/_standard_clearpath_bridge_setup.mdx index f6d76ac5..a760e3bf 100644 --- a/docs_versioned_docs/version-ros2humble/components/_standard_clearpath_bridge_setup.mdx +++ b/docs_versioned_docs/version-ros2humble/components/networking/_standard_clearpath_bridge_setup.mdx @@ -1,5 +1,5 @@ The default networking configuration for a robot's computer is to bridge all Ethernet interfaces and assign the computer -the IP address `192.168.131.1`. See [Network IP Addresses](../ros/networking/network_ip_addresses.mdx) for a detailed list of IP ranges. +the IP address `192.168.131.1`. See [Network IP Addresses](../../ros/networking/network_ip_addresses.mdx) for a detailed list of IP ranges. To configure the default bridge: 1. Run `sudo clearpath-computer-setup` diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/computers/jetson/jetson_software.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/computers/jetson/jetson_software.mdx index 806ca2aa..360aeacd 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/computers/jetson/jetson_software.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/computers/jetson/jetson_software.mdx @@ -390,7 +390,7 @@ This step is optional. See instructions [here](../../../../ros/installation/controller.mdx#ps4-controller) for how to pair the PS4 controller. -### Step 7: Use Remote Computer with Jetson (Optional) +### Step 7: Use Offboard Computer with Jetson (Optional) :::note @@ -398,6 +398,6 @@ This step is optional. ::: -To use your Remote Computer (eg. laptop) with the Jetson, note the IP address of the Jetson, install the robot-specific -desktop packages on the Remote Computer, at set up your Remote Computer to use the Jetson as the ROS master. -Refer to the "Installing Remote Computer Software" section of your robot User Manual for details. +To use your Offboard Computer (for example laptop) with the Jetson, note the IP address of the Jetson, and install the robot-specific +desktop packages on the Offboard Computer. +Refer to the "Installing Offboard Computer Software" section of your robot User Manual for details. diff --git a/docs_versioned_docs/version-ros2humble/robots/indoor_robots/dingo/user_manual_dingo.mdx b/docs_versioned_docs/version-ros2humble/robots/indoor_robots/dingo/user_manual_dingo.mdx index 5a24dbb6..02000be0 100644 --- a/docs_versioned_docs/version-ros2humble/robots/indoor_robots/dingo/user_manual_dingo.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/indoor_robots/dingo/user_manual_dingo.mdx @@ -456,7 +456,7 @@ The direction of the axes differs from those used for roll, pitch, and yaw in ai You are ready to go! This section details how to get Dingo into action. To begin, place Dingo "up on blocks" as described in the [Safety](#safety) section, making sure that the wheels are clear of the ground. -For most Dingo setups, there will be an Onboard Computer which is directly connected to the Dingo and a Remote Computer which is used to control Dingo and gather data. +For most Dingo setups, there will be an Onboard Computer which is directly connected to the Dingo and an Offboard Computer which is used to control Dingo and gather data. These two computers must be set up to communicate with each other. ### Onboard Computer Setup diff --git a/docs_versioned_docs/version-ros2humble/robots/indoor_robots/ridgeback/user_manual_ridgeback.mdx b/docs_versioned_docs/version-ros2humble/robots/indoor_robots/ridgeback/user_manual_ridgeback.mdx index 137e3a8b..d253e420 100644 --- a/docs_versioned_docs/version-ros2humble/robots/indoor_robots/ridgeback/user_manual_ridgeback.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/indoor_robots/ridgeback/user_manual_ridgeback.mdx @@ -170,8 +170,8 @@ 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 +will also make use of an Offboard 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 Offboard Computer setup can be found in [Ridgeback Tutorials](tutorials_ridgeback.mdx). ### Powering Up diff --git a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/husky/user_manual_husky.mdx b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/husky/user_manual_husky.mdx index fc2c13d5..113815dc 100644 --- a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/husky/user_manual_husky.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/husky/user_manual_husky.mdx @@ -179,7 +179,7 @@ _²robot climbing 30° grade with high-mounted payload, or turning in place in h You are ready to go! This section details how to get Husky into action. To begin, place Husky "up on blocks" as described in the [Safety](#safety) section, making sure that the wheels are clear of the ground. -For most Husky setups, there will be an Onboard Computer which is directly connected to the Husky and a Remote Computer which is used to control Husky and gather data. +For most Husky setups, there will be an Onboard Computer which is directly connected to the Husky and an Offboard Computer which is used to control Husky and gather data. These two computers must be set up to communicate with each other. ### Onboard Computer Setup @@ -225,7 +225,7 @@ To reconnect the battery: To power on Husky, firmly press the power button located above the status panel. It will illuminate blue, and the status panel lights will show a brief test pattern. -The `COMM` status light will turn red, as the PC is not yet communicating with Husky. +The `COMM` status light will turn red, as the computer is not yet communicating with Husky. The `STOP` status light will be red if the Stop button is pressed. If the Stop button is not pressed, press it and verify that the `STOP` light illuminates. diff --git a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/integration_jackal.mdx b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/integration_jackal.mdx index 2335a063..7211fffe 100644 --- a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/integration_jackal.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/integration_jackal.mdx @@ -43,7 +43,7 @@ Except for bus-powered USB cameras, most payloads have separate leads for power Data connections may be brought through the hatch and connected directly to the internal computer. Both of Jackal's internal computer options support USB3 and Ethernet connectivity. With the performance -PC, the PCIe slot may be used to supply Firewire, Thunderbolt, or additional USB3 ports, as necessary. +computer, the PCIe slot may be used to supply Firewire, Thunderbolt, or additional USB3 ports, as necessary. Additionally, the internal mounting area may be used for an Ethernet switch, when attaching multiple Ethernet payloads, or for a PoE power injector as required. diff --git a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/user_manual_jackal.mdx b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/user_manual_jackal.mdx index 3fa0d60c..cf6d04a2 100644 --- a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/user_manual_jackal.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/jackal/user_manual_jackal.mdx @@ -41,7 +41,7 @@ equipment will be included per your specific configuration, plus further documen Jackal is built around a computer running Ubuntu (Intel-based computer or Jetson developer kit), paired with a 32-bit microcontroller MCU. The MCU handles IO, power supply monitoring and motor control, as well as supplying -data from the integrated IMU and GPS receiver. The communication channel between the MCU and PC is a Full +data from the integrated IMU and GPS receiver. The communication channel between the MCU and computer is a Full Speed USB connection, with the MCU operating as a standard serial CDC device. The communication protocol used is rosserial. An instance of the `rosserial_server` serial node is embedded @@ -200,7 +200,7 @@ taken to ensure that data is interpreted correctly. You are ready to go! This section details how to get Jackal into action. To begin, place Jackal "up on blocks" as described in the [Safety](#safety) section, making sure that the wheels are clear of the ground. -For most Jackal setups, there will be an Onboard Computer which is directly connected to the Jackal and a Remote Computer +For most Jackal setups, there will be an Onboard Computer which is directly connected to the Jackal and an Offboard Computer which is used to control Jackal and gather data. These two computers must be set up to communicate with each other. ### Onboard Computer Setup diff --git a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/warthog/user_manual_warthog.mdx b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/warthog/user_manual_warthog.mdx index 139ccf49..254eaed9 100644 --- a/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/warthog/user_manual_warthog.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/outdoor_robots/warthog/user_manual_warthog.mdx @@ -100,13 +100,13 @@ Obstruction of water flow may result in damage to the internal electrical compon The User Breakout Panel provides access to the user power panel, as well as USB, serial, and ethernet ports. The power panel can be used to power your payloads. -The USB 3.0 and Ethernet ports are connected directly to the onboard PC. +The USB 3.0 and Ethernet ports are connected directly to the onboard computer. To connect a device to the onboard network, it's suggested to give it a static IP in the _192.168.131.xxx_ subnet, avoiding IPs in use by the following pre-existing devices: -| IP address | Description | -| :-----------: | :-------------------------------------------- | -| 192.168.131.1 | Onboard PC (all ports, br0 network interface) | -| 192.168.131.2 | Ethernet-connected MCU | +| IP address | Description | +| :-----------: | :-------------------------------------------------- | +| 192.168.131.1 | Onboard Computer (all ports, br0 network interface) | +| 192.168.131.2 | Ethernet-connected MCU | Typically addresses numbered 192.168.131.100 and above will not collide with any of Warthog's payloads. Please see [Electrical Integration](integration_warthog/integration_warthog.mdx#warthog-electrical-integration) for more information. @@ -182,7 +182,7 @@ and yaw in aircraft, and care should be taken to ensure that data is interpreted You are ready to go! This section details how to get Warthog into action. To begin, place Warthog "up on blocks", making sure that the wheels are clear of the ground. -For most Warthog setups, there will be an Onboard Computer which is directly connected to the Warthog and a Remote Computer which is used to control Husky and gather data. +For most Warthog setups, there will be an Onboard Computer which is directly connected to the Warthog and an Offboard Computer which is used to control Husky and gather data. These two computers must be set up to communicate with each other. ### Onboard Computer Setup diff --git a/docs_versioned_docs/version-ros2humble/ros/config/live.mdx b/docs_versioned_docs/version-ros2humble/ros/config/live.mdx index ad743d78..d4529e1a 100644 --- a/docs_versioned_docs/version-ros2humble/ros/config/live.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/config/live.mdx @@ -24,7 +24,7 @@ Before running the node, we will need to setup the working directory. On our robots, our standard working directory is: `/etc/clearpath`. -On remote computers, such as our users' computers, we recommend using `$HOME/clearpath`. +On offboard computers, such as our users' computers, we recommend using `$HOME/clearpath`. However, you can choose whatever directory you'd like to use, just be mindful that contents may be deleted and recreated by our generator scripts. We will refer to this directory as the **setup_path**. diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx index 33fcfe75..5c8a6a21 100644 --- a/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx @@ -56,17 +56,15 @@ You can also skip to each section to get an explanation of each part of the samp serial_number: a200-0000 version: 0 system: + username: administrator hosts: - self: cpr-a200-0000 - platform: - cpr-a200-0000: 192.168.131.1 - onboard: {} - remote: {} + - hostname: cpr-a200-0000 + ip: 192.168.131.1 ros2: - username: administrator namespace: a200_0000 domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp + middleware: + implementation: rmw_fastrtps_cpp workspaces: [] platform: controller: ps4 diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx index c96145ff..9100101b 100644 --- a/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx @@ -5,6 +5,9 @@ sidebar_position: 4 toc_min_heading_level: 2 toc_max_heading_level: 5 --- +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + import A200Bumper from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/bumper.mdx"; import A200SensorArch300 from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_300.mdx"; import A200SensorArch510 from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_510.mdx"; @@ -50,280 +53,86 @@ For systems without a BMS, the state of charge should be treated as a rough esti ::: -
A200 -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
BatteryChemistryNominal Voltage (V)Capacity (Ah)Configurations
ES20_12CLead Acid12.020.0S2P1
HE2613Lithium Ion25.912.8S1P3
S1P4
- -

-
+ + -
J100 -

+| Battery | Chemistry | Nominal Voltage (V) | Capacity (Ah) | Configurations | +|:-:|:-:|:-:|:-:|:-:| +| `ES20_12C` | Lead Acid | 12.0 | 20.0 | S2P1 | +| `HE2613` | Lithium Ion | 25.9 | 12.8 | S1P3
S1P4 | - - - - - - - - - - - - - - - - - - - -
BatteryChemistryNominal Voltage (V)Capacity (Ah)Configurations
HE2613Lithium Ion25.912.8S1P1
+ + -

-
+| Battery | Chemistry | Nominal Voltage (V) | Capacity (Ah) | Configurations | +|:-:|:-:|:-:|:-:|:-:| +| `HE2613` | Lithium Ion | 25.9 | 12.8 | S1P1 | -
W200 -

+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BatteryChemistryNominal Voltage (V)Capacity (Ah)Configurations
U1_35Lead Acid12.035.0S4P3
NEC_ALM12V35Lithium Ion13.235.0S4P3
VALENCE_U24_12XPLithium Ion12.8118.0S4P1
VALENCE_U27_12XPLithium Ion12.8144.0S4P1
+| Battery | Chemistry | Nominal Voltage (V) | Capacity (Ah) | Configurations | +|:-:|:-:|:-:|:-:|:-:| +| `U1_35` | Lead Acid | 12.0 | 35.0 | S4P3 | +| `NEC_ALM12V35` | Lithium Ion | 13.2 | 35.0 | S4P3 | +| `VALENCE_U24_12XP` | Lithium Ion | 12.8 | 118.0 | S4P1 | +| `VALENCE_U27_12XP` | Lithium Ion | 12.8 | 144.0 | S4P1 | -

-
+
- - - - - - - - - - - - - - - - - - - - -
BatteryChemistryNominal Voltage (V)Capacity (Ah)Configurations
8A31DTMLead Acid12.0105.0S2P1
+
-

- --> +For example for an A200: +```yaml +battery: + model: ES20_12C + configuration: S2P1 +``` ## Attachments @@ -448,6 +257,8 @@ Remember, absolute paths start with `/` and relative paths do not. A common use case is to set and update the parameters to the `platform_velocity_controller` node. These can be used to modify the linear and angular velocity and acceleratation. These can be passed in as follows: + + **A200 Husky Controller Defaults:** ```yaml @@ -466,6 +277,8 @@ platform: angular.z.min_acceleration: -6.0 ``` + + **J100 Jackal Controller Defaults:** ```yaml @@ -484,6 +297,9 @@ platform: angular.z.min_acceleration: -25.0 ``` + + + **W200 Warthog Controller Defaults:** ```yaml platform: @@ -501,6 +317,9 @@ platform: angular.z.min_acceleration: -40.0 ``` + + + ## Sample
Sample A200 Platform Section @@ -565,6 +384,9 @@ In terms of the **front_bumper** and **rear_bumper**, we left these as defaults. ```yaml platform: controller: ps4 + battery: + model: ES20_12C + configuration: S2P1 attachments: - name: front_bumper type: a200.bumper diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx index d8ee2cc1..0b2efc29 100644 --- a/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx @@ -7,24 +7,100 @@ toc_max_heading_level: 4 --- Proper networking setup is crucial in setting up the ROS 2 middleware and to ensure other onboard computers communicate reliably. +## Username + +The username indicates the username that will be used to run all ROS nodes. If this username needs to be changed then the robot +services must be reinstalled as directed in the [software installation instructions](../../installation/robot.mdx#robot-services). + ## Hosts -The **hosts** section serves as a way to match IP addresses to hostnames. By default, Clearpath robots use the serial number as the hostname and have a default IP of `192.168.131.1`. +The **hosts** section serves as a way to match hostnames to IP addresses. By default, Clearpath robots use the serial number as +the hostname and have a default IP of `192.168.131.1`. This section must define ip addresses for all hostnames that appear in +the remainder of the `robot.yaml` file. -- The **self** entry refers to the hostname of the computer this configuration file will be loaded on. -- The **platform** entry refers to the hostname and IP of the robot platform's main computer. -- The **onboard** entry is used to define the hostname and IP of other computers on the robot. -- The **remote** entry is used to define the hostname and IP of computers in the system that are not on the robot, such as a user's computer. +For example: + +```yaml + hosts: + - hostname: cpr-a200-0000 # The robot computer + ip: 192.168.131.1 + - hostname: offboard-computer + ip: 192.168.131.5 +``` ## ROS 2 Environment -The **ros2** sections is necessary to setup the ROS 2 middleware. +The **ros2** section is necessary to set up the ROS 2 networking. + +| Key | Value / Datatype | Description | +|:---:| :--------------: | ----------- | +| **namespace** | string | Specified will be appended as a prefix to all sensor topics to prevent topics from being overloaded when multiple robots are on the same network and domain ID. | +| **domain_id** | integer | Specifies the ROS 2 domain ID to use. | +| **middleware** | [See Below](#middleware) | Specifies the ROS 2 middleware settings. | +| **workspaces** | list | Indicates a list of custom ROS 2 workspaces that need to be sourced by specifying the path to the setup.bash or set to `[]` to leave it blank | + +For example: + +```yaml +ros2: + username: administrator + namespace: a200_0000 + domain_id: 0 + middleware: # This section is described further below + implementation: rmw_fastrtps_cpp + workspaces: + - /home/administrator/colcon_ws/install/setup.bash # Path to the custom workspace +``` + +### Middleware + +The **middleware** section defines the which RMW Implementation to use and any related settings. To choose +which implementation and discovery method is right for your project see [networking](../../networking/ros2-networking.mdx). + +| Key | Value / Datatype | Description | +|:---:| :--------------: | ----------- | +| **implementation** | `rmw_fastrtps_cpp` | Declares the RMW Implementation to use. Currently only supports `rmw_fastrtps_cpp`. | +| **discovery** | `simple` or `server` | Select `simple` for simple discovery and `server` for discovery server. (Defaults to `simple`) | +| **profile** | string | Advanced feature, allows an optional custom XML profile to be provided - RMW Implementation / vendor specific. | +| **servers** | list | Provides a list of all discovery servers in the system and whether or not the robot should connect to them. | -- **username** must match the username that is used to run all ROS nodes. -- **namespace** specified will be appended as a prefix to all sensor topics to prevent topics from being overloaded when multiple robots are on the same network and domain ID. -- **domain_id** specifies the ROS 2 domain ID to use. -- **rmw_implementation** specifies the ROS 2 middleware to use. **Currently, it only supports `rmw_fastrtps_cpp`.** -- **workspaces** indicates a list of workspaces that need to be sourced by specifying the path to the setup.py +For example: + +```yaml +middleware: + implementation: rmw_fastrtps_cpp + discovery: simple + profile: path/to/profile.xml + servers: # This section is described further below + - hostname: cpr-a200-0000 +``` + +#### Servers + +This section is only used with eProsima Fast DDS Discovery Server (`implementation: rmw_fastrtps_cpp` and `discovery: server`). + +:::note + +This section must define *every single discovery server* in the system. This must include not only every discovery server +that this robot is connecting to but also every discovery server that the offboard computer will connect to in the system. + +::: + +Each server can be defined with a number of different parameters: + +| Key | Value / Datatype | Description | +|:---:| :--------------: | ----------- | +| **hostname** | string | The hostname of the computer that is hosting the server (must be in the [hosts](#Hosts) list). | +| **port** | integer | The port at which to connect to the server (default is `11811`). | +| **enabled** | `True` or `False` | This indicates whether or not the robot should connect to this server and, if the hostname matches the computer's own hostname, whether or not to launch the server (default is `True`). | + +For example: +```yaml +servers: + - hostname: cpr-a200-0000 + port: 11811 + enabled: True +``` ## Sample @@ -33,23 +109,20 @@ The **ros2** sections is necessary to setup the ROS 2 middleware. In our sample, we have a **Husky A200** platform whose primary computer has the hostname: `cpr-a200-0000` and IP: `192.168.131.1`. -Note that this configuration YAML is meant to be on that primary computer, hence `self: cpr-a200-0000`. - By default, all Clearpath robots use the username `administrator` and the robot's namespace matches the `serial_number`. ```yaml system: + username: administrator hosts: - self: cpr-a200-0000 - platform: - cpr-a200-0000: 192.168.131.1 - onboard: {} - remote: {} + - hostname: cpr-a200-0000 + ip: 192.168.131.1 ros2: - username: administrator namespace: a200_0000 domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp + middleware: + implementation: rmw_fastrtps_cpp + discovery: simple workspaces: [] ``` diff --git a/docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx b/docs_versioned_docs/version-ros2humble/ros/installation/offboard_pc.mdx similarity index 59% rename from docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx rename to docs_versioned_docs/version-ros2humble/ros/installation/offboard_pc.mdx index 49c8b992..c776422d 100644 --- a/docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/installation/offboard_pc.mdx @@ -1,25 +1,25 @@ --- -title: Remote Computer setup -sidebar_label: Remote Computer +title: Offboard Computer Setup +sidebar_label: Offboard Computer sidebar_position: 3 toc_min_heading_level: 2 toc_max_heading_level: 4 --- -A remote computer can be used to visualise and interact with the robot. The robot can also be -[simulated](../tutorials/simulator/overview.mdx) on a remote computer to safely test software before +An offboard computer can be used to visualise and interact with the robot. The robot can also be +[simulated](../tutorials/simulator/overview.mdx) on an offboard computer to safely test software before deploying to a physical robot. ### Operating System (OS) {#operating-system} ROS 2 Humble uses [Ubuntu 22.04](https://releases.ubuntu.com/jammy/) as its Tier 1 operating system. Though other operating systems are supported, -it is highly recommended to use Ubuntu 22.04. For the remote computer, Ubuntu 22.04 Desktop should be installed. +it is highly recommended to use Ubuntu 22.04. For the offboard computer, Ubuntu 22.04 Desktop should be installed. ### Networking -The remote computer should be connected to the same Wi-Fi network as the robot computer, or should be connected via -ethernet. If connected over ethernet, set the static IP of the remote computer to use the `192.168.131.1/24` network +The offboard computer should be connected to the same Wi-Fi network as the robot computer, or should be connected via +ethernet. If connected over ethernet, set the static IP of the offboard computer to use the `192.168.131.1/24` network with an IP address that won't interfere with other devices on the network, such as `192.168.131.99`. ### ROS 2 Humble @@ -40,12 +40,12 @@ This package will install launch and configuration files for visualising and int ### Setup Folder -The remote computer will need a copy of the [robot.yaml](../config/yaml/overview.mdx) file to generate the same `setup.bash` +The offboard computer will need a copy of the [robot.yaml](../config/yaml/overview.mdx) file to generate the same `setup.bash` file as the robot. 1. **Create the folder** -For the remote computer we can create the `clearpath` folder in the home directory: +For the offboard computer we can create the `clearpath` folder in the home directory: ``` mkdir ~/clearpath/ @@ -58,7 +58,7 @@ cp /path/to/robot.yaml ~/clearpath/ ``` :::note -If you have workspaces defined in the `robot.yaml` that do not exist on the remote computer, remove them. +If you have workspaces defined in the `robot.yaml` that do not exist on the offboard computer, remove them. ::: 3. **Generate the `setup.bash` file** @@ -72,4 +72,6 @@ Add the following line to your `~/.bashrc` file to automatically source the gene ``` source ~/clearpath/setup.bash -``` \ No newline at end of file +``` + +4. If you are using Fast DDS Discovery Server, follow the instructions on the [ROS 2 networking page](../networking/ros2-networking.mdx#offboard-pc). \ No newline at end of file diff --git a/docs_versioned_docs/version-ros2humble/ros/installation/robot.mdx b/docs_versioned_docs/version-ros2humble/ros/installation/robot.mdx index b2149382..0919f264 100644 --- a/docs_versioned_docs/version-ros2humble/ros/installation/robot.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/installation/robot.mdx @@ -7,8 +7,8 @@ toc_max_heading_level: 4 --- import ClearpathFirmware from "../../components/_clearpath_firmware.mdx"; -import StandardClearpathBridgeSetup from "../../components/_standard_clearpath_bridge_setup.mdx"; -import ComputerNetworkingSetupInstall from "../../components/_computer_networking_setup_install.mdx"; +import StandardClearpathBridgeSetup from "../../components/networking/_standard_clearpath_bridge_setup.mdx"; +import ComputerNetworkingSetupInstall from "../../components/networking/_computer_networking_setup_install.mdx"; ## Operating System (OS) {#operating-system} @@ -65,7 +65,7 @@ SSID, and `PASSWORD_GOES_HERE` with your Wi-Fi password. Save the file and call `sudo netplan apply` to apply the changes. Check `ip a` again to make sure that an IP address has been assigned to your Wi-Fi interface. -You should now be able to SSH into the robot by calling `ssh administrator@` from a remote computer. +You should now be able to SSH into the robot by calling `ssh administrator@` from an offboard computer. :::note @@ -79,7 +79,7 @@ Replace `` with the name of your disabled Wi-Fi interface. The robot's computer can also be connected to a DHCP network over Ethernet. Connect an Ethernet cable to the built-in Ethernet port on the robot's computer and check that an IP has been assigned with `ip a`. -You should now be able to SSH into the robot by calling `ssh administrator@` from a remote computer. +You should now be able to SSH into the robot by calling `ssh administrator@` from an offboard computer. ## Firmware Update diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/computer_setup.mdx b/docs_versioned_docs/version-ros2humble/ros/networking/computer_setup.mdx index efd84f53..6c147ba5 100644 --- a/docs_versioned_docs/version-ros2humble/ros/networking/computer_setup.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/networking/computer_setup.mdx @@ -2,8 +2,8 @@ title: Clearpath Computer Setup sidebar_position: 2 --- -import ComputerNetworkingSetupInstall from "../../components/_computer_networking_setup_install.mdx"; -import StandardClearpathBridgeSetup from "../../components/_standard_clearpath_bridge_setup.mdx"; +import ComputerNetworkingSetupInstall from "../../components/networking/_computer_networking_setup_install.mdx"; +import StandardClearpathBridgeSetup from "../../components/networking/_standard_clearpath_bridge_setup.mdx"; diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-command-center-diagram.png b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-command-center-diagram.png new file mode 100644 index 00000000..82b2e358 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-command-center-diagram.png differ diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-discovery-server-diagram.png b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-discovery-server-diagram.png new file mode 100644 index 00000000..44a55097 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-discovery-server-diagram.png differ diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-fully-connected-diagram.png b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-fully-connected-diagram.png new file mode 100644 index 00000000..2e6c88ac Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-fully-connected-diagram.png differ diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-simple-discovery-diagram.png b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-simple-discovery-diagram.png new file mode 100644 index 00000000..cb6b2c29 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/ros/networking/img/ros2-fastdds-simple-discovery-diagram.png differ diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/network_ip_addresses.mdx b/docs_versioned_docs/version-ros2humble/ros/networking/network_ip_addresses.mdx index 0292a290..7786aa5e 100644 --- a/docs_versioned_docs/version-ros2humble/ros/networking/network_ip_addresses.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/networking/network_ip_addresses.mdx @@ -1,6 +1,6 @@ --- title: Network IP Addresses -sidebar_position: 4 +sidebar_position: 5 --- These are the standard addresses that Clearpath uses for custom robot configurations. diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/ntp.mdx b/docs_versioned_docs/version-ros2humble/ros/networking/ntp.mdx index 16ecb303..d0dde1eb 100644 --- a/docs_versioned_docs/version-ros2humble/ros/networking/ntp.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/networking/ntp.mdx @@ -9,10 +9,10 @@ with each other. This is essential for ROS, as many types of data are time-sensi ### Chrony Clearpath uses a Linux package called `chrony` to provide clock synchronization across multiple devices inside a robot. -The robot's primary PC acts as the main NTP source for other computers inside the robot. +The robot's primary computer acts as the main NTP source for other computers inside the robot. To (re-)configure `chrony`, edit the file `/etc/chrony/chrony.conf`. The following shows the default configuration -for the primary PC: +for the primary computer: ``` # Welcome to the chrony configuration file. See chrony.conf(5) for more @@ -66,7 +66,7 @@ local stratum 10 allow 192.168.131/24 ``` -For secondary PCs inside the robot, the `chrony` configuration file is very similar, but adds a new `server` directive +For secondary computers inside the robot, the `chrony` configuration file is very similar, but adds a new `server` directive after the `pool`, and omits the final `local` and `allow` sections: ``` @@ -91,7 +91,7 @@ pool 0.ubuntu.pool.ntp.org iburst maxsources 1 pool 1.ubuntu.pool.ntp.org iburst maxsources 1 pool 2.ubuntu.pool.ntp.org iburst maxsources 2 -# Add the robot's primary PC as an NTP source +# Add the robot's primary computer as an NTP source server 192.168.131.1 offline minpoll 8 # This directive specify the location of the file containing ID/key pairs for diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/overview.mdx b/docs_versioned_docs/version-ros2humble/ros/networking/overview.mdx index 4e6bd314..bd3abd8a 100644 --- a/docs_versioned_docs/version-ros2humble/ros/networking/overview.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/networking/overview.mdx @@ -3,11 +3,7 @@ title: Overview sidebar_position: 1 --- -:::note - -Contact our Support team at if you have any questions. - -::: +import Ros2NetworkingOverview from "/docs_versioned_docs/version-ros2humble/components/networking/_ros2_networking_overview.mdx"; ### SSH and SFTP @@ -15,14 +11,14 @@ Clearpath robots ship with an SSH server operating on port 22 for remote login. file-transfer to/from the robot if needed. By default you can log in using the default username and password for the robot. -### Internal Networking +### Wired LAN IP Addresses {#ip-addresses} All Clearpath robots use the `192.168.131.0/24` subnet for any permanently-installed network hardware. This includes, but may not be limited to -- the robot's primary PC, +- the robot's primary computer, - the robot's MCU, -- a secondary PC (if present), +- a secondary computer (if present), - any cameras, lidar, or other sensors that communicate over Ethernet, and - any long-range wireless radios. @@ -31,10 +27,28 @@ there is normally not a DHCP server operating on this subnet. For a list of standard payload IP addresses, please see [network IP addresses](network_ip_addresses.mdx). +### ROS 2 Networking {#ros2-networking} + + + +Further information on [ROS 2 Networking](ros2-networking.mdx). + +:::tip + +For the best chance of success, use a high speed, high bandwidth network and monitor the network usage. + +::: + ### Clock Synchronization If your robot contains multiple computers, their clocks must remain synchronized to allow proper communication between ROS nodes running on each one. Clearpath configures the computers to use `chrony` to synchronize the clocks, with the -primary PC being the authoritative source for the others. +primary computer being the authoritative source for the others. For details on configuring `chrony`, please see [configuring NTP](ntp.mdx). + +:::note + +Contact our Support team at if you have any questions. + +::: \ No newline at end of file diff --git a/docs_versioned_docs/version-ros2humble/ros/networking/ros2-networking.mdx b/docs_versioned_docs/version-ros2humble/ros/networking/ros2-networking.mdx new file mode 100644 index 00000000..1ad3286f --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/networking/ros2-networking.mdx @@ -0,0 +1,242 @@ +--- +title: ROS 2 Networking +sidebar_position: 3 +--- + +## Overview + +import Ros2NetworkingOverview from "/docs_versioned_docs/version-ros2humble/components/networking/_ros2_networking_overview.mdx"; + + + +## How Discovery Works + +### Simple Discovery + +Participants (nodes) send periodic multicast announcement messages over the network with their unicast addresses, and +then all participants share discovery information (such as topics, and action servers.) with all other participants. +This means that all participants get information about all other participants irrelevant of whether or not they need +that information. + +The following diagram depicts three Husky A200's set up with simple discovery and illustrates how different +combinations of settings work. The robot type is not important, and the same diagram can be made for any +combination of Clearpath robots. + +
+
+ +
+
+ +For more detailed information regarding Fast DDS or simple discovery, visit the +[eProsima Fast DDS documentation](https://fast-dds.docs.eprosima.com/en/latest/fastdds/ros2/ros2.html). + +Additional details on how to select simple disocvery in the `robot.yaml` config file are available in the +[Middleware section of Robot Configuration](../config/yaml/system.mdx#middleware). + +### Discovery Server + +A discovery server is a process running on a computer that serves to record and report ROS discovery information. +A server can be thought of as a look up table for ROS discovery information. When a participant (node) starts, it +checks in with the servers to share its discovery information and request what information it is looking for. +In this way, particpants only get discovery information and establish communication as necessary. A participant +does not know all of the information that is available, only where to find the fellow participants that it needs. + +There can be multiple servers in a given system. These can be used for redundancy or to segregate information. + +The following diagram depicts three Husky A200's set up with discovery server and illustrates how different +combinations of settings work. The `ROS_DISCOVERY_SERVER` environment variable indicates which discovery servers +a given robot should communicate with. The robot type is not important and the same diagram can be made for any +combination of Clearpath robots. + +
+
+ +
+
+ +For more detailed information regarding Fast DDS or discovery server, visit the +[eProsima Fast DDS documentation](https://fast-dds.docs.eprosima.com/en/latest/fastdds/ros2/ros2.html). + +## Choosing a Configuration + +The first decision is choosing between simple discovery and discovery server. If simple discovery works for you then +there is no need to change from the default operation. Simple discovery generally allows for any ROS 2 and Fast DDS +enabled device running the default settings to connect to the system with no additional configuration. + +:::tip + +If you want to run multiple independent simple discovery systems on the same network, you can segregate them by +using different ROS Domain IDs. + +::: + +You may want or need to switch to discovery server for any of the following reasons: +- If your network does not support multicasting (often true on school or corporate networks) +- If you have a large system (several robots or an excess number of nodes/topics) +- If you want to control which devices have access to which information +- If you have a weak network (for example in cases of long range wireless connection) + +:::note + +Certain networks (such as school or corporate networks) may have additional restrictions that prevent even +ROS 2 with discovery server from operating. In these situations consider meeting with the IT group or the network +administrator to determine if ROS 2 is allowed to run on that network or if you can run the system on a separate +dedicated network. + +::: + +## Discovery Server Configurations + +There are multiple different ways to configure discovery server depending on which ROS 2 devices need to connect. +This section will go over some basic configurations and is generalized for use as an introduction. It does not +describe all possible configurations. The `ROS_DISCOVERY_SERVER` environment variable, shown in the various diagrams, +indicates which discovery servers a given robot is connected to. Additionally, communication will be referred to +in terms of seeing ROS 2 topics although this is representative of all nodes, topics, action servers, and so on. + +:::note + +For all configurations, it is very important for all discovery servers in the system to be included in the `servers` +list in the `robot.yaml` config. This is because each discovery server must have a unique ID number which +is used both to launch the server and to connect to the server. This ID is automatically assigned by the Clearpath +packages. + +::: + +### 1. Fully Connected {#fully-connected} + +This configuration is the simplest to set up using the `robot.yaml` config. It allows all robots to operate +independently but also allows any ROS 2 device in the system to see all of the topics from all of the +ROS 2 devices. This is done by having a local discovery server on each robot and pointing each ROS 2 device +in the system at all of the discovery servers in the system. + +
+
+ +
+
+ +This configuration is achieved by listing all of the computers' hostnames in the +[`servers` section](../config/yaml/system.mdx#servers) on all of the robots. Including the offboard computer allows +the offboard computer to also have a discovery server running and thus operate independently from the robots as +well as communicating with all of the robots. However, the discovery server must also be set up separately on the +offboard computer (only required to allow the offboard computer to run ROS 2 nodes independently from the robots). + +The middleware section for the system in the diagram would look like the following on all devices: + +```yaml +middleware: + implementation: rmw_fastrtps_cpp + discovery: server + servers: + - hostname: cpr-a200-0000 + - hostname: cpr-a200-0001 + - hostname: offboard-computer +``` + +Additional details on the available fields for the `robot.yaml` config file are available in the +[Middleware section of Robot Configuration](../config/yaml/system.mdx#middleware). + +### 2. Command Center {#command-center} + +In this configuration you have many robots that each operate independently and an offboard computer that +checks in and communicates with each of the robots. Each of the robots will have and refer to their own local +discovery server. This allows the onboard ROS 2 nodes to communicate without any external network connection. +The offboard computer will be pointed at the discovery servers on each and every robot. This will allow the +offboard computer to see all of the topics on all of the robots at the same time. In turn, each of the robots will be +able to see all of the topics launched on the offboard computer. Including a discovery server on the offboard computer as well +allows it to run ROS 2 nodes independently from the robots. + +The key difference between this configuration and the fully connected configuration is that the robots cannot +communicate with each other. This may be beneficial if the network is weak, or if there is an excess number of +robots. + +
+
+ +
+
+ +This configuration is achieved by listing all of the computers' hostnames in the +[`servers` section](../config/yaml/system.mdx#servers) on all of the robots but setting `enabled` to `False` for +every server entry except for that specific robot. This tells the robot to only use its own discovery server. +The offboard computer should have all of the servers enabled, telling it to connect to all discovery servers in the system. +This servers list must include the offboard computer if a discovery server is being run on the offboard computer. However, the discovery +server must also be set up separately on the offboard computer. + +The middleware section of the config for the system in the diagram would look like the following for `cpr-a200-0000`: + +```yaml +middleware: + implementation: rmw_fastrtps_cpp + discovery: server + servers: + - hostname: cpr-a200-0000 + - hostname: cpr-a200-0001 + enabled: False + - hostname: offboard-computer + enabled: False +``` + +It would look like the following for `cpr-a200-0001`: + +```yaml +middleware: + implementation: rmw_fastrtps_cpp + discovery: server + servers: + - hostname: cpr-a200-0000 + enabled: False + - hostname: cpr-a200-0001 + - hostname: offboard-computer + enabled: False +``` + +And the following for the offboard computer: + +```yaml +middleware: + implementation: rmw_fastrtps_cpp + discovery: server + servers: + - hostname: cpr-a200-0000 + - hostname: cpr-a200-0001 + - hostname: offboard-computer +``` + +Additional details on the available fields for the `robot.yaml` config file are available in the +[Middleware section of Robot Configuration](../config/yaml/system.mdx#middleware). + +## Offboard Computer Setup {#offboard-pc} + +Use the `robot.yaml` from one of the robots in order to set up the offboard computer. The `servers` list must include all of +the discovery servers and all of the ones that the offboard computer should be connecting with must not be disabled. + +1. Regenerate the `setup.bash` every time the `servers` list changes in any way (as per [offboard computer install instructions](../installation/offboard_pc.mdx#setup-folder)) + +2. If a discovery server is intended to be run on the offboard computer then generate and run the discovery-server-start launch file. + +To generate the launch script: + +``` +source /opt/ros/humble/setup.bash +ros2 run clearpath_generator_common generate_discovery_server -s ~/clearpath +``` + +To launch the server + +``` +bash -e ~/clearpath/discovery-server-start +``` diff --git a/docs_versioned_docs/version-ros2humble/ros/tutorials/driving.mdx b/docs_versioned_docs/version-ros2humble/ros/tutorials/driving.mdx index ff37055d..c49f9b2b 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/driving.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/driving.mdx @@ -16,7 +16,7 @@ There are several ways to drive a Clearpath robot using ROS 2. ### Joystick Teleoperation -Make sure your controller is paired to the robot PC. Visit the [controller pairing](../installation/controller.mdx) guide for details. +Make sure your controller is paired to the robot computer. Visit the [controller pairing](../installation/controller.mdx) guide for details. With the [robot services](../installation/robot.mdx#robot-services) running, turn on your controller. Press and hold either **L1** or **R1**, and use the left joystick to publish a linear velocity and yaw command. The **L1** button @@ -34,7 +34,7 @@ will drive the robot at slow speeds, while **R1** will drive the robot at fast s ### Keyboard Teleoperation -Install the `teleop_twist_keyboard` ROS 2 package on the robot PC or on a remote PC: +Install the `teleop_twist_keyboard` ROS 2 package on the robot computer or on an offboard computer: ``` sudo apt-get update diff --git a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/localization.mdx b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/localization.mdx index a65a2b17..02e1d125 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/localization.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/localization.mdx @@ -20,17 +20,15 @@ robot too. We will be using a J100 with a Hokuyo UST10 attached to the front of serial_number: j100-0001 version: 0 system: + username: administrator hosts: - self: cpr-j100-0001 - platform: - cpr-j100-0001: 192.168.131.1 - onboard: {} - remote: {} + - hostname: cpr-j100-0001 + ip: 192.168.131.1 ros2: - username: administrator namespace: j100_0001 domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp + middleware: + implementation: rmw_fastrtps_cpp extras: ros_parameters: linear.x.max_velocity": 2.0 diff --git a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/nav2.mdx b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/nav2.mdx index d2f5829d..644d02ba 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/nav2.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/nav2.mdx @@ -19,17 +19,15 @@ We will be using a J100 with a Hokuyo UST10 attached to the front of the robot. serial_number: j100-0001 version: 0 system: + username: administrator hosts: - self: cpr-j100-0001 - platform: - cpr-j100-0001: 192.168.131.1 - onboard: {} - remote: {} + - hostname: cpr-j100-0001 + ip: 192.168.131.1 ros2: - username: administrator namespace: j100_0001 domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp + middleware: + implementation: rmw_fastrtps_cpp extras: ros_parameters: linear.x.max_velocity": 2.0 diff --git a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/overview.mdx b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/overview.mdx index f80023ad..1d410656 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/overview.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/overview.mdx @@ -20,6 +20,6 @@ sudo apt-get install ros-humble-clearpath-nav2-demos :::tip -The navigation demos can be run on either the robot computer, or a remote computer. +The navigation demos can be run on either the robot computer, or an offboard computer. ::: diff --git a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/slam.mdx b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/slam.mdx index 30820fad..55191310 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/slam.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/navigation_demos/slam.mdx @@ -20,17 +20,15 @@ robot too. We will be using a J100 with a Hokuyo UST10 attached to the front of serial_number: j100-0001 version: 0 system: + username: administrator hosts: - self: cpr-j100-0001 - platform: - cpr-j100-0001: 192.168.131.1 - onboard: {} - remote: {} + - hostname: cpr-j100-0001 + ip: 192.168.131.1 ros2: - username: administrator namespace: j100_0001 domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp + middleware: + implementation: rmw_fastrtps_cpp extras: ros_parameters: linear.x.max_velocity": 2.0 diff --git a/docs_versioned_docs/version-ros2humble/ros/tutorials/simulator/install.mdx b/docs_versioned_docs/version-ros2humble/ros/tutorials/simulator/install.mdx index 19c859a7..177f1231 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/simulator/install.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/simulator/install.mdx @@ -14,7 +14,7 @@ It is highly recommended to install the simulator on a computer with a dedicated ### Computer Setup -Follow the [Remote Computer](../../installation/remote_pc.mdx) setup guide. +Follow the [Offboard Computer](../../installation/offboard_pc.mdx) setup guide. ### Installing Gazebo Fortress