Skip to content

vrx_2023 wamv_compliance

McCarrin, Michael (CIV) edited this page Jul 25, 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: Sensor_Bounding_Boxes.png

  2. All thrusters must be contained within one of the thruster bounding boxes (details here). The image below shows the position of the bounding boxes: Thruster_Bounding_Boxes.png

  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. Additionally, 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

Supported thrusters and components can be seen in allowed thrusters and allowed components (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.

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"

Compliance

Next, let's see how compliance works.

  • Scroll down this tutorial and copy the contents of Example Non-compliant Yaml Thruster Configuration File. Next, paste those contents into the example_thruster_config.yaml file, replacing all previous text. Note the addition of the third thruster in a non-compliant position.

       $ gedit ~/my_wamv/example_thruster_config.yaml
    
  • Scroll down this tutorial and copy the contents of Example Non-compliant Yaml Component Configuration File. Next, paste those contents into the component_config.yaml file, replacing all previous text. Note the addition of 5 cameras.

       $ gedit ~/my_wamv/example_component_config.yaml
    
  • Next, we need to run generate_wamv.launch again to use these new yamls files to create a new urdf file.

       $ 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
    
  • See the following messages in the terminal

[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 URDF file is still created, but these error messages show why your configuration is not compliant. There are too many cameras and two thrusters that are too close together (more details about this in the Compliance section).

Next, launch the example world with your WAM-V:

$ ros2 launch vrx_gz competition.launch.py world:=sydney_regatta urdf:=`pwd`/wamv_target_2.urdf

Look at the WAM-V in the Sydney Regatta Centre. It should have your new thruster and component configurations. If everything went correctly and you used the example thruster and component configuration yaml files below, you should see the desired components and thrusters. Please note the multiple cameras.

Screenshot from 2022-12-22 22-38-51

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