# Copyright 2021-present Open Networking Foundation
#
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

images:
  tags:
    rosCore: docker.io/drone-ros:0.0.1-debug
    droneNetListener: docker.io/ros:melodic
    depCheck: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
  pullPolicy: IfNotPresent

nodeSelector:
  enabled: false
  rosCore:
    label: drone-ros-core
    value: enabled
  gcs:
    label: drone-ros-core
    value: enabled
  console:
    label: drone-ros-core
    value: enabled

resources:
  enabled: false

config:
  rosCore:
    debug: false
    launchFiles:
      core.launch: |
        <launch>
          <arg name="server" default="mocap.local"/>
          <node pkg="vrpn_client_ros" type="vrpn_client_node" name="vrpn_client_node" output="screen">
            <rosparam subst_value="true">
              server: $(arg server)
              port: 3883
              update_frequency: 100.0
              frame_id: world
              use_server_time: false
              broadcast_tf: true
              refresh_tracker_frequency: 1.0
            </rosparam>
            <remap from="/vrpn_client_node/drone1/pose" to="drone1/mavros/vision_pose/pose" />
            <remap from="/vrpn_client_node/drone2/pose" to="drone2/mavros/vision_pose/pose" />
            <remap from="/vrpn_client_node/drone3/pose" to="drone3/mavros/vision_pose/pose" />
            </node>
        </launch>
  gcs:
    debug: false
    launchFiles:
      gcs.launch: |
        <launch>
           <arg name="traj_drone1" default="$(find bridge_px4)/trajectories/ysmrr1.csv"/>
           <arg name="traj_drone2" default="$(find bridge_px4)/trajectories/ysmrr2.csv"/>
           <arg name="traj_drone3" default="$(find bridge_px4)/trajectories/line.csv"/>
           <group ns="drone1">
                <node pkg="bridge_px4" type="sp_pos_t_node" name ="sp_pos_t_node" output="screen">
                   <param name="traj_id" value="$(arg traj_drone1)"/>
                </node>
           </group>
           <group ns="drone2">
                <node pkg="bridge_px4" type="sp_pos_t_node" name ="sp_pos_t_node" output="screen">
                   <param name="traj_id" value="$(arg traj_drone2)"/>
                </node>
           </group>
           <group ns="drone3">
                <node pkg="bridge_px4" type="sp_pos_t_node" name ="sp_pos_t_node" output="screen">
                   <param name="traj_id" value="$(arg traj_drone3)"/>
                </node>
           </group>
        </launch>
    trajectoryFiles:
      square1.csv: |
        2.00,3.00,6.00,9.00,12.00,15.00,18.00,21.00,24.00,27.00
        1.00,1.00,1.00,1.00,3.00,3.00,3.00,3.00,1.00,1.00
        -1.00,-1.00,1.00,1.00,1.00,1.00,-1.00,-1.00,-1.00,-1.00
        1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00
        0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00
      square2.csv: |
        2.00,3.00,6.00,9.00,12.00,15.00,18.00,21.00,24.00,27.00
        -1.00,-1.00,-1.00,-1.00,-3.00,-3.00,-3.00,-3.00,-1.00,-1.00
        1.00,1.00,-1.00,-1.00,-1.00,-1.00,1.00,1.00,1.00,1.00
        1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00
        0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00
      ysmrr1.csv: |
        2.00,3.00,4.00,5.00,6.00,6.50,7.00,7.50,8.00,8.50,9.00,9.50,10.00,15.00,20.00
        1.00,1.00,3.00,3.00,3.00,3.00,3.00,3.00,3.00,3.00,3.00,3.00,3.00,1.00,1.00
        0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00
        1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50
        0.00,0.00,0.00,0.00,0.00,0.40,0.80,1.20,1.60,2.00,2.40,2.80,3.20,3.20,3.20
      ysmrr2.csv: |
        2.00,3.00,4.00,5.00,6.00,6.50,7.00,7.50,8.00,8.50,9.00,9.50,10.00,15.00,20.00
        -1.00,-1.00,-3.00,-3.00,-3.00,-3.00,-3.00,-3.00,-3.00,-3.00,-3.00,-3.00,-3.00,-1.00,-1.00
        0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00
        1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50,1.50
        0.00,0.00,0.00,0.00,0.00,0.40,0.80,1.20,1.60,2.00,2.40,2.80,3.20,3.20,3.20
      line.csv: |
        3.00,6.00,9.00
        0.00,1.00,1.00
        0.00,0.00,0.00
        1.00,1.00,1.00
        0.00,0.00,0.00
      orbit.csv: |
        3.00,7.00,8.10,9.20,10.30,11.40,12.50,13.60,14.70,15.80,16.90,18.00,21.00
        0.00,-0.50,-0.21,0.54,1.46,2.21,2.50,2.21,1.46,0.54,-0.21,-0.50,-0.50
        0.00,1.00,0.12,-0.43,-0.43,0.12,1.00,1.88,2.43,2.43,1.88,1.00,1.00
        1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00
        0.00,0.00,0.63,1.26,1.88,2.51,3.14,3.77,4.40,5.03,5.65,6.28,6.28
  droneNetListener:
    port: 58080

networks:
  hostNetwork: true

coredns:
  deploy: true
  serviceType: ClusterIP
  service:
    clusterIP: 10.67.128.12
  servers:
  - zones:
    - zone: .
    port: 53
    plugins:
    - name: errors
    - name: health
      configBlock: |-
        lameduck 5s
    - name: ready
    - name: forward
      parameters: . 10.67.128.10
    - name: cache
      parameters: 30
    - name: loop
    - name: reload
    - name: loadbalance
  - zones:
      - zone: local
    port: 53
    plugins:
    - name: errors
    - name: health
      configBlock: |-
        lameduck 5s
    - name: ready
    - name: hosts
      configBlock: |-
        10.250.255.1 drone1.local
        10.250.255.2 drone2.local
        10.250.255.3 drone3.local
        10.64.5.35 mocap.local
        10.64.4.139 node2.local