vrx_2023 wamv_compliance - osrf/vrx GitHub Wiki

WAM-V Configuration Compliance:

All WAM-V configuration files submitted as part of VRX competition solutions must adhere to the following rules:

  1. All components must be contained within one of the component bounding boxes (details here):
    vrx_component_bounding_boxes

  2. All thrusters must be contained within one of the thruster bounding boxes (details here): vrx_thruster_bounding_boxes

  3. The numbers of each component and thruster in the configuration must be within the limits defined here for components and here for thrusters.

  4. Finally, there can only be one thruster in each bounding box. This is to prevent stacking thrusters together in one location, which is physically infeasible.

Supported Thrusters and Components

A list of all supported thrusters and components is given in the allowed thrusters and allowed components files (currently we have only one thruster type).

Parameters for Components and Thrusters and Components

A number of parameters are available to help configure components and thrusters. These include name, prefix, position, orientation, x, y, z, R, P, Y, post_Y, depending on the component or thruster.

  • You can view the parameters for components here
  • and the parameters for thrusters here.

Detecting Non-compliant Configurations

  • The script generate_wamv.launch.py will print error messages if it is called on non-compliant configuration YAML files.
  • The URDF file will still be created and be able to be used as usual.
  • However, it is not a valid configuration for a VRX competition.

Detecting Non-compliant Configurations:

Below is some example output produced by generate_wamv.launch.py when run on non-compliant configuration files:

[INFO] [launch]: All log files can be found below /home/caguero/.ros/log/2022-12-22-22-35-39-966859-cold-3067211
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [generate_wamv.py-1]: process started with pid [3067212]
[generate_wamv.py-1] [INFO] [1671744940.180974378] [configure_wamv]: 
[generate_wamv.py-1] Using /home/caguero/my_wamv/example_thruster_config.yaml as the thruster configuration yaml file
[generate_wamv.py-1] 
[generate_wamv.py-1] [INFO] [1671744940.181217251] [configure_wamv]: 
[generate_wamv.py-1] Trying to open /home/caguero/my_wamv/example_thruster_config.xacro 
[generate_wamv.py-1] 
[generate_wamv.py-1] [ERROR] [1671744940.184488473] [compliance]: engine second_right is out of bounds
[generate_wamv.py-1] [ERROR] [1671744940.184698986] [compliance]: engine second_right is at xyz=(-2.373776, -1.027135, 0.318237), it must fit in at least one of the following boxes with remaining space:
[generate_wamv.py-1] [ERROR] [1671744940.184906448] [compliance]:   <Box name:thruster_compliance_port_aft x:[-1.75, -2.75] y:[1.5,0.5] z:[0.6,-0.6]                remaining_space:0>
[generate_wamv.py-1] [ERROR] [1671744940.185110821] [compliance]:   <Box name:thruster_compliance_star_aft x:[-1.75, -2.75] y:[-0.5,-1.5] z:[0.6,-0.6]                remaining_space:0>
[generate_wamv.py-1] [ERROR] [1671744940.185323194] [compliance]:   <Box name:thruster_compliance_port_for x:[1.75, 0.75] y:[1.5,0.5] z:[0.6,-0.6]                remaining_space:1>
[generate_wamv.py-1] [ERROR] [1671744940.185535786] [compliance]:   <Box name:thruster_compliance_star_for x:[1.75, 0.75] y:[-0.5,-1.5] z:[0.6,-0.6]                remaining_space:1>
[generate_wamv.py-1] [ERROR] [1671744940.185748079] [compliance]:   <Box name:thruster_compliance_middle x:[1.5, -1.0] y:[0.5,-0.5] z:[0.6,-0.6]                remaining_space:1>
[generate_wamv.py-1] [INFO] [1671744940.186929714] [configure_wamv]: 
[generate_wamv.py-1] Using /home/caguero/my_wamv/example_component_config.yaml as the component configuration yaml file
[generate_wamv.py-1] 
[generate_wamv.py-1] [ERROR] [1671744940.191308478] [compliance]: Too many wamv_camera requested
[generate_wamv.py-1] [ERROR] [1671744940.191511711] [compliance]:   maximum of 3 wamv_camera allowed
[generate_wamv.py-1] [ERROR] [1671744940.370982269] [configure_wamv]: 
[generate_wamv.py-1] This component/thruster configuration is NOT compliant with the (current) VRX constraints. A urdf file will be created, but please note that the above errors must be fixed for this to be a valid configuration for the VRX competition.
[generate_wamv.py-1] 
[generate_wamv.py-1] WAM-V urdf file successfully generated. File location: /home/caguero/my_wamv/wamv_target_2.urdf
[INFO] [generate_wamv.py-1]: process has finished cleanly [pid 3067212]

Note that the URDF file is still created, but these error messages show why your configuration is not compliant.

To reproduce the example above, run the following command using the example non-compliant configuration files given below:

ros2 launch vrx_gazebo generate_wamv.launch.py component_yaml:=`pwd`/example_component_config.yaml thruster_yaml:=`pwd`/example_thruster_config.yaml wamv_target:=`pwd`/wamv_target_2.urdf wamv_locked:=False

Example Non-compliant Yaml Thruster Configuration File

engine:
  - prefix: "left"
    position: "-2.373776 1.027135 0.318237"
    orientation: "0.0 0.0 0.0"
  - prefix: "right"
    position: "-2.373776 -1.027135 0.318237"
    orientation: "0.0 0.0 0.0"

  # Adding new thruster in non-compliant position
  - prefix: "second_right"
    position: "-2.373776 -1.027135 0.318237"
    orientation: "0.0 0.0 0.0"

Example Non-compliant Yaml Component Configuration File

# Too many cameras
wamv_camera:
    - name: front_left_camera
      x: 0.75
      y: 0.1
      P: ${radians(15)}
    - name: front_right_camera
      x: 0.75
      y: -0.1
      P: ${radians(15)}
    - name: front_far_left_camera
      x: 0.75
      y: 0.3
      P: ${radians(15)}
    - name: front_far_right_camera
      x: 0.75
      y: -0.3
      P: ${radians(15)}
    - name: middle_left_camera
      x: 0.6
      y: 0.4
      P: ${radians(15)}
      Y: ${radians(90)}
      post_Y: ${radians(90)}
Back: WAM-V Compliance Top: VRX Tutorials Next: Validation
⚠️ **GitHub.com Fallback** ⚠️