Skip to content

Latest commit

 

History

History
219 lines (157 loc) · 6.41 KB

README.md

File metadata and controls

219 lines (157 loc) · 6.41 KB

Platform-Seahorse

Seahorse is Chalmers revere lab 5m aluminum boat with server box and sensor mounting wings in the bow and aft.

The seahorse sensor platform consisting of:

  • A Navico radar
  • An Ouster OS1 lidar
  • 2x Ouster OS2 lidar
  • 8x Axis cameras
  • 2x RTL-SDR receivers connected to a VHF antenna
  • 1x WindObserver 65

The sensors are eventually interfaced to a crowsnest data bus:

  • Navico radar -> OpenDLV/libcluon -> crowsnest
  • Ouster lidar -> crowsnest
  • Axis cameras -> crowsnest
  • RTL-SDR receivers -> crowsnest
  • WindObserver 65 -> crowsnest

Logging HW onboard:

  • APU (seahorse-0)
  • Server 1 (seahorse-1)
  • Server 2 (seahorse-2)

Remote access

Seahorse can be accessed remotely by RISE when the boat is connected to the Revere lab network by our Sealog-3. The Seahorse has 4G network when outside the lab so the platform will stay connected but SSH into Seahorse will not be possible with current setup.

  1. SSH into sealog-3 ssh sealog-3
  2. SSH from selog-3 into seahorse-0 by ssh revere@192.168.0.89
  3. From seahorse-0 both seahorse-1 and seahorse-2 is accessible:
    • seahorse-1. ssh revere@10.10.0.2
    • seahorse-2: ssh revere@10.10.1.2

Network setup

Connected as:

Seahorse-0 (APU):

  • Ethernet port 1 <-> Internet
  • Ethernet port 2 <-> Not in use
  • Ethernet port 3 <-> seahorse-2
  • Ethernet port 4 <-> seahorse-1
  • SERIAL<-> IMU

Seahorse-1:

  • LIDAR OS2 BOW: (Server) 10.10.42.1 <--> (Sensor) 10.10.42.2
  • RADAR: Ping address to Multicast (Kinda a )
  • GNSS (ANavS): (Server) enp68s0f1 10.10.30.1 <--> 10.10.30.2 (Multicast 239.192.0.3 60003)
  • USB: "/dev/ttyUSB0" <-- WindObserver 65
  • USB ?: SDR
  • USB ?: SDR

Seahorse-1:

  • LIDAR OS2 STERN: (Server) 10.10.41.1 <--> (Sensor) 10.10.41.2
  • LIDAR OS1 STERN: (Server) 10.10.40.1 <--> (Sensor) 10.10.40.2
  • ANAVS: 239.192.0.3 port: 60003 UDP

Not updated bellow

Configuration:

  • netplan config in netplan-platform-landkrabba.yaml
    • Copy file to /etc/netplan/
    • Apply using sudo netplan apply
  • Axis F44 hub assumed to be assigned the static IP 10.10.10.2
  • Ouster Lidar assumed to be assigned the static IP 10.10.20.100 (Note: For setting a static IP, refer to this)

Checks:

  • ethtool enp1s0 should show connected
  • ethtool enp2s0 should show connected
  • ethtool enp3s0 should show connected
  • ping 10.10.10.2 should work
  • ip route show should show a 236.6.7.0/24 route to enp1s0
  • ip route show should show a 10.10.10.2 route to enp3s0
  • sudo arp-scan --interface=enp2s0 10.10.20.0/24 should output:
    10.10.20.100    <MAC address>       Ouster
    
  • ping 10.10.20.100 should work

Configuring Ouster hardware

Using the TCP API:

nc 10.10.20.100 7501
set_config_param <param_name> <value>
.
.
.
reinit
save_config_params

The final configuration of the sensor for this setup is as follows:

{
  "udp_ip": "10.10.20.1",
  "udp_dest": "10.10.20.1",
  "udp_port_lidar": 7502,
  "udp_port_imu": 7503,
  "timestamp_mode": "TIME_FROM_INTERNAL_OSC",
  "sync_pulse_in_polarity": "ACTIVE_HIGH",
  "nmea_in_polarity": "ACTIVE_HIGH",
  "nmea_ignore_valid_char": 0,
  "nmea_baud_rate": "BAUD_9600",
  "nmea_leap_seconds": 0,
  "multipurpose_io_mode": "OFF",
  "sync_pulse_out_polarity": "ACTIVE_HIGH",
  "sync_pulse_out_frequency": 1,
  "sync_pulse_out_angle": 360,
  "sync_pulse_out_pulse_width": 10,
  "auto_start_flag": 1,
  "operating_mode": "NORMAL",
  "lidar_mode": "512x10",
  "azimuth_window": [0, 360000],
  "signal_multiplier": 1,
  "phase_lock_enable": false,
  "phase_lock_offset": 0
}

Note that the Ouster SDK does not yet support multicast (ouster-lidar/ouster-sdk#278) and as such only a single microservice may interface with the Ouster at any given time. As such, only one of the two microservices defined in docker-compose.lidar.yml can be active at any given time depending on the use case.

TODO (if time allows):

Live stream/logging software setup

All of the below assumes a crowsnest setup is already up and running according to the base setup.

Clone this repo to (suggestion): /opt/platform-landkrabba and run as follows:

Sensor interfaces:

  • Only AIS receiver: docker-compose -f docker-compose.ais.yml up -d
  • Only cameras: docker-compose -f docker-compose.cameras.yml up -d
  • Only Lidar: docker-compose -f docker-compose.lidar.yml up -d
  • Only Radar: docker-compose -f docker-compose.radar.yml up -d
  • Only Wind sensor: docker-compose -f docker-compose.nmea0183.yml up -d

Bridges towards Maritimeweb:

  • Only mqtt bridge: docker-compose -f docker-compose.bridge.yml up -d
  • Only webrtc bridge: docker-compose -f docker-compose.webrtc.yml up -d

To handle multiple services simultaneously, use the following syntax:

docker-compose -f docker-compose.<any>.yml -f docker-compose.<any>.yml -f docker-compose.<any>.yml up -d

Logging to disk (using opendlv):

docker-compose -f docker-compose.logging.yml up -d

The logs are rotated using logrotate according to the config found in logrotate.conf. By default, all data will be put in /opt/recordings/. This is NOT recommended since it may fill the OS disk. If you plan on continously log.

To run bandwidth trials

The iftop utility has been used to run some rudimentary bandwidth trials for the connected sensors, such as:

sudo iftop -i <interface> # Interactive output

or

sudo iftop -t -s 60 -i <interface>  # Running for 60 seconds and then outputting textual output only

Note: The above should be issued with the sensors running!

4G connection bandwidth has been trialed with speedtest-cli, such as:

speedtest-cli

Good to know commands

mosquitto_sub -t '#' -F '%U %t %l'

Reinitzilise LIDARs or config

 seahorse-1

nc 10.10.42.2 7501
get_config_param active
set_udp_dest_auto
reinitialize

SOCAT

socat -u UDP4-RECV:60003,reuseaddr STDOUT

239.192.0.3