diff --git a/docs_versioned_docs/version-ros2humble/components/_clearpath_firmware.mdx b/docs_versioned_docs/version-ros2humble/components/_clearpath_firmware.mdx new file mode 100644 index 00000000..369f27bb --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/_clearpath_firmware.mdx @@ -0,0 +1,156 @@ +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +:::caution + +Before flashing firmware, place your robot up on blocks. Firmware loading does not usually result in unintended motion, but it is safest when off the ground. + +::: + +#### 1. Download the Clearpath Firmware package from the Clearpath package server + +On the robot computer, run the following commands: + +``` +sudo apt-get update +sudo apt-get install ros-humble-clearpath-firmware +``` + +#### 2. Prepare the Robot + +:::note + +Platforms with an Ethernet connection to the MCU have the option of flashing over USB or Ethernet. +If you are updating to ROS 2 Humble for the first time, you must use USB. If you are updating ROS 2 Humble firmware +to a newer version, using Ethernet is recommended. Skip this step if flashing over Ethernet. + +::: + + + + + The J100 MCU is mounted to the rear inside wall of the robot. To access it, open the lid, keeping the computer + tray secured to the underside of the lid. + +
+
+ +
J100 MCU
+
+
+ + +
+
J100 MCU labels
+
    +
  1. + The M_RST button, used to reset the MCU. +
  2. +
  3. + The PWR_MODE switch. Left is NORM or normal mode, right is ALT or bootloader mode. This is used for flashing the firmware. +
  4. +
  5. + The mini-USB port used for transmitting data. This should be connected to J100's computer for both normal operation and firmware flashing. +
  6. +
+
+ + **Place the J100 MCU into bootloader mode** + + Open the lid of the robot to expose the MCU and make sure the mini-USB cable is connected to the robot computer. + Switch the PWR_MODE switch from NORM to ALT. If the robot is on, press the M_RST button. Otherwise, turn the robot on with the power button. + +
+ + + + The W200 MCU is located on the underside of the metal frame over the top of the computer. + +
+
+ +
W200 MCU
+
+
+ + +
+
W200 MCU labels
+
    +
  • + The RST button, used to reset the MCU. +
  • +
  • + The BT0 button, used to enter the USB bootloader mode. +
  • +
+
+ + **Place the W200 MCU into bootloader mode** + + While pressing BT0 on the MCU, connect the external computer to Warthog's MCU using a USB cable. + +
+
+ + +#### 3. Flash the firmware + +Run the Clearpath firmware flash tool: + +``` +source /opt/ros/humble/setup.bash +ros2 run clearpath_firmware flash +``` + +Select your platform, then select which method of flashing you would like to use. + +:::caution + +Do not turn the robot off or unplug the cable while flashing firmware. If an error occurs while +flashing, you can attempt to flash again over USB. + +::: + +#### 4. Place the robot back into normal operating mode + +:::note + +If you flashed over Ethernet, skip this step. + +::: + + + + + Switch the PWR_MODE switch from ALT back to NORM. The robot will turn off. + Power it back on with the power button. + + + + + + Press the RST button. The MCU should enter regular operation. + + + diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/bumper.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/bumper.mdx new file mode 100644 index 00000000..c09acdf2 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/bumper.mdx @@ -0,0 +1,33 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: front_bumper + type: a200.bumper + model: default + parent: front_bumper_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extension: 0.0 + - name: rear_bumper + type: a200.bumper + model: default + parent: rear_bumper_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extension: 0.0 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/bumper.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/bumper.png new file mode 100644 index 00000000..77123e49 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/bumper.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/sensor_arch_300.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/sensor_arch_300.png new file mode 100644 index 00000000..9cc28cae Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/sensor_arch_300.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/sensor_arch_510.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/sensor_arch_510.png new file mode 100644 index 00000000..fc469dc0 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/sensor_arch_510.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_default.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_default.png new file mode 100644 index 00000000..32c95236 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_default.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_large.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_large.png new file mode 100644 index 00000000..d02a2006 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_large.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_pacs.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_pacs.png new file mode 100644 index 00000000..85bbd960 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/img/top_plate_pacs.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_300.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_300.mdx new file mode 100644 index 00000000..691bc71c --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_300.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: sensor_arch + type: a200.sensor_arch + model: sensor_arch_300 + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_510.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_510.mdx new file mode 100644 index 00000000..3876cbf1 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/sensor_arch_510.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: sensor_arch + type: a200.sensor_arch + model: sensor_arch_510 + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_default.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_default.mdx new file mode 100644 index 00000000..772f84a3 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_default.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: top_plate + type: a200.top_plate + model: default + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_large.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_large.mdx new file mode 100644 index 00000000..3035a7f6 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_large.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: top_plate + type: a200.top_plate + model: large + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_pacs.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_pacs.mdx new file mode 100644 index 00000000..2587a5e7 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_pacs.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: top_plate + type: a200.top_plate + model: pacs + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_default.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_default.mdx new file mode 100644 index 00000000..6a15cf3d --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_default.mdx @@ -0,0 +1,31 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: front_fender + type: fender + model: default + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + - name: rear_fender + type: fender + model: default + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 3.1415] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_sensor.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_sensor.mdx new file mode 100644 index 00000000..26e622fa --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_sensor.mdx @@ -0,0 +1,31 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: front_fender + type: fender + model: sensor + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + - name: rear_fender + type: fender + model: sensor + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 3.1415] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/fender_default.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/fender_default.png new file mode 100644 index 00000000..6b3c6365 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/fender_default.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/fender_sensor.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/fender_sensor.png new file mode 100644 index 00000000..2ab1d4c0 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/fender_sensor.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/top_plate_ark_enclosure.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/top_plate_ark_enclosure.png new file mode 100644 index 00000000..ca2cebff Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/img/top_plate_ark_enclosure.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/top_plate_ark_enclosure.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/top_plate_ark_enclosure.mdx new file mode 100644 index 00000000..aafca6e3 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/top_plate_ark_enclosure.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: ark_enclosure + type: top_plate + model: ark_enclosure + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/arm_mount.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/arm_mount.mdx new file mode 100644 index 00000000..2f39a9e1 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/arm_mount.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: arm_mount + type: arm_mount + parent: default_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_arm_mount.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_arm_mount.mdx new file mode 100644 index 00000000..ab6cbbe0 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_arm_mount.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: bulkhead + type: bulkhead + model: arm_mount + parent: default_mount + xyz: [0.00705, 0.0, 0.24184] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_default.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_default.mdx new file mode 100644 index 00000000..87e94c92 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_default.mdx @@ -0,0 +1,24 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: bulkhead + type: bulkhead + model: default + parent: default_mount + xyz: [0.00705, 0.0, 0.24184] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/generator.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/generator.mdx new file mode 100644 index 00000000..4b66651e --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/generator.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +attachments: + - name: generator + type: generator + parent: default_mount + xyz: [-0.42506, 0.0, 0.0017] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/arm_mount.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/arm_mount.png new file mode 100644 index 00000000..20238c2f Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/arm_mount.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/bulkhead_arm_mount.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/bulkhead_arm_mount.png new file mode 100644 index 00000000..bbdade84 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/bulkhead_arm_mount.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/bulkhead_default.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/bulkhead_default.png new file mode 100644 index 00000000..4a051eae Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/bulkhead_default.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/generator.png b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/generator.png new file mode 100644 index 00000000..fbf9a5a3 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/img/generator.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/box.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/links/box.mdx new file mode 100644 index 00000000..5f16c354 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/links/box.mdx @@ -0,0 +1,22 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +box: + - name: box_name + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + size: [0.01, 0.01, 0.01] +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/cylinder.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/links/cylinder.mdx new file mode 100644 index 00000000..cdb9710f --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/links/cylinder.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +cylinder: + - name: cylinder_name + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + radius: 0.01 + length: 0.01 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/frame.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/links/frame.mdx new file mode 100644 index 00000000..f8e51840 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/links/frame.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +frame: + - name: link_name + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/img/box.png b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/box.png new file mode 100644 index 00000000..e6b779f2 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/box.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/img/cylinder.png b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/cylinder.png new file mode 100644 index 00000000..64bd8751 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/cylinder.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/img/frame.png b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/frame.png new file mode 100644 index 00000000..e2c57324 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/frame.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/img/mesh.png b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/mesh.png new file mode 100644 index 00000000..f31d5f22 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/mesh.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/img/sphere.png b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/sphere.png new file mode 100644 index 00000000..bfc06eec Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/links/img/sphere.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/mesh.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/links/mesh.mdx new file mode 100644 index 00000000..47a5274d --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/links/mesh.mdx @@ -0,0 +1,22 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +mesh: + - name: mesh_name + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + visual: /absolute/path/to/mesh.stl +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/links/sphere.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/links/sphere.mdx new file mode 100644 index 00000000..08d55c4f --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/links/sphere.mdx @@ -0,0 +1,22 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +sphere: + - name: sphere_name + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + radius: 0.01 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_horizontal.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_horizontal.mdx new file mode 100644 index 00000000..0d1d8c6a --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_horizontal.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +bracket: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: horizontal +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_large.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_large.mdx new file mode 100644 index 00000000..0f2dca35 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_large.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +bracket: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: large +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_vertical.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_vertical.mdx new file mode 100644 index 00000000..4661e596 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_vertical.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +bracket: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: vertical +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk.mdx new file mode 100644 index 00000000..36ed57da --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk.mdx @@ -0,0 +1,20 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +disk: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk_post.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk_post.mdx new file mode 100644 index 00000000..f4828812 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk_post.mdx @@ -0,0 +1,27 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +post: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: dual + spacing: 0.12 + height: 0.075 +disk: + - parent: post_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/fath_pivot.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/fath_pivot.mdx new file mode 100644 index 00000000..d46cb3c9 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/fath_pivot.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +fath_pivot: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + angle: 0.0 # in radian +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_horizontal.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_horizontal.png new file mode 100644 index 00000000..2b0d315a Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_horizontal.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_large.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_large.png new file mode 100644 index 00000000..7dc50890 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_large.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_vertical.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_vertical.png new file mode 100644 index 00000000..32f6f5c6 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/bracket_vertical.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/disk.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/disk.png new file mode 100644 index 00000000..75aa8db3 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/disk.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/disk_post.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/disk_post.png new file mode 100644 index 00000000..9c542138 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/disk_post.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/fath_pivot.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/fath_pivot.png new file mode 100644 index 00000000..9d2f4ca7 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/fath_pivot.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_dual.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_dual.png new file mode 100644 index 00000000..0a0dd371 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_dual.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_quad.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_quad.png new file mode 100644 index 00000000..3434458d Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_quad.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_single.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_single.png new file mode 100644 index 00000000..175cc173 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/post_single.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_1x7.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_1x7.png new file mode 100644 index 00000000..f33b2db8 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_1x7.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_4x4.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_4x4.png new file mode 100644 index 00000000..a1500f58 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_4x4.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_8x7.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_8x7.png new file mode 100644 index 00000000..8e44642b Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/riser_8x7.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/sick_inverted.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/sick_inverted.png new file mode 100644 index 00000000..1688b13e Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/sick_inverted.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/sick_upright.png b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/sick_upright.png new file mode 100644 index 00000000..e9ecef08 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/img/sick_upright.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_dual.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_dual.mdx new file mode 100644 index 00000000..5fefa0d6 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_dual.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +post: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: dual + spacing: 0.08 # distance between posts + height: 0.075 # height of post +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_quad.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_quad.mdx new file mode 100644 index 00000000..2c54f8aa --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_quad.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +post: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: quad + spacing: 0.08 # distance between posts + height: 0.075 # height of post +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_single.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_single.mdx new file mode 100644 index 00000000..99ced43a --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_single.mdx @@ -0,0 +1,22 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +post: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: single + height: 0.075 # height of post +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_1x7.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_1x7.mdx new file mode 100644 index 00000000..ce9a6d1c --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_1x7.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +riser: + - parent: top_plate_mount_a1 + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + rows: 1 # rows of 80mm x 80mm grid + columns: 7 # columns of 80mm x 80mm grid + thickness: 0.00635 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_4x4.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_4x4.mdx new file mode 100644 index 00000000..e16c78a8 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_4x4.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +riser: + - parent: top_plate_mount_a1 + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + rows: 4 # rows of 80mm x 80mm grid + columns: 4 # columns of 80mm x 80mm grid + thickness: 0.00635 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_8x7.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_8x7.mdx new file mode 100644 index 00000000..46bf358e --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_8x7.mdx @@ -0,0 +1,23 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +riser: + - parent: top_plate_mount_a1 + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + rows: 8 # rows of 80mm x 80mm grid + columns: 7 # columns of 80mm x 80mm grid + thickness: 0.00635 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_inverted.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_inverted.mdx new file mode 100644 index 00000000..8202e46d --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_inverted.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +sick: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: inverted +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_upright.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_upright.mdx new file mode 100644 index 00000000..7da809d0 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_upright.mdx @@ -0,0 +1,21 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +sick: + - parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: upright +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/chrobotics_um6.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/chrobotics_um6.mdx new file mode 100644 index 00000000..4e0d4c3a --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/chrobotics_um6.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +imu: + - model: chrobotics_um6 + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + um6_driver: + port: /dev/clearpath/imu + frame_id: imu_0_link + tf_ned_to_enu: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/garmin_18x.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/garmin_18x.mdx new file mode 100644 index 00000000..e28e7412 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/garmin_18x.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +gps: + - model: garmin_18x + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + nmea_navsat_driver: + frame_id: gps_0_link + port: /dev/ttyACM0 + baud: 115200 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx new file mode 100644 index 00000000..db13287e --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx @@ -0,0 +1,30 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +lidar2d: + - model: hokuyo_ust + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + urg_node: + laser_frame_id: lidar2d_0_laser + ip_address: 192.168.131.20 + ip_port: 10940 + angle_min: -2.356 + angle_max: 2.356 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/chrobotics_um6.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/chrobotics_um6.png new file mode 100644 index 00000000..2b76338d Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/chrobotics_um6.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/garmin_18x.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/garmin_18x.png new file mode 100644 index 00000000..df967a4b Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/garmin_18x.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/hokuyo_ust.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/hokuyo_ust.png new file mode 100644 index 00000000..b1f6bce1 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/hokuyo_ust.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/intel_realsense.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/intel_realsense.png new file mode 100644 index 00000000..9d64fa62 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/intel_realsense.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/microstrain_imu.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/microstrain_imu.png new file mode 100644 index 00000000..2b76338d Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/microstrain_imu.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/novatel_smart6.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/novatel_smart6.png new file mode 100644 index 00000000..1b3aeae8 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/novatel_smart6.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/novatel_smart7.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/novatel_smart7.png new file mode 100644 index 00000000..b2579da1 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/novatel_smart7.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/redshift_um7.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/redshift_um7.png new file mode 100644 index 00000000..2b76338d Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/redshift_um7.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/sick_lms1xx.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/sick_lms1xx.png new file mode 100644 index 00000000..59f9e980 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/sick_lms1xx.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/swiftnav_duro.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/swiftnav_duro.png new file mode 100644 index 00000000..69affe66 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/swiftnav_duro.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/velodyne_lidar.png b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/velodyne_lidar.png new file mode 100644 index 00000000..e57dc217 Binary files /dev/null and b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/img/velodyne_lidar.png differ diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/intel_realsense.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/intel_realsense.mdx new file mode 100644 index 00000000..d59bef30 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/intel_realsense.mdx @@ -0,0 +1,33 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +camera: +- model: intel_realsense + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + camera: + camera_name: camera_0 + device_type: d435 + serial_no: "0" + enable_color: true + rgb_camera.profile: 640,480,30 + enable_depth: true + depth_module.profile: 640,480,30 + pointcloud.enable: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/microstrain_imu.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/microstrain_imu.mdx new file mode 100644 index 00000000..e33411b0 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/microstrain_imu.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +imu: + - model: microstrain_imu + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + microstrain_inertial_driver: + imu_frame_id: imu_0_link + port: /dev/microstrain_main + use_enu_frame: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart6.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart6.mdx new file mode 100644 index 00000000..13deaf81 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart6.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +gps: + - model: novatel_smart6 + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + nmea_navsat_driver: + frame_id: gps_0_link + port: /dev/ttyACM0 + baud: 115200 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart7.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart7.mdx new file mode 100644 index 00000000..ddb892ad --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart7.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +gps: + - model: novatel_smart7 + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + nmea_navsat_driver: + frame_id: gps_0_link + port: /dev/ttyACM0 + baud: 115200 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/redshift_um7.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/redshift_um7.mdx new file mode 100644 index 00000000..8506462c --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/redshift_um7.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +imu: + - model: redshift_um7 + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + um7_driver: + port: /dev/clearpath/imu + frame_id: imu_0_link + tf_ned_to_enu: true +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/sick_lms1xx.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/sick_lms1xx.mdx new file mode 100644 index 00000000..dff5836a --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/sick_lms1xx.mdx @@ -0,0 +1,28 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +lidar2d: + - model: sick_lms1xx + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + lms1xx: + frame_id: lidar2d_0_laser + host: 192.168.131.20 + port: 2111 +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/swiftnav_duro.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/swiftnav_duro.mdx new file mode 100644 index 00000000..e323b7b3 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/swiftnav_duro.mdx @@ -0,0 +1,29 @@ + + + + + +
+
+
+ +
+
+
+ +```yaml +gps: + - model: swiftnav_duro + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + duro_node: + gps_receiver_frame_id: gps_0_link + ip_address: 192.168.131.30 + ip_port: 55555 + imu_frame_id: gps_0_link +``` +
diff --git a/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx new file mode 100644 index 00000000..8f149fee --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx @@ -0,0 +1,57 @@ + + + + + +
+
+
+ +
+
+
+
+ +```yaml +# Model VLP16 +lidar3d: + - model: velodyne_lidar + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + velodyne_driver_node: + frame_id: lidar3d_0_laser + device_ip: 192.168.131.25 + port: 2368 + model: VLP16 + velodyne_transform_node: + model: VLP16 + fixed_frame: lidar3d_0_laser + target_frame: lidar3d_0_laser +# Model 32C +lidar3d: + - model: velodyne_lidar + urdf_enabled: true + launch_enabled: true + parent: base_link + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + velodyne_driver_node: + frame_id: lidar3d_0_laser + device_ip: 192.168.131.25 + port: 2368 + model: 32C + velodyne_transform_node: + model: 32C + calibration: "/opt/ros/humble/share/\ + velodyne_pointcloud/params/VeloView-VLP-32C.yaml" + fixed_frame: lidar3d_0_laser + target_frame: lidar3d_0_laser +``` + +
+
diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/add-ons/controllers.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/add-ons/controllers.mdx index 2af69a7e..e7312027 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/add-ons/controllers.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/add-ons/controllers.mdx @@ -23,7 +23,7 @@ You may need to install _jstest_ with `sudo apt-get install jstest-gtk` Clearpath uses the _/bluetooth_teleop_ ROS node to publish velocity commands from the joystick to _/twist_mux_. _/twist_mux_ Takes in multiple sources of velocity commands, and prioritizes what actually gets sent to _/cmd_vel_ to drive the robot. -Depending on the robot platform and related controller, you will need to configure your robot's [robot.yaml configuration file](../../../ros/config/yaml.mdx). +Depending on the robot platform and related controller, you will need to configure your robot's [robot.yaml configuration file](../../../ros/config/yaml/platform.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/flir_blackfly_s.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/flir_blackfly_s.mdx index 8520789b..ece1ffd2 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/flir_blackfly_s.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/flir_blackfly_s.mdx @@ -40,7 +40,7 @@ import Support from "/components/support.mdx"; This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. This allows you to add or remove the sensor from your robot's software description by modifying the -[robot configuration yaml](../../../../ros/config/yaml.mdx#cameras). +[robot configuration yaml](../../../../ros/config/yaml/sensors.mdx#cameras). This sensor also requires additional changes beyond the robot.yaml file. These changes are included by default in the Clearpath ISO, but can also be applied using the following command: diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/realsense_d435.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/realsense_d435.mdx index 2999f120..cd583258 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/realsense_d435.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/cameras/realsense_d435.mdx @@ -4,6 +4,7 @@ sidebar_position: 6 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/intel_realsense.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#cameras). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/garmin_gps_18x.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/garmin_gps_18x.mdx index 6e4d9a0a..6803341a 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/garmin_gps_18x.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/garmin_gps_18x.mdx @@ -4,6 +4,7 @@ sidebar_position: 1 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/garmin_18x.mdx";
-This sensor is not included in the Clearpath Robotics robot package. -If you purchased this sensor with your Clearpath robot, we will install the necessary ROS packages and configuration details on the robot's computer. - -Refer to this page's Further Reading section for more details. +This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/swift_navigation_duro.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/swift_navigation_duro.mdx index 54b0951f..adfce5dd 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/swift_navigation_duro.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/gps/swift_navigation_duro.mdx @@ -4,6 +4,7 @@ sidebar_position: 2 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/swiftnav_duro.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#gps). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/microstrain_3dm_gx5.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/microstrain_3dm_gx5.mdx index 1121c75f..123dc9dc 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/microstrain_3dm_gx5.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/microstrain_3dm_gx5.mdx @@ -4,6 +4,7 @@ sidebar_position: 1 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/microstrain_imu.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#imu). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/redshift_labs_um7.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/redshift_labs_um7.mdx index 7f66c9e1..c1704195 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/redshift_labs_um7.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/imu/redshift_labs_um7.mdx @@ -4,6 +4,7 @@ sidebar_position: 2 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/redshift_um7.mdx";
-This sensor is not currently included in the Clearpath Robotics robot package but may be in the future. -If you purchased this sensor with your Clearpath robot, we will install the necessary ROS packages and configuration details on the robot's computer. - -Refer to this page's Further Reading section for more details. +This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust10_lx.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust10_lx.mdx index 398bc1fb..09614312 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust10_lx.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust10_lx.mdx @@ -4,6 +4,7 @@ sidebar_position: 1 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#lidar-2d). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust20_lx.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust20_lx.mdx index 00915b60..61c62a80 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust20_lx.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust20_lx.mdx @@ -4,6 +4,7 @@ sidebar_position: 2 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx";
-This sensor is not currently included in the Clearpath Robotics robot package but may be in the future. -If you purchased this sensor with your Clearpath robot, we will install the necessary ROS packages and configuration details on the robot's computer. - -Refer to this page's Further Reading section for more details. +This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust30_lx.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust30_lx.mdx index 131dffde..5df721fb 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust30_lx.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/hokuyo_ust30_lx.mdx @@ -4,6 +4,7 @@ sidebar_position: 3 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx";
-This sensor is not currently included in the Clearpath Robotics robot package but may be in the future. -If you purchased this sensor with your Clearpath robot, we will install the necessary ROS packages and configuration details on the robot's computer. - -Refer to this page's Further Reading section for more details. +This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/sick_lms111.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/sick_lms111.mdx index a9120aea..4b073568 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/sick_lms111.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_2d/sick_lms111.mdx @@ -4,6 +4,7 @@ sidebar_position: 4 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/sick_lms1xx.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#lidar-2d). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck hi_res.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck hi_res.mdx index a18ca897..4046d9a7 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck hi_res.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck hi_res.mdx @@ -4,6 +4,7 @@ sidebar_position: 3 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#lidar-3d). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck.mdx index b93d78d5..35509eeb 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck.mdx @@ -4,6 +4,7 @@ sidebar_position: 2 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#lidar-3d). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck_lite.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck_lite.mdx index bfe57713..e7c2396c 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck_lite.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_puck_lite.mdx @@ -4,6 +4,7 @@ sidebar_position: 1 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#lidar-3d). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_ultra_puck.mdx b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_ultra_puck.mdx index 6341f8a0..39febe86 100644 --- a/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_ultra_puck.mdx +++ b/docs_versioned_docs/version-ros2humble/robots/accessories/sensors/lidar_3d/velodyne_ultra_puck.mdx @@ -4,6 +4,7 @@ sidebar_position: 4 --- import Support from "/components/support.mdx"; +import YAML from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx";
This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. -This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml.mdx#lidar-3d). +This allows you to add or remove the sensor from your robot's software description by modifying the [robot configuration yaml](../../../../ros/config/yaml/sensors.mdx). --- diff --git a/docs_versioned_docs/version-ros2humble/ros/api/overview.mdx b/docs_versioned_docs/version-ros2humble/ros/api/overview.mdx index bf9c11c5..5f1ee68e 100644 --- a/docs_versioned_docs/version-ros2humble/ros/api/overview.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/api/overview.mdx @@ -95,4 +95,4 @@ used the same topic, then they would both drive when a message is published to t to `robot1/cmd_vel` and `robot2/cmd_vel` for each respective robot. By default, the namespace of the robot will be obtained from the serial number of the robot. If your serial number is `cpr-a200-0001`, then your namespace -will be `a200_0001`. This can be overwritten in the [robot.yaml](../config/yaml.mdx) file. +will be `a200_0001`. This can be overwritten in the [robot.yaml](../config/yaml/overview.mdx) file. diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml.mdx deleted file mode 100644 index f734f76d..00000000 --- a/docs_versioned_docs/version-ros2humble/ros/config/yaml.mdx +++ /dev/null @@ -1,1195 +0,0 @@ ---- -title: Robot YAML -sidebar_label: Robot YAML -sidebar_position: 1 -toc_min_heading_level: 2 -toc_max_heading_level: 4 ---- - -Our robots provide users with a wide range of customization options: sensors, sensor mounting structures, and custom-made parts. Matching the flexibility of our hardware, Clearpath's ROS 2 system is designed to keep all these customization decisions in a single configuration file. - -The **Clearpath Robot Configuration YAML**, or `robot.yaml` for short, contains all information pertinent to the entire robot system, allowing robot builders and users to quickly and easily modify any ROS 2 component. - -## Overview - -The `robot.yaml` is composed of five major sections: - -1. [**system**](#system) level information such as the robot's hostname, IP, and ROS middleware implementation. -2. [**platform**](#platform) level configurations such as robot specific mounting structures and specifying an extra URDF to attach. -3. [**links**](#links) that are URDF primitives: boxes, cylinders, and meshes. -4. [**mounts**](#mounts) that are predefined, generic, sensor mounting structures. -5. [**sensors**](#sensors) that are selected from an inventory of Clearpath supported sensors. - -Additionally, there are two other, required parameters: - -1. The robot's [**serial_number**](#serial-number); which is used to determine the model and version. -2. The configuration **version** to use, as future updates are released. - -#### Sample - -
-
- -
Sample customization Husky A200
-
-
- -Below is the sample **Husky A200** robot YAML of the robot displayed above. In the following sections, we will reference each and every component of this sample file, and show how to robot looks as we build it up. - -Find more samples `robot.yaml` configuration files in the [Clearpath Configuration repository](https://github.com/clearpathrobotics/clearpath_config/). - -You can also skip to each section to get an explanation of each part of the sample configuration: - -1. [**Serial Number Sample**](#serial-sample) -2. [**System Sample**](#system-sample) -3. [**Platform Sample**](#platform-sample) -4. [**Links Sample**](#links-sample) -5. [**Mounts Sample**](#mounts-sample) -6. [**Sensors Sample**](#sensors-sample) - -
Sample A200 YAML -

- -```yaml -serial_number: a200-0000 -version: 0 -system: - hosts: - self: cpr-a200-0000 - platform: - cpr-a200-0000: 192.168.131.1 - onboard: {} - remote: {} - ros2: - username: administrator - namespace: a200_0000 - domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp - workspaces: [] -platform: - controller: ps4 - attachments: - front_bumper: - enabled: true - model: default - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extension: 0.0 - rear_bumper: - enabled: true - model: default - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extension: 0.0 - structure: - enabled: true - model: sensor_arch_300 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - top_plate: - enabled: true - model: pacs - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extras: - urdf: null -links: - box: - - name: user_bay_cover - parent: top_plate_link - xyz: [0.0, 0.0, 0.00735] - rpy: [0.0, 0.0, 0.0] - size: [0.4, 0.4, 0.002] - cylinder: [] - frame: [] - mesh: [] - sphere: [] -mounts: - bracket: - - parent: top_plate_mount_d1 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - model: horizontal - fath_pivot: - - parent: sensor_arch_mount - xyz: [0.0, 0.0, -0.021] - rpy: [3.1415, 0.0, 0.0] - angle: 0.0 - riser: [] - sick: [] - post: [] - disk: [] -sensors: - camera: - - model: intel_realsense - urdf_enabled: true - launch_enabled: true - parent: fath_pivot_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - camera: - camera_name: camera_0 - device_type: d435 - serial_no: '0' - enable_color: true - rgb_camera.profile: 640,480,30 - enable_depth: true - depth_module.profile: 640,480,30 - pointcloud.enable: true - gps: [] - imu: [] - lidar2d: - - model: hokuyo_ust - urdf_enabled: true - launch_enabled: true - parent: bracket_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - urg_node: - laser_frame_id: lidar2d_0_laser - ip_address: 192.168.131.20 - ip_port: 10940 - angle_min: -2.356 - angle_max: 2.356 - lidar3d: - - model: velodyne_lidar - urdf_enabled: true - launch_enabled: true - parent: sensor_arch_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - velodyne_driver_node: - frame_id: lidar3d_0_laser - device_ip: 192.168.131.25 - port: 2368 - model: VLP16 - velodyne_transform_node: - model: VLP16 - fixed_frame: lidar3d_0_laser - target_frame: lidar3d_0_laser -``` - -

-
- -## Serial Number - -The Clearpath serial number is composed of two sections: an alpha-numerical code corresponding to the robot platform, followed by an integer corresponding to the unit number, and separated by a hyphen, `-`. e.g. `a200-0001`. - -At this moment, the supported robot platforms are: - -1. [Husky A200](../../robots/outdoor_robots/husky/user_manual_husky.mdx#introduction): `a200-0000` -2. [Jackal J100](../../robots/outdoor_robots/jackal/user_manual_jackal.mdx#introduction): `j100-0000` - -Every robot platform has specific [attachments](#attachments), i.e. platform specific parts, that are selected based on the serial number passed. Therefore, it is required that a serial number is specified in the `robot.yaml`. - -### Sample {#serial-sample} - -In our sample, we use a **Husky A200** and therefore have set our serial number to: - -```yaml -serial_number: "a200-0000" -``` - -## System - -Proper networking setup is crucial in setting up the ROS 2 middleware and ensure other onboard computers communicate reliably. - -### 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 **self** entry refers to what hostname is this configuration file 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 PC. - -### ROS 2 Environment - -The **ros2** sections is necessary to setup the ROS 2 middleware. - -- **username** must match the username of the user that is to run all ROS nodes. -- **namespace** specified will be appended as a prefix to all sensor topics to prevent topic cloberring 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 - -### Sample {#system-sample} - -
Sample A200 System Section -

- -In our sample, we have a **Husky A200** platform whose primary computer has hostname: `cpr-a200-0000` and IP: `192.168.131.1`. - -And, note that this configuration YAML is meant to be on that primary computer, hence `self: cpr-a200-0000`. - -By default, all Clearpath robots use username `administrator` and the robot's namespace matches the `serial_number`. - -```yaml -system: - hosts: - self: cpr-a200-0000 - platform: - cpr-a200-0000: 192.168.131.1 - onboard: {} - remote: {} - ros2: - username: administrator - namespace: a200_0000 - domain_id: 0 - rmw_implementation: rmw_fastrtps_cpp - workspaces: [] -``` - -At this point, with just the **serial_number** and **system** defined: our robot is just the standard **Husky A200** platform, and looks like this: - -

-
- -
Default Husky A200
-
-
- -

-
- -## Platform - -Every robot platform has unique structures such as versatile sensor mounting solutions, wireless charging receivers, and waterproofing enclosures; we refer to these as attachments. - -#### Joystick Controller -We support two types of controllers: - - **ps4**: standard Playstation4 controller. - - **logitech**: Logitech F710 - -```yaml -controller: ps4 # or logitech -``` - -#### Attachments - -There are four types of attachments: - -1. **bumpers** modify the front face and rear face of the robot platform. -2. **fenders** modify the area above the wheels on the front and rear of the platform. -3. **top_plates** modify the top face of the robot platform. -4. **structures** are large custom parts that are added atop the top plate. - -#### Husky A200 {#attachments-a200} - -The **Husky A200** has a few models for each of it's attachments: - -- **bumpers**: - - **_default:_** standard bumpers. - - **_wibotic:_** wireless charging receiver. - -```yaml -front_bumper: - enabled: true - model: default # or wibotic - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extension: 0.0 -rear_bumper: - enabled: true - model: default # or wibotic - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extension: 0.0 -``` - -- **top plate**: - - **_default:_** standard Husky A200 top plate. - - **_large:_** extended top plate, used to allow for enough space to mount large payloads. - - **_pacs:_** comes with **80x80 mm** mounting screw holes for versatile sensor placement. - -```yaml -top_plate: - enabled: true - model: default # or 'pacs' or 'large' - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -- **struture**: - - **_sensor_arch_300:_** 300mm tall extrusion sensor arch. - - **_sensor_arch_510:_** 510mm tall extrusion sensor arch. - -```yaml -structure: - enabled: false - model: sensor_arch_300 # or sensor_arch_510 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -#### Jackal J100 {#attachments-j100} - -The **Jackal J100** currently only has customization options with it's fenders. - -- **fenders** can be swapped from the `default` model to the `sensor` model that has a mounting location for a small lidar or camera. - -```yaml -front_fender: - enabled: true # or false - model: default # or sensor - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -rear_fender: - enabled: true # or false - model: default # or sensor - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -#### Extras - -Despite all current customization options, we still would like our users to be able to add-in their existing custom URDF to the robot platform URDF and pass in and overwrite parameters to all platform nodes. -Extras have the following entries: - -- **urdf:** absolute path to URDF to add to robot platform URDF. -- **ros_parameters:** in YAML to pass in parameters to platform nodes. This is useful to change parameters such as the robot's velocity and acceleration. - -```yaml -extras: - urdf: null # /absolute/path/to/urdf - ros_parameters: {} # node parameter -``` - -#### ROS Parameters -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 -platform: - extras: - ros_parameters: - platform_velocity_controller: - wheel_radius": 0.1651 - linear.x.max_velocity": 1.0 - linear.x.min_velocity": -1.0 - linear.x.max_acceleration": 3.0 - linear.x.min_acceleration": -3.0 - angular.z.max_velocity": 2.0 - angular.z.min_velocity": -2.0 - angular.z.max_acceleration": 6.0 - angular.z.min_acceleration": -6.0 -``` - - -**J100 Jackal Controller Defaults:** -```yaml -platform: - extras: - ros_parameters: - platform_velocity_controller: - wheel_radius": 0.098 - linear.x.max_velocity": 2.0 - linear.x.min_velocity": -2.0 - linear.x.max_acceleration": 20.0 - linear.x.min_acceleration": -20.0 - angular.z.max_velocity": 4.0 - angular.z.min_velocity": -4.0 - angular.z.max_acceleration": 25.0 - angular.z.min_acceleration": -25.0 -``` - -#### Sample {#platform-sample} - -
Sample A200 Platform Section -

- -

-
- -
Husky A200 with Default Top Plate
-
-
- -In this sample, we swapped the top plate from the **_default_** model to the **_pacs_** model. Notice all the links added by the **_pacs_** plate below, compared to the **_default_** plate above. - -```yaml -top_plate: - enabled: true - model: pacs # switched from 'default' to 'pacs' - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -
-
- -
Husky A200 with PACS Top Plate
-
-
- -Then, we added a sensor arch to add our sample sensors to. We can do this by simply enabling the **structure** and setting the model to **_sensor_arch_300_**. - -```yaml -structure: - enabled: true - model: sensor_arch_300 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -
-
- -
Husky A200 with 300mm Sensor Arch
-
-
- -In terms of the **front_bumper** and **rear_bumper**, we left these as defaults. And, since we are not including any customization URDF or launch parameters; the resulting **platform** section look like this: - -```yaml -platform: - controller: ps4 - attachments: - front_bumper: - enabled: true - model: default - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extension: 0.0 - rear_bumper: - enabled: true - model: default - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extension: 0.0 - structure: - enabled: true - model: sensor_arch_300 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - top_plate: - enabled: true - model: pacs - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - extras: - urdf: null - ros_parameters: {} -``` - -

-
- -## Links - -Links are any URDF primitive: - -1. **frame** in the URDF without any geometry, i.e. just a frame. - -```yaml -frame: - - name: link_name - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -2. **box** of given length, width, and height. - -```yaml -box: - - name: box_name - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - size: [0.01, 0.01, 0.01] -``` - -3. **cylinder** of given radius and height. - -```yaml -cylinder: - - name: cylinder_name - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - radius: 0.01 - length: 0.01 -``` - -4. **sphere** of given radius. - -```yaml -sphere: - - name: sphere_name - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - radius: 0.01 -``` - -5. **mesh** from a given absolute path to STL or OBJ file. - -```yaml -mesh: - - name: mesh_name - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - visual: /absolute/path/to/mesh.stl -``` - -If a user needs to add a mesh or primitive to represent a payload on their robot, they can either create a URDF and use the platform extras, or they can add an link directly through the `robot.yaml`. - -Just as is the case in URDF, links are added at the center of the primitive. In other words, you will need to slide up all links by half their height to have it "sit" on its parent link. - -### Sample {#links-sample} - -
Sample A200 Links Section -

- -

-
- -
Husky A200 with Open User Bay
-
-
- -In this sample, we will use links to add thin **box** to cover up the user bay. - -We add an entry under the **box** list: - -```yaml -box: - - name: user_bay_cover - parent: top_plate_link # add it to the top_plate_link - xyz: [0.0, 0.0, 0.00735] # move it up 6.35mm (thickness of top plate) and move it up 1mm (half height of the box) - rpy: [0.0, 0.0, 0.0] - size: [0.4, 0.4, 0.002] # length 400mm, width 400mm and 2mm thick. -``` - -
-
- -
Husky A200 with Covered User Bay
-
-
- -We leave the rest of the lists all empty, for the resulting links section: - -```yaml -links: - box: - - name: user_bay_cover - parent: top_plate_link - xyz: [0.0, 0.0, 0.00735] - rpy: [0.0, 0.0, 0.0] - size: [0.4, 0.4, 0.002] - cylinder: [] - frame: [] - mesh: [] - sphere: [] -``` - -

-
- -## Mounts - -Most sensors can use similar mounting structures. Therefore, we want to keep mounts separate from sensors, such that users could attach their own sensors to existing mounts. - -The following **mounts** are available: - -- **riser:** a plate with the defined number of rows and columns of an **80mm x 80mm** grid. - -```yaml -riser: - - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - rows: 4 # rows of 80mm x 80mm grid - columns: 4 # columns of 80mm x 80mm grid - thickness: 0.00635 -``` - -- **bracket:** a small **100mm x 100mm** plate with **80mm x 80mm** screw holes to attach it to the grid. It comes with hole patterns to attach all supported small sensors. - -```yaml -bracket: - - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - model: horizontal # or large or vertical -``` - -- **fath_pivot:** generally a camera mount on a single axis that can be adjusted to change the pitch of the camera. - -```yaml -fath_pivot: - - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - angle: 0.0 # in radian -``` - -- **sick:** are mounts specifically designed to mount SICK LiDARs. The orientation of the LiDAR on the mount can be set to either `upright` or `inverted`. -```yaml -sick: - - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - model: inverted # or upright -``` - -- **post:** are vertical extrusion rails to which sensors can be added. -```yaml -post: - - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - model: single # or dual or quad - spacing: 0.08 # distance between multiple posts if model is dual or quad - height: 0.075 # height of post -``` - -- **disk:** are circular plates which are used to mount circular sensors, i.e. the Velodyne -```yaml -disk: - - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] -``` - -### Sample {#mounts-sample} - -
Sample A200 Mounts Section -

- -

-
- -
Husky A200 with Covered User Bay
-
-
- -In this sample, we will add a **bracket** to mount a LiDAR to the front of the **Husky A200**. - -We select the **_top_plate_mount_d1_**, i.e. the middle (**d**), front (**1**), 80mm x 80mm mounting location on the **pacs** top plate. - -```yaml -bracket: - - parent: top_plate_mount_d1 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - model: horizontal -``` - -
-
- -
Husky A200 with D1 Bracket
-
-
- -Then, we want to add a camera to the sensor arch. However, we will complicate things by adding it upside down to the extrusion. - -We choose a **fath_pivot** mount, and then we set its **parent** to the **_sensor_arch_mount_**. - -Using the **xyz** entry, we lower the mount by 21mm to get it under the sensor arch; then, we roll it by PI to get it upside down. - -```yaml -fath_pivot: - - parent: sensor_arch_mount # mount atop the sensor arch - xyz: [0.0, 0.0, -0.021] # lower pivot mount to below the sensor arch - rpy: [3.1415, 0.0, 0.0] # roll pivot mount to flip it upside down - angle: 0.0 -``` - -
-
- -
Husky A200 with upside down Fath Pivot Mount
-
-
- -Since we did not need a riser, we leave that section empty; the resulting **mounts** section: - -```yaml -mounts: - bracket: - - parent: top_plate_mount_d1 - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - model: horizontal - fath_pivot: - - parent: sensor_arch_mount - xyz: [0.0, 0.0, -0.021] - rpy: [3.1415, 0.0, 0.0] - angle: 0.0 - riser: [] - sick: [] - post: [] - disk: [] -``` - -

-
- -## Sensors - -At Clearpath, we have been migrating our large inventory of tested sensor drivers from ROS 1 to ROS 2. - -Sensors are split up into sections: - -- **Cameras:** publish **_sensor_msgs/Image_** messages -- **GPS:** publish **_sensor_msgs/NavSatFix_** messages -- **IMU:** publish **_sensor_msgs/Imu_** messages -- **LiDAR 2D:** publish **_sensor_msgs/LaserScan_** messages -- **LiDAR 3D:** publish **_sensor_msgs/PointCloud2_** messages - -In ROS 2, sensors use a `ros_parameters` YAML that contains all launch parameters for the driver node. To facilitate complete customization of these node parameters, the `ros_parameters` section, under every sensor entry, serves as a way to pass those key-value pairs to the corresponding node. - -By default, we pass tested parameters that are used on Clearpath robots. - -### Cameras - -- **_intel_realsense:_** - -```yaml -camera: - - model: intel_realsense - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - camera: - camera_name: camera_0 - device_type: d435 - serial_no: "0" - enable_color: true - rgb_camera.profile: 640,480,30 - enable_depth: true - depth_module.profile: 640,480,30 - pointcloud.enable: true -``` - -- **_flir_blackfly:_** - -```yaml -camera: - - model: flir_blackfly - urdf_enabled: true - launch_enabled: true - parent: fath_pivot_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - flir_blackfly: - serial_number: 0 -``` - -### GPS - -- **_swift_nav:_** - -```yaml -gps: - - model: swiftnav_duro - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - duro_node: - gps_receiver_frame_id: gps_0_link - ip_address: 192.168.131.30 - ip_port: 55555 - imu_frame_id: gps_0_link -``` - -- **_garmin_18x_** -```yaml -gps: - - model: garmin_18x - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - nmea_navsat_driver: - frame_id: gps_0_link - port: /dev/ttyACM0 - baud: 115200 -``` - -- **_novatel_smart6_** -```yaml -gps: - - model: novatel_smart6 - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - nmea_navsat_driver: - frame_id: gps_0_link - port: /dev/ttyACM0 - baud: 115200 -``` - -- **_novatel_smart7_** -```yaml -gps: - - model: novatel_smart7 - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - nmea_navsat_driver: - frame_id: gps_0_link - port: /dev/ttyACM0 - baud: 115200 -``` - -### IMU - -- **_microstrain:_** - -```yaml -imu: - - model: microstrain_imu - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - microstrain_inertial_driver: - imu_frame_id: imu_0_link - port: /dev/microstrain_main - use_enu_frame: true -``` - -- **_chrobotics_um6:_** - -```yaml -imu: - - model: chrobotics_um6 - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - um6_driver: - port: /dev/clearpath/imu - frame_id: imu_0_link - tf_ned_to_enu: true -``` - -- **_redshift_um7:_** -```yaml -imu: - - model: redshift_um7 - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - um7_driver: - port: /dev/clearpath/imu - frame_id: imu_0_link - tf_ned_to_enu: true -``` - -### LiDAR 2D - -- **_hokuyo_ust:_** - -```yaml -lidar2d: - - model: hokuyo_ust - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - urg_node: - laser_frame_id: lidar2d_0_laser - ip_address: 192.168.131.20 - ip_port: 10940 - angle_min: -2.356 - angle_max: 2.356 -``` - -- **_sick_lms1xx:_** - -```yaml -lidar2d: - - model: sick_lms1xx - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - lms1xx: - frame_id: lidar2d_0_laser - host: 192.168.131.20 - port: 2111 -``` - -### LiDAR 3D - -- **_velodyne_lidar - 16:_** - -```yaml -lidar3d: - - model: velodyne_lidar - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - velodyne_driver_node: - frame_id: lidar3d_0_laser - device_ip: 192.168.131.25 - port: 2368 - model: VLP16 - velodyne_transform_node: - model: VLP16 - fixed_frame: lidar3d_0_laser - target_frame: lidar3d_0_laser -``` - - -- **_velodyne_lidar - 32C:_** - -```yaml - - model: velodyne_lidar - urdf_enabled: true - launch_enabled: true - parent: base_link - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - velodyne_driver_node: - frame_id: lidar3d_0_laser - device_ip: 192.168.131.25 - port: 2368 - model: 32C - velodyne_transform_node: - model: 32C - calibration: /opt/ros/humble/share/velodyne_pointcloud/params/VeloView-VLP-32C.yaml - fixed_frame: lidar3d_0_laser - target_frame: lidar3d_0_laser -``` - -### Sample {#sensors-sample} - -
Sample A200 Sensors Section -

- -

-
- -
Husky A200 with upside down Fath Pivot Mount
-
-
- -In this sample, we first add the `velodyne_lidar` to the `sensor_arch_mount` by simply changing the parent link. - -```yaml -lidar3d: - - model: velodyne_lidar - urdf_enabled: true - launch_enabled: true - parent: sensor_arch_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - velodyne_driver_node: - frame_id: lidar3d_0_laser - device_ip: 192.168.131.25 - port: 2368 - model: VLP16 - velodyne_transform_node: - model: VLP16 - fixed_frame: lidar3d_0_laser - target_frame: lidar3d_0_laser -``` - -
-
- -
Husky A200 with LiDAR 3D on Sensor Arch
-
-
- -Next, we will add a `hokuyo_ust` to the **bracket** we added earlier. Since that is the first **bracket**, then it's mounting location will be: `bracket_0_mount`; setting the parent link of the sensor, we get: - -```yaml -lidar2d: - - model: hokuyo_ust - urdf_enabled: true - launch_enabled: true - parent: bracket_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - urg_node: - laser_frame_id: lidar2d_0_laser - ip_address: 192.168.131.20 - ip_port: 10940 - angle_min: -2.356 - angle_max: 2.356 -``` - -
-
- -
Husky A200 with LiDAR 2D on D1 Bracket
-
-
- -For the final step, we will add an `intel_realsense` to the **fath_pivot** mount that we added. Because it is the first **fath_pivot**, it's mounting location will be: `fath_pivot_0_mount`; setting the parent link of the sensor: - -```yaml -camera: - - model: intel_realsense - urdf_enabled: true - launch_enabled: true - parent: fath_pivot_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - camera: - camera_name: camera_0 - device_type: d435 - serial_no: '0' - enable_color: true - rgb_camera.profile: 640,480,30 - enable_depth: true - depth_module.profile: 640,480,30 - pointcloud.enable: true -``` - -
-
- -
Husky A200 with Intel Realsense
-
-
- -Leaving the other sections empty, leaves us with the full sensors section: - -```yaml -sensors: - camera: - - model: intel_realsense - urdf_enabled: true - launch_enabled: true - parent: fath_pivot_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - camera: - camera_name: camera_0 - device_type: d435 - serial_no: '0' - enable_color: true - rgb_camera.profile: 640,480,30 - enable_depth: true - depth_module.profile: 640,480,30 - pointcloud.enable: true - gps: [] - imu: [] - lidar2d: - - model: hokuyo_ust - urdf_enabled: true - launch_enabled: true - parent: bracket_0_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - urg_node: - laser_frame_id: lidar2d_0_laser - ip_address: 192.168.131.20 - ip_port: 10940 - angle_min: -2.356 - angle_max: 2.356 - lidar3d: - - model: velodyne_lidar - urdf_enabled: true - launch_enabled: true - parent: sensor_arch_mount - xyz: [0.0, 0.0, 0.0] - rpy: [0.0, 0.0, 0.0] - ros_parameters: - velodyne_driver_node: - frame_id: lidar3d_0_laser - device_ip: 192.168.131.25 - port: 2368 - model: VLP16 - velodyne_transform_node: - model: VLP16 - fixed_frame: lidar3d_0_laser - target_frame: lidar3d_0_laser - -``` - -

-
diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/_category_.json b/docs_versioned_docs/version-ros2humble/ros/config/yaml/_category_.json new file mode 100644 index 00000000..22da6966 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Robot YAML", + "position": 1 +} diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/links.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/links.mdx new file mode 100644 index 00000000..83a9dd42 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/links.mdx @@ -0,0 +1,96 @@ +--- +title: Links +sidebar_label: Links +sidebar_position: 5 +toc_min_heading_level: 2 +toc_max_heading_level: 4 +--- +import LinkFrame from "/docs_versioned_docs/version-ros2humble/components/yaml/links/frame.mdx"; +import Box from "/docs_versioned_docs/version-ros2humble/components/yaml/links/box.mdx"; +import Cylinder from "/docs_versioned_docs/version-ros2humble/components/yaml/links/cylinder.mdx"; +import Mesh from "/docs_versioned_docs/version-ros2humble/components/yaml/links/mesh.mdx"; +import Sphere from "/docs_versioned_docs/version-ros2humble/components/yaml/links/sphere.mdx"; + +Links are any URDF primitive. +:::tip keep the frames in mind: + Just as is the case in URDF, links have their frame at the center of the primitive. In other words, you will need to slide up all links by half their height to have it "sit" on its parent link. +::: + +## Frame +Just a link without any geometry. + + +## Box +A box of defined size. + + +## Cylinder +A cylinder of defined height and radius. + + +## Sphere +A sphere of defined radius. + + +## Mesh +Include your custom mesh without creating a URDF of your own. + +If you prefer to add a URDF instead, then you can link it directly through the `platform.extras` entry. + + +## Sample + +
Sample A200 Links Section +

+ +

+
+ +
Husky A200 with Open User Bay
+
+
+ +In this sample, we will use links to add thin **box** to cover up the user bay. + +We add an entry under the **box** list: + +```yaml +box: + - name: user_bay_cover + parent: top_plate_link # add it to the top_plate_link + xyz: [0.0, 0.0, 0.00735] # move it up 6.35mm (thickness of top plate) and move it up 1mm (half height of the box) + rpy: [0.0, 0.0, 0.0] + size: [0.4, 0.4, 0.002] # length 400mm, width 400mm and 2mm thick. +``` + +
+
+ +
Husky A200 with Covered User Bay
+
+
+ +We leave the rest of the lists all empty, for the resulting links section: + +```yaml +links: + box: + - name: user_bay_cover + parent: top_plate_link + xyz: [0.0, 0.0, 0.00735] + rpy: [0.0, 0.0, 0.0] + size: [0.4, 0.4, 0.002] + cylinder: [] + frame: [] + mesh: [] + sphere: [] +``` + +

+
diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/mounts.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/mounts.mdx new file mode 100644 index 00000000..60208c18 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/mounts.mdx @@ -0,0 +1,181 @@ +--- +title: Mounts +sidebar_label: Mounts +sidebar_position: 6 +toc_min_heading_level: 2 +toc_max_heading_level: 4 +--- +import BracketHorizontal from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_horizontal.mdx"; +import BracketLarge from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_large.mdx"; +import BracketVertical from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/bracket_vertical.mdx"; +import DiskPost from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk_post.mdx"; +import Disk from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/disk.mdx"; +import FathPivot from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/fath_pivot.mdx"; +import PostDual from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_dual.mdx"; +import PostQuad from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_quad.mdx"; +import PostSingle from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/post_single.mdx"; +import Riser1x7 from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_1x7.mdx"; +import Riser4x4 from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_4x4.mdx"; +import Riser8x7 from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/riser_8x7.mdx"; +import SickInverted from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_inverted.mdx"; +import SickUpright from "/docs_versioned_docs/version-ros2humble/components/yaml/mounts/sick_upright.mdx"; + +Most sensors can use similar mounting structures. Therefore, we want to keep mounts separate from sensors, such that users could attach their own sensors to existing mounts. + +## Riser +A mounting plate with the defined number of rows and columns of the PACS™ **80 mm X 80 mm** grid. + +:::warning not available without pacs: + At this time, you will **need to use the PACS™ top plate**, only available using the `a200.top_plate` with `model: pacs`, to add these riser mounts. See the [**platform**](./platform.mdx) section for more information. +::: + +### Preset Risers +These are the most common riser sizes; therefore, we have accurate models of these plates. + +#### 8 X 7 Riser + + +#### 1 X 7 Riser + + +### Custom Risers +To promote flexibility, the size of the risers can be changed to any size; however, there are no models for these, and instead will be generated using primitives. + +For example, we can add a riser with a 4 by 4 grid: + + +## Bracket +Brackets are small plates with **80 mm X 80 mm** screw holes that can be used to attach it to the PACS™ gird. They come in three different models. + +The **horizontal** and **vertical** models have screw holes to attach all small sensors such as camera, lidars, and IMUs. + +The **large** model has screw holes to attach larger sensors such as the SwiftNav Duro receivers. + +### Horizontal Bracket + + +### Vertical Bracket + + +### Large Bracket + + +## Fath Pivot +Camera mounts with a single joint that can be adjusted to change the pitch of the camera. The angle of the joint is set using the **angle** parameter. + + +## SICK Mounts +These mounts are specifically designed to mount SICK LiDARs, but can be used for other sensors if required. +The orientation of the LiDAR on the mount can be set to either `upright` or `inverted` + +### Upright + + +### Inverted + + +## Post +Posts are vertical extrusion rails to where sensors can be added. + +These can be single, dual, and quad legs. + +### Single + + +### Dual + + +### Quad + + +## Disk +Disk plates are used for circular sensors, such as the Velodyne LiDARs. + + +We can also lift the **disk** by using a **post**. + + + +## Sample + +
Sample A200 Mounts Section +

+ +

+
+ +
Husky A200 with Covered User Bay
+
+
+ +In this sample, we will add a **bracket** to mount a LiDAR to the front of the **Husky A200**. + +We select the **_top_plate_mount_d1_**, in other words, the middle (**d**), front (**1**), 80 mm X 80 mm mounting location on the **PACS** top plate. + +```yaml +bracket: + - parent: top_plate_mount_d1 + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: horizontal +``` + +
+
+ +
Husky A200 with D1 Bracket
+
+
+ +Then, we want to add a camera to the sensor arch. However, we will complicate things by adding it upside down to the extrusion. + +We choose a **fath_pivot** mount, and then we set its **parent** to the **_sensor_arch_mount_**. + +Using the **xyz** entry, we lower the mount by 21 mm to get it under the sensor arch; then, we roll it by $\pi$ to get it upside down. + +```yaml +fath_pivot: + - parent: sensor_arch_mount # mount atop the sensor arch + xyz: [0.0, 0.0, -0.021] # lower pivot mount to below the sensor arch + rpy: [3.1415, 0.0, 0.0] # roll pivot mount to flip it upside down + angle: 0.0 +``` + +
+
+ +
Husky A200 with upside down Fath Pivot Mount
+
+
+ +Since we did not need a riser, we leave that section empty; the resulting **mounts** section: + +```yaml +mounts: + bracket: + - parent: top_plate_mount_d1 + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: horizontal + fath_pivot: + - parent: sensor_arch_mount + xyz: [0.0, 0.0, -0.021] + rpy: [3.1415, 0.0, 0.0] + angle: 0.0 + riser: [] + sick: [] + post: [] + disk: [] +``` + +

+
diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx new file mode 100644 index 00000000..95a3b87c --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/overview.mdx @@ -0,0 +1,186 @@ +--- +title: Robot YAML Overview +sidebar_label: Overview +sidebar_position: 1 +toc_min_heading_level: 2 +toc_max_heading_level: 4 +--- + +Our robots provide users with a wide range of customization options: sensors, sensor mounting structures, and custom-made parts. Matching the flexibility of our hardware, Clearpath's ROS 2 system is designed to keep all these customization decisions in a single configuration file. + +The **Clearpath Robot Configuration YAML**, or `robot.yaml` for short, contains all pertinent information to the entire robot system, allowing robot builders and users to quickly and easily modify any ROS 2 component. + +## Outline + +The `robot.yaml` is composed of five major sections: +1. [**system**](./system.mdx) level information such as the robot's hostname, IP, and ROS middleware implementation. +2. [**platform**](./platform.mdx) level configurations such as robot specific mounting structures and parameters. +3. [**links**](./links.mdx) of standard URDF primitives such as boxes, cylinders, and meshes. +4. [**mounts**](./mounts.mdx) are predefined, generic, sensor mounting structures. +5. [**sensors**](./sensors.mdx) are selected from an inventory of Clearpath supported sensors. + +Additionally, there are two other, required parameters: + +1. The robot's [**serial_number**](./serial.mdx); which is used to determine the model and version. +2. The configuration **version** to use, as future updates are released. + +## Sample + +
+
+ +
Sample customization, Husky A200
+
+
+ +Below is the sample **Husky A200** robot YAML of the robot displayed above. In the following sections, we will reference each and every component of this sample file, and show how to robot looks as we build it up. + +Find more samples `robot.yaml` configuration files in the [Clearpath Configuration repository](https://github.com/clearpathrobotics/clearpath_config/). + +You can also skip to each section to get an explanation of each part of the sample configuration: + +1. [**Serial Number Sample**](./serial.mdx#sample) +2. [**System Sample**](./system.mdx#sample) +3. [**Platform Sample**](./platform.mdx#sample) +4. [**Links Sample**](./links.mdx#sample) +5. [**Mounts Sample**](./mounts.mdx#sample) +6. [**Sensors Sample**](./sensors.mdx#sample) + +
Sample A200 YAML +

+ +```yaml +serial_number: a200-0000 +version: 0 +system: + hosts: + self: cpr-a200-0000 + platform: + cpr-a200-0000: 192.168.131.1 + onboard: {} + remote: {} + ros2: + username: administrator + namespace: a200_0000 + domain_id: 0 + rmw_implementation: rmw_fastrtps_cpp + workspaces: [] +platform: + controller: ps4 + attachments: + - name: front_bumper + type: a200.bumper + model: default + parent: front_bumper_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extension: 0.0 + - name: rear_bumper + type: a200.bumper + model: default + parent: rear_bumper_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extension: 0.0 + - name: top_plate + type: a200.top_plate + model: pacs + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + - name: sensor_arch + type: a200.sensor_arch + model: sensor_arch_300 + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extras: + urdf: null +links: + box: + - name: user_bay_cover + parent: top_plate_link + xyz: [0.0, 0.0, 0.00735] + rpy: [0.0, 0.0, 0.0] + size: [0.4, 0.4, 0.002] + cylinder: [] + frame: [] + mesh: [] + sphere: [] +mounts: + bracket: + - parent: top_plate_mount_d1 + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + model: horizontal + fath_pivot: + - parent: sensor_arch_mount + xyz: [0.0, 0.0, -0.021] + rpy: [3.1415, 0.0, 0.0] + angle: 0.0 + riser: [] + sick: [] + post: [] + disk: [] +sensors: + camera: + - model: intel_realsense + urdf_enabled: true + launch_enabled: true + parent: fath_pivot_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + camera: + camera_name: camera_0 + device_type: d435 + serial_no: '0' + enable_color: true + rgb_camera.profile: 640,480,30 + enable_depth: true + depth_module.profile: 640,480,30 + pointcloud.enable: true + gps: [] + imu: [] + lidar2d: + - model: hokuyo_ust + urdf_enabled: true + launch_enabled: true + parent: bracket_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + urg_node: + laser_frame_id: lidar2d_0_laser + ip_address: 192.168.131.20 + ip_port: 10940 + angle_min: -2.356 + angle_max: 2.356 + lidar3d: + - model: velodyne_lidar + urdf_enabled: true + launch_enabled: true + parent: sensor_arch_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + velodyne_driver_node: + frame_id: lidar3d_0_laser + device_ip: 192.168.131.25 + port: 2368 + model: VLP16 + velodyne_transform_node: + model: VLP16 + fixed_frame: lidar3d_0_laser + target_frame: lidar3d_0_laser +``` + +

+
diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx new file mode 100644 index 00000000..1431088f --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/platform.mdx @@ -0,0 +1,301 @@ +--- +title: Platform +sidebar_label: Platform +sidebar_position: 4 +toc_min_heading_level: 2 +toc_max_heading_level: 5 +--- +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"; +import A200TopPlateDefault from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_default.mdx"; +import A200TopPlateLarge from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_large.mdx"; +import A200TopPlatePACS from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/a200/top_plate_pacs.mdx"; +import J100FenderDefault from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_default.mdx"; +import J100FenderSensor from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/fender_sensor.mdx"; +import J100TopPlateArkEnclosure from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/j100/top_plate_ark_enclosure.mdx"; +import W200ArmMount from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/arm_mount.mdx"; +import W200BulkheadArmMount from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_arm_mount.mdx"; +import W200BulkheadDefault from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/bulkhead_default.mdx"; +import W200Generator from "/docs_versioned_docs/version-ros2humble/components/yaml/attachments/w200/generator.mdx"; + +Every robot platform has unique structures such as versatile sensor mounting solutions, wireless charging receivers, and waterproofing enclosures; we refer to these as **attachments**. + +## Joystick Controller +We support two types of controllers: + - **ps4**: standard Playstation4 controller. + - **logitech**: Logitech F710 + +```yaml +controller: ps4 # or logitech +``` + +## Attachments +Each robot platform has its own unique set of attachments. To facilitate customization, any attachment from any robot platform can be added on any other robot platform. + +There is a default `parent` links at which these attachments are added; however, the `parent` link can be change to wherever you'd want the attachment to be placed. + +Additionally, all attachments can be moved around using the `xyz` parameter to translate and the `rpy` parameter to rotate. + +Each attachment requires two parameters. The `name` parameter that will define the name of the links and joints added to URDF, and the `type` parameter which defines which type of attachment is to be added. + +Some attachment types will have the same `type` parameter across different platforms. In that case, if you'd like to use the attachment that belongs to a specific platform, you will need to prefix the `type` parameter with the platform that it belongs to. For example, `top_plate` would become `a200.top_plate`. If no prefix is set, then the platform defined in the `serial_number` will be used. + +### Husky A200 + +#### Bumper +The A200 can have bumpers of a variable length. By setting the `extension` parameter, the bumper can be extended if required. + +By default, we have two bumpers, on the front and rear of the robot. + + + + +#### Top Plate +The A200 has three types of top plates that modify the mounting surface of the robot. + +##### Default +The **default** top plate is mounted atop a user rail that can be used to mount certain payload inside the chassis and right below the top plate. + +
+ +##### Large +The **large** top plate does not have a user rail and is primarily used to mount larger payloads such as manipulators on the robot. + +
+ +##### PACS +The **pacs** top plate does not have a user rail. It has an opening to access the user bay within the chassis. It comes with the grid of mounting holes of the PACS™ **80mm x 80mm** grid. + +
+ +#### Sensor Arch +The A200 has two types of sensor archs which are used to mount sensors from a vantage point. + +##### Sensor Arch 300 + +
+ +##### Sensor Arch 510 + +
+ +## Jackal J100 {#attachments-j100} + +### Fenders +There are two types of fenders that can be equipped on the **J100** platform. + +#### Default Fenders +The **default** fenders are the standard fenders that come with every **J100**. + +The front and rear fender entries are indepenent from each other such that they can be modified independently. + +
+ +#### Sensor Fenders +The **default** fenders are the standard fenders that come with every **J100**. + +The front and rear fender entries are indepenent from each other such that they can be modified independently. + +
+ +### Top Plate +The Jackal only has one type of top plate. The ark enclosure. + +#### Ark Enclosure + +
+ +## Warthog W200 {#attachments-w200} + +### Bulkhead +The Warthog bulkhead is used to cover payloads and to add a second surface to which to attach more payloads. + +#### Default {#default-bulkhead} + +
+ +#### Arm Mount {#arm-mount-bulkhead} + +
+ +### Arm Mount +If instead of using the **bulkhead** to add an arm mount. We can add the arm mount independently using the following entry. + + + +### Generators + + +## Extras +Despite all current customization options, we still would like our users to be able to add-in their existing custom URDF to the robot platform URDF and pass in and overwrite parameters to all platform nodes. +Extras have the following entries: + +- **urdf:** absolute path to URDF to add to robot platform URDF. +- **ros_parameters:** in YAML to pass in parameters to platform nodes. This is useful to change parameters such as the robot's velocity and acceleration. + +```yaml +extras: + urdf: null # /absolute/path/to/urdf + ros_parameters: {} # node parameter +``` + +### ROS Parameters +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 +platform: + extras: + ros_parameters: + platform_velocity_controller: + wheel_radius: 0.1651 + linear.x.max_velocity: 1.0 + linear.x.min_velocity: -1.0 + linear.x.max_acceleration: 3.0 + linear.x.min_acceleration: -3.0 + angular.z.max_velocity: 2.0 + angular.z.min_velocity: -2.0 + angular.z.max_acceleration: 6.0 + angular.z.min_acceleration: -6.0 +``` + + +**J100 Jackal Controller Defaults:** +```yaml +platform: + extras: + ros_parameters: + platform_velocity_controller: + wheel_radius: 0.098 + linear.x.max_velocity: 2.0 + linear.x.min_velocity: -2.0 + linear.x.max_acceleration: 20.0 + linear.x.min_acceleration: -20.0 + angular.z.max_velocity: 4.0 + angular.z.min_velocity: -4.0 + angular.z.max_acceleration: 25.0 + angular.z.min_acceleration: -25.0 +``` + +**W200 Warthog Controller Defaults:** +```yaml +platform: + extras: + ros_parameters: + platform_velocity_controller: + wheel_radius: 0.3 + linear.x.max_velocity: 5.0 + linear.x.min_velocity: -5.0 + linear.x.max_acceleration: 50.0 + linear.x.min_acceleration: -50.0 + angular.z.max_velocity: 4.0 + angular.z.min_velocity: -4.0 + angular.z.max_acceleration: 40.0 + angular.z.min_acceleration: -40.0 +``` + +## Sample + +
Sample A200 Platform Section +

+ +

+
+ +
Husky A200 with Default Top Plate
+
+
+ +In this sample, we swapped the top plate from the **_default_** model to the **_pacs_** model. Notice all the links added by the **_pacs_** plate below, compared to the **_default_** plate above. + +```yaml + - name: top_plate + type: a200.top_plate + model: pacs # switched from 'default' to 'pacs' + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` + +
+
+ +
Husky A200 with PACS Top Plate
+
+
+ +Then, we added a sensor arch to add our sample sensors to. We can do this by adding the **attachment**, **sensor_arch** and setting the model to **_sensor_arch_300_**. + +```yaml + - name: sensor_arch + type: a200.sensor_arch + model: sensor_arch_300 + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true +``` + +
+
+ +
Husky A200 with 300mm Sensor Arch
+
+
+ +In terms of the **front_bumper** and **rear_bumper**, we left these as defaults. And, since we are not including any customization URDF or launch parameters; the resulting **platform** section look like this: + +```yaml +platform: + controller: ps4 + attachments: + - name: front_bumper + type: a200.bumper + model: default + parent: front_bumper_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extension: 0.0 + - name: rear_bumper + type: a200.bumper + model: default + parent: rear_bumper_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extension: 0.0 + - name: top_plate + type: a200.top_plate + model: pacs + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + - name: sensor_arch + type: a200.sensor_arch + model: sensor_arch_300 + parent: mid_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + enabled: true + extras: + urdf: null + ros_parameters: {} +``` + +

+
diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/sensors.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/sensors.mdx new file mode 100644 index 00000000..21efb9bd --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/sensors.mdx @@ -0,0 +1,238 @@ +--- +title: Sensors +sidebar_label: Sensors +sidebar_position: 7 +toc_min_heading_level: 2 +toc_max_heading_level: 4 +--- +import CHRoboticsUM6 from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/chrobotics_um6.mdx"; +import Garmin18x from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/garmin_18x.mdx"; +import HokuyoUST from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/hokuyo_ust.mdx"; +import IntelRealsense from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/intel_realsense.mdx"; +import MicrostrainIMU from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/microstrain_imu.mdx"; +import NovatelSmart6 from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart6.mdx"; +import NovatelSmart7 from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/novatel_smart7.mdx"; +import RedShiftUM7 from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/redshift_um7.mdx"; +import SickLMS1xx from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/sick_lms1xx.mdx"; +import SwiftNavDuro from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/swiftnav_duro.mdx"; +import VelodyneLidar from "/docs_versioned_docs/version-ros2humble/components/yaml/sensors/velodyne_lidar.mdx"; + +At Clearpath, we have been migrating our large inventory of tested sensor drivers from ROS 1 to ROS 2. + +Sensors are split up into sections: + +- **Cameras:** publish **_sensor_msgs/Image_** messages +- **GPS:** publish **_sensor_msgs/NavSatFix_** messages +- **IMU:** publish **_sensor_msgs/Imu_** messages +- **LiDAR 2D:** publish **_sensor_msgs/LaserScan_** messages +- **LiDAR 3D:** publish **_sensor_msgs/PointCloud2_** messages + +In ROS 2, sensors use a `ros_parameters` YAML that contains all launch parameters for the driver node. To facilitate complete customization of these node parameters, the `ros_parameters` section, under every sensor entry, serves as a way to pass those key-value pairs to the corresponding node. + +By default, we pass tested parameters that are used on Clearpath robots. + +## Cameras +### Intel Realsense + + +## GPS +### SwiftNav Duro + + +### Garmin 18X + + +## Novatel Smart6 + + +## Novatel Smart7 + + +## IMU +### Microstrain IMU + + +### CHRobotics UM6 + + +### Redshift UM7 + + +## LiDAR 2D +### Hokuyo UST + + +### SICK LMS1xx + + +## LiDAR 3D +### Velodyne Lidar + + +## Sample + +
Sample A200 Sensors Section +

+ +

+
+ +
Husky A200 with upside down Fath Pivot Mount
+
+
+ +In this sample, we first add the `velodyne_lidar` to the `sensor_arch_mount` by simply changing the parent link. + +```yaml +lidar3d: + - model: velodyne_lidar + urdf_enabled: true + launch_enabled: true + parent: sensor_arch_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + velodyne_driver_node: + frame_id: lidar3d_0_laser + device_ip: 192.168.131.25 + port: 2368 + model: VLP16 + velodyne_transform_node: + model: VLP16 + fixed_frame: lidar3d_0_laser + target_frame: lidar3d_0_laser +``` + +
+
+ +
Husky A200 with LiDAR 3D on Sensor Arch
+
+
+ +Next, we will add a `hokuyo_ust` to the **bracket** we added earlier. Since that is the first **bracket**, then it's mounting location will be: `bracket_0_mount`; setting the parent link of the sensor, we get: + +```yaml +lidar2d: + - model: hokuyo_ust + urdf_enabled: true + launch_enabled: true + parent: bracket_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + urg_node: + laser_frame_id: lidar2d_0_laser + ip_address: 192.168.131.20 + ip_port: 10940 + angle_min: -2.356 + angle_max: 2.356 +``` + +
+
+ +
Husky A200 with LiDAR 2D on D1 Bracket
+
+
+ +For the final step, we will add an `intel_realsense` to the **fath_pivot** mount that we added. Because it is the first **fath_pivot**, it's mounting location will be: `fath_pivot_0_mount`; setting the parent link of the sensor: + +```yaml +camera: + - model: intel_realsense + urdf_enabled: true + launch_enabled: true + parent: fath_pivot_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + camera: + camera_name: camera_0 + device_type: d435 + serial_no: '0' + enable_color: true + rgb_camera.profile: 640,480,30 + enable_depth: true + depth_module.profile: 640,480,30 + pointcloud.enable: true +``` + +
+
+ +
Husky A200 with Intel RealSense
+
+
+ +Leaving the other sections empty, leaves us with the full sensors section: + +```yaml +sensors: + camera: + - model: intel_realsense + urdf_enabled: true + launch_enabled: true + parent: fath_pivot_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + camera: + camera_name: camera_0 + device_type: d435 + serial_no: '0' + enable_color: true + rgb_camera.profile: 640,480,30 + enable_depth: true + depth_module.profile: 640,480,30 + pointcloud.enable: true + gps: [] + imu: [] + lidar2d: + - model: hokuyo_ust + urdf_enabled: true + launch_enabled: true + parent: bracket_0_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + urg_node: + laser_frame_id: lidar2d_0_laser + ip_address: 192.168.131.20 + ip_port: 10940 + angle_min: -2.356 + angle_max: 2.356 + lidar3d: + - model: velodyne_lidar + urdf_enabled: true + launch_enabled: true + parent: sensor_arch_mount + xyz: [0.0, 0.0, 0.0] + rpy: [0.0, 0.0, 0.0] + ros_parameters: + velodyne_driver_node: + frame_id: lidar3d_0_laser + device_ip: 192.168.131.25 + port: 2368 + model: VLP16 + velodyne_transform_node: + model: VLP16 + fixed_frame: lidar3d_0_laser + target_frame: lidar3d_0_laser + +``` + +

+
diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/serial.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/serial.mdx new file mode 100644 index 00000000..3b2f2a2b --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/serial.mdx @@ -0,0 +1,26 @@ +--- +title: Serial Number +sidebar_label: Serial Number +sidebar_position: 2 +toc_min_heading_level: 2 +toc_max_heading_level: 4 +--- +The Clearpath serial number is composed of two sections, separated by a hyphen, `-`, for example, `a200-0001`: +1. An alpha-numerical code corresponding to the robot platform, `a200` +2. Followed by an integer corresponding to the unit number, `0001`. + +At this moment, the supported robot platforms are: + +1. [Husky A200](../../../robots/outdoor_robots/husky/user_manual_husky.mdx): `a200-0000` +2. [Jackal J100](../../../robots/outdoor_robots/jackal/user_manual_jackal.mdx): `j100-0000` +3. [Warthog W200](../../../robots/outdoor_robots/warthog/user_manual_warthog.mdx): `w200-0000` + +Every robot platform has specific [attachments](#attachments) that are selected based on the serial number passed. Therefore, it is **required** that a serial number is specified in the `robot.yaml`. + +## Sample + +In our sample, we use a **Husky A200** and therefore have set our serial number to: + +```yaml +serial_number: "a200-0000" +``` diff --git a/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx b/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx new file mode 100644 index 00000000..d8ee2cc1 --- /dev/null +++ b/docs_versioned_docs/version-ros2humble/ros/config/yaml/system.mdx @@ -0,0 +1,69 @@ +--- +title: System +sidebar_label: System +sidebar_position: 3 +toc_min_heading_level: 2 +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. + +## 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 **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. + +## ROS 2 Environment + +The **ros2** sections is necessary to setup the ROS 2 middleware. + +- **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 + +## Sample + +
Sample A200 System Section +

+ +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: + hosts: + self: cpr-a200-0000 + platform: + cpr-a200-0000: 192.168.131.1 + onboard: {} + remote: {} + ros2: + username: administrator + namespace: a200_0000 + domain_id: 0 + rmw_implementation: rmw_fastrtps_cpp + workspaces: [] +``` + +At this point, with just the **serial_number** and **system** defined, our robot is just the standard **Husky A200** platform, and looks like this: + +

+
+ +
Default Husky A200
+
+
+ +

+
diff --git a/docs_versioned_docs/version-ros2humble/ros/installation/controller.mdx b/docs_versioned_docs/version-ros2humble/ros/installation/controller.mdx index 6fb7f5ae..d99863ea 100644 --- a/docs_versioned_docs/version-ros2humble/ros/installation/controller.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/installation/controller.mdx @@ -73,6 +73,6 @@ The controller should now be paired. :::note -Make sure to set the correct controller type in your [robot.yaml](../config/yaml.mdx) file. See, [Joystick Controller](../config/yaml.mdx#joystick-controller) setup in the Clearpath Configuration. +Make sure to set the correct controller type in your [robot.yaml](../config/yaml/overview.mdx) file. See, [Joystick Controller](../config/yaml/platform.mdx#joystick-controller) setup in the Clearpath Configuration. ::: diff --git a/docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx b/docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx index 99a68155..e0d5c45e 100644 --- a/docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/installation/remote_pc.mdx @@ -40,7 +40,7 @@ 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.mdx) file to generate the same `setup.bash` +The remote 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** @@ -78,4 +78,4 @@ source ~/clearpath/setup.bash You may get the warning `bash: /home/administrator/micro_ros_ws/install/setup.bash: No such file or directory` when you source this file. This is not a concern on the remote computer. The micro ROS workspace is only required on the primary computer. -::: \ 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 1e8b860f..ee3fead4 100644 --- a/docs_versioned_docs/version-ros2humble/ros/installation/robot.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/installation/robot.mdx @@ -6,7 +6,7 @@ toc_min_heading_level: 2 toc_max_heading_level: 4 --- -import JackalFirmware from "../../components/_jackal_firmware.mdx"; +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"; @@ -85,9 +85,7 @@ You should now be able to SSH into the robot by calling `ssh administrator@ + ## Package Install @@ -109,7 +107,7 @@ For details on setting up custom network interface settings see [Clearpath Compu The `robot.yaml` file defines the configuration of the robot including the robot model, all supported accessories and any extra URDF elements or ROS parameters. Information about the Robot YAML -is found in the [Robot Configuration](../config/yaml.mdx) section. This YAML is used to generate the launch, +is found in the [Robot Configuration](../config/yaml/overview.mdx) section. This YAML is used to generate the launch, URDF and ROS parameter files during runtime. Create your `robot.yaml` file and then copy it into `/etc/clearpath/` and replace the existing file. @@ -220,13 +218,13 @@ source /home/administrator/clearpath_ws/install/setup.bash :::note This workspace will also need to be sourced in your [robot.yaml](#robot-yaml) file as described -in the [ROS2 Environment](../config/yaml.mdx#ros-2-environment) section. +in the [ROS2 Environment](../config/yaml/system.mdx#ros-2-environment) section. ::: #### Setup folder -Create the setup folder where the [robot.yaml](../config/yaml.mdx) file will be stored, and where files will be generated: +Create the setup folder where the [robot.yaml](../config/yaml/overview.mdx) file will be stored, and where files will be generated: ``` sudo mkdir /etc/clearpath/ -p && sudo chmod 777 /etc/clearpath/ @@ -235,7 +233,7 @@ sudo mkdir /etc/clearpath/ -p && sudo chmod 777 /etc/clearpath/ The `robot.yaml` file defines the configuration of the robot including the robot model, all supported accessories and any extra URDF elements or ROS parameters. Information about the Robot YAML -is found in the [Robot Configuration](../config/yaml.mdx) section. This YAML is used to generate the launch, +is found in the [Robot Configuration](../config/yaml/overview.mdx) section. This YAML is used to generate the launch, URDF and ROS parameter files during runtime. Create your `robot.yaml` file and then copy it into `/etc/clearpath/`. @@ -270,6 +268,5 @@ source /etc/clearpath/setup.bash Certain sensors may require additional setup, please review the [Accessories](../../robots/accessories/accessories.mdx) pages for any additional instructions for the sensors that you are using. For example, the Blackfly camera has additional instructions listed under [software bringup](../../robots/accessories/sensors/cameras/flir_blackfly_s#software-bringup). -

- \ No newline at end of file + diff --git a/docs_versioned_docs/version-ros2humble/ros/installation/upgrading.mdx b/docs_versioned_docs/version-ros2humble/ros/installation/upgrading.mdx index 888b61f8..c59601a0 100644 --- a/docs_versioned_docs/version-ros2humble/ros/installation/upgrading.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/installation/upgrading.mdx @@ -124,19 +124,19 @@ If this is not the case, it is the responsibility of the user to ensure that any other users’ home folders is backed up correctly. A common example of this might be if you have created customized URDF files to be loaded via environment -variables (e.g. `JACKAL_URDF_EXTRAS`) and have stored them outside any of the folders specified above, you must +variables (such as, `JACKAL_URDF_EXTRAS` for the Jackal) and have stored them outside any of the folders specified above, you must back these up yourself; `backup.sh` will not do this for you. ## Converting Environment Variables to Clearpath Config The environment variables used to define your robot in ROS 1 and ROS 2 Foxy can be converted to the `robot.yaml` format to maintain the same robot description when you upgrade to ROS 2 Humble. -Below are some common examples. Visit the [robot.yaml documentation](../config/yaml.mdx) for more details. +Below are some common examples. Visit the [robot.yaml documentation](../config/yaml/overview.mdx) for more details. ### Attachments Each platform has platform-specific attachments (formerly decorations) such as bumpers and top plates. These -now reside under the [platform](../config/yaml.mdx#platform) section of the `robot.yaml` file. +now reside under the [platform](../config/yaml/platform.mdx) section of the `robot.yaml` file. @@ -225,7 +236,7 @@ platform: ### Sensors -Sensors can be added under the [sensors](../config/yaml.mdx#sensors) key in the `robot.yaml` file. There is no longer +Sensors can be added under the [sensors](../config/yaml/sensors.mdx) key in the `robot.yaml` file. There is no longer a concept of primary, secondary, etc. sensors. Rather, sensors are enumerated in the order that they are added to the config. Sensor topics will be automatically set to match the [Clearpath API](../api/sensors_api.mdx#2d-lidar-topics). @@ -299,7 +310,7 @@ sensors: default > -Environment variables: +Environment variables: ``` # Primary Laser @@ -429,7 +440,7 @@ sensors: default > -Environment variables: +Environment variables: ``` export JACKAL_LASER_3D=1 @@ -709,4 +720,4 @@ sensors: ## Next steps Once everything is backed up and you have created your robot.yaml file, the next step is to go through -the [robot install instructions](robot.mdx). This will involve installing the new OS. \ No newline at end of file +the [robot install instructions](robot.mdx). This will involve installing the new OS. 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 ceee4f10..19c859a7 100644 --- a/docs_versioned_docs/version-ros2humble/ros/tutorials/simulator/install.mdx +++ b/docs_versioned_docs/version-ros2humble/ros/tutorials/simulator/install.mdx @@ -63,6 +63,6 @@ colcon build --symlink-install :::note -Make sure to add the workspace to your [robot.yaml](../../config/yaml.mdx#system) file. +Make sure to add the workspace to your [robot.yaml](../../config/yaml/system.mdx) file. :::