Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ dependencies {
compile 'io.reactivex:rxjavafx:1.1.0'
compile 'javax.inject:javax.inject:1'
compile 'net.java.jinput:jinput:2.0.6'
compile 'org.cfg4j:cfg4j-core:4.4.0'
compile 'org.jetbrains.kotlin:kotlin-stdlib:1.0.6'
compile 'org.slf4j:slf4j-nop:1.7.24'
compile 'org.tinylog:tinylog:1.2'
compile 'rxbroadcast:rxbroadcast:1.1.0'
testCompile 'junit:junit:4.12'
Expand Down
11 changes: 10 additions & 1 deletion playbooks/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,25 @@
become: yes
become_method: sudo
gather_facts: no
vars:
version: "9.0.0"
tasks:
- name: Make opt directory
file: path=/opt state=directory mode=0755
- name: Copy Control Software
unarchive: src=../build/distributions/eer-9.0.0.zip dest=/opt
unarchive: src=../build/distributions/eer-{{ version }}.zip dest=/opt
- name: Copy Config Files
template: src=files/{{ item }} dest=/opt/eer-{{ version }}/{{ item }} mode=755 owner=pi group=pi
with_items:
- config.yml
- defaultConfig.yml

- hosts: rasprime:picamera
become: yes
become_method: sudo
gather_facts: no
vars:
version: "9.0.0"
tasks:
- name: Copy unit file for systemd
template: src=files/etc/systemd/system/eer.service dest=/etc/systemd/system/eer.service mode=644
Expand Down
2 changes: 1 addition & 1 deletion playbooks/files/Launcher.desktop
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[Desktop Entry]
Version=9.0.0
Name=Control Software
Exec=/opt/eer-9.0.0/bin/topside
Exec=/opt/eer-9.0.0/bin/topside --default /opt/eer-9.0.0/defaultConfig.yml --config /opt/eer-9.0.0/config.yml
Path=/opt/eer-9.0.0
Terminal=false
Type=Application
Expand Down
17 changes: 17 additions & 0 deletions playbooks/files/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
rov:
portAftChannel: 15
starboardAftChannel: 12
portForeChannel: 16
starboardForeChannel: 13
portVertChannel: 17
starboardVertChannel: 14
cameraAMotorChannel: 18
cameraBMotorChannel: 19
toolingMotorChannel: 22
lightChannel: 23
voltageSensor05VChannel: 8
voltageSensor12VChannel: 7
voltageSensor48VChannel: 6
currentSensor05VChannel: 11
currentSensor12VChannel: 10
currentSensor48VChannel: 9
48 changes: 48 additions & 0 deletions playbooks/files/defaultConfig.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
launch:
broadcast: 192.168.88.255
defaultBroadcastPort: 10003
serialPort: /dev/ttyACM0
baudRate: 115200
topsides:
pilotPanelName: Pilot Panel
pilotPanelPort: /dev/ttyACM0
profilePref: profiles
mpv: 192.168.88.2
rov:
maxHeartbeatGap: 5
cpuPollInterval: 1
sensorPollInterval: 10
sleepDuration: 100
maestroDeviceNumber: 0x01
portAftChannel: 15
starboardAftChannel: 12
portForeChannel: 16
starboardForeChannel: 13
portVertChannel: 17
starboardVertChannel: 14
cameraAMotorChannel: 18
cameraBMotorChannel: 19
toolingMotorChannel: 22
lightChannel: 23
voltageSensor05VChannel: 8
voltageSensor12VChannel: 7
voltageSensor48VChannel: 6
currentSensor05VChannel: 11
currentSensor12VChannel: 10
currentSensor48VChannel: 9
altImuSa0High: false
i2cBus: 1
videoPlayer:
cameraAVideoPort: 12345
cameraBVideoPort: 12346
joystick:
cameraAMotorForwardButton: 4
cameraAMotorReverseButton: 6
cameraBMotorForwardButton: 5
cameraBMotorReverseButton: 3
toolingMotorForwardButton: 11
toolingMotorReverseButton: 12
motionReverseButton: 2
cameraAVideoFlipButton: 8
cameraBVideoFlipButton: 7
motorRotationSpeed: 0.3f
6 changes: 1 addition & 5 deletions playbooks/files/etc/systemd/system/eer.service
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@ Description=Eastern Edge Robotics Control Software
User={{ ansible_user }}
TimeoutStartSec=0
Restart=on-failure
{% if inventory_hostname in groups['rasprime'] %}
ExecStart=/opt/eer-9.0.0/bin/{{ entry_point }} --broadcast 192.168.88.255 --serial-port /dev/ttyACM0 --baud-rate 115200
{% else %}
ExecStart=/opt/eer-9.0.0/bin/{{ entry_point }} --broadcast 192.168.88.255
{% endif %}
ExecStart=/opt/eer-{{ version }}/bin/{{ entry_point }} --default /opt/eer-{{ version }}/defaultConfig.yml --config /opt/eer-{{ version }}/config.yml

[Install]
WantedBy=multi-user.target
29 changes: 22 additions & 7 deletions src/main/java/com/easternedgerobotics/rov/PicameraA.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.easternedgerobotics.rov;

import com.easternedgerobotics.rov.config.Config;
import com.easternedgerobotics.rov.config.LaunchConfig;
import com.easternedgerobotics.rov.event.BroadcastEventPublisher;
import com.easternedgerobotics.rov.event.EventPublisher;
import com.easternedgerobotics.rov.value.VideoFlipValueA;
Expand Down Expand Up @@ -56,23 +58,36 @@ private void initCameraA() {
public static void main(final String[] args) throws InterruptedException, SocketException, UnknownHostException {
final String app = "picamera-a";
final HelpFormatter formatter = new HelpFormatter();
final Option broadcast = Option.builder("b")
.longOpt("broadcast")
final Option defaultConfig = Option.builder("d")
.longOpt("default")
.hasArg()
.argName("ADDRESS")
.desc("use ADDRESS to broadcast messages")
.argName("DEFAULT")
.desc("name of the default config file")
.required()
.build();
final Option config = Option.builder("c")
.longOpt("config")
.hasArg()
.argName("CONFIG")
.desc("name of the overriding config file")
.required()
.build();

final Options options = new Options();
options.addOption(broadcast);
options.addOption(defaultConfig);
options.addOption(config);

try {
final CommandLineParser parser = new DefaultParser();
final CommandLine arguments = parser.parse(options, args);

final InetAddress broadcastAddress = InetAddress.getByName(arguments.getOptionValue("b"));
final int broadcastPort = BroadcastEventPublisher.DEFAULT_BROADCAST_PORT;
final LaunchConfig launchConfig = new Config(
arguments.getOptionValue("d"),
arguments.getOptionValue("c")
).getConfig("launch", LaunchConfig.class);

final InetAddress broadcastAddress = InetAddress.getByName(launchConfig.broadcast());
final int broadcastPort = launchConfig.defaultBroadcastPort();
final DatagramSocket socket = new DatagramSocket(broadcastPort);
final EventPublisher eventPublisher = new BroadcastEventPublisher(new UdpBroadcast<>(
socket, broadcastAddress, broadcastPort, new BasicOrder<>()));
Expand Down
29 changes: 22 additions & 7 deletions src/main/java/com/easternedgerobotics/rov/PicameraB.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.easternedgerobotics.rov;

import com.easternedgerobotics.rov.config.Config;
import com.easternedgerobotics.rov.config.LaunchConfig;
import com.easternedgerobotics.rov.event.BroadcastEventPublisher;
import com.easternedgerobotics.rov.event.EventPublisher;
import com.easternedgerobotics.rov.value.VideoFlipValueB;
Expand Down Expand Up @@ -56,23 +58,36 @@ private void initCameraB() {
public static void main(final String[] args) throws InterruptedException, SocketException, UnknownHostException {
final String app = "picamera-b";
final HelpFormatter formatter = new HelpFormatter();
final Option broadcast = Option.builder("b")
.longOpt("broadcast")
final Option defaultConfig = Option.builder("d")
.longOpt("default")
.hasArg()
.argName("ADDRESS")
.desc("use ADDRESS to broadcast messages")
.argName("DEFAULT")
.desc("name of the default config file")
.required()
.build();
final Option config = Option.builder("c")
.longOpt("config")
.hasArg()
.argName("CONFIG")
.desc("name of the overriding config file")
.required()
.build();

final Options options = new Options();
options.addOption(broadcast);
options.addOption(defaultConfig);
options.addOption(config);

try {
final CommandLineParser parser = new DefaultParser();
final CommandLine arguments = parser.parse(options, args);

final InetAddress broadcastAddress = InetAddress.getByName(arguments.getOptionValue("b"));
final int broadcastPort = BroadcastEventPublisher.DEFAULT_BROADCAST_PORT;
final LaunchConfig launchConfig = new Config(
arguments.getOptionValue("d"),
arguments.getOptionValue("c")
).getConfig("piCameraBLaunch", LaunchConfig.class);

final InetAddress broadcastAddress = InetAddress.getByName(launchConfig.broadcast());
final int broadcastPort = launchConfig.defaultBroadcastPort();
final DatagramSocket socket = new DatagramSocket(broadcastPort);
final EventPublisher eventPublisher = new BroadcastEventPublisher(new UdpBroadcast<>(
socket, broadcastAddress, broadcastPort, new BasicOrder<>()));
Expand Down
Loading