Skip to content

vrx_2023 wamv_compliance

M1chaelM edited this page Jul 28, 2023 · 19 revisions

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). The image below shows the position of the bounding boxes: vrx_component_bounding_boxes
vrx_component_bounding_boxes
  1. All thrusters must be contained within one of the thruster bounding boxes (details here). The image below shows the position of the bounding boxes: vrx_thruster_bounding_boxes

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

  3. 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.

Please note

  • The script generate_wamv.launch 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.

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.

Examples of Non-compliant Configurations

If given a thruster_config.yaml' or component_config.yaml' describing a non-compliant WAM-V, the generate_wamv.py script will display a warning. For example:

[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 sucessfully generated. File location: /home/caguero/my_wamv/wamv_target_2.urdf
[INFO] [generate_wamv.py-1]: process has finished cleanly [pid 3067212]

The message above was generated by running the following command using the example component and thruster config 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

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

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
Clone this wiki locally