@@ -215,7 +249,7 @@
System
-
+
Mobility
diff --git a/display/scripts/globals.js b/display/scripts/globals.js
index a5d5cdae..dffd8daa 100644
--- a/display/scripts/globals.js
+++ b/display/scripts/globals.js
@@ -16,7 +16,8 @@ var deviceStates = {};
var logs = [];
var iterator = 0;
var iterators = [];
-var debug = false;
+var development_mode = false;
+var current_preset = "ERROR_NO_PRESET_AUTODETECTED";
var addressKeys = {
"autonav_serial_imu": {
@@ -24,12 +25,26 @@ var addressKeys = {
"imu_read_rate": "float"
},
- "autonav_serial_camera": {
- "internal_title": "[Serial] Camera",
+ "autonav_serial_camera_left": {
+ "internal_title": "[Serial] Left Camera",
"refresh_rate": "int",
"output_width": "int",
"output_height": "int",
- "camera_index": "int"
+ "scan_rate": "int",
+ "flip_horizontal": "bool",
+ "flip_vertical": "bool",
+ "rotate_clockwise": "bool"
+ },
+
+ "autonav_serial_camera_right": {
+ "internal_title": "[Serial] Right Camera",
+ "refresh_rate": "int",
+ "output_width": "int",
+ "output_height": "int",
+ "scan_rate": "int",
+ "flip_horizontal": "bool",
+ "flip_vertical": "bool",
+ "rotate_clockwise": "bool"
},
"autonav_vision_transformer": {
@@ -42,15 +57,34 @@ var addressKeys = {
"upper_val": "int",
"blur_weight": "int",
"blur_iterations": "int",
- "rod_offset": "int",
- "map_res": "int"
+ "map_res": "int",
+ "left_bottomleft": "point.int",
+ "left_bottomright": "point.int",
+ "left_topleft": "point.int",
+ "left_topright": "point.int",
+ "right_bottomleft": "point.int",
+ "right_bottomright": "point.int",
+ "right_topleft": "point.int",
+ "right_topright": "point.int",
+ "disable_blur": "bool",
+ "disable_hsv": "bool",
+ "disable_perspective_transform": "bool",
+ "disable_region_of_disinterest": "bool",
+ "parallelogram_left": "parallelogram.int",
+ "parallelogram_right": "parallelogram.int",
+ "top_width": "float",
+ "bottom_width": "float",
+ "offset": "float"
},
"autonav_vision_expandifier": {
"internal_title": "[Vision] Expandifier",
- "horizontal_fov": "int",
+ "horizontal_fov": "float",
"map_res": "int",
- "vertical_fov": "float"
+ "vertical_fov": "float",
+ "max_range": "float",
+ "no_go_percent": "float",
+ "no_go_range": "float",
},
"autonav_filters": {
@@ -58,9 +92,7 @@ var addressKeys = {
"filter_type": {
0: "Deadreckoning",
1: "Particle Filter"
- },
- "degree_offset": "float",
- "seed_heading": "bool",
+ }
},
"autonav_manual_steamcontroller": {
@@ -89,8 +121,13 @@ var addressKeys = {
5: "Misc 4",
6: "Misc 5",
},
+ "calculateWaypointDirection": "bool",
"useOnlyWaypoints": "bool",
"waypointDelay": "float",
+ "vertical_fov": "float",
+ "horizontal_fov": "float",
+ "waypointMaxWeight": "float",
+ "waypointWeight": "float",
},
"autonav_nav_resolver": {
@@ -106,9 +143,23 @@ var addressKeys = {
"autonav_image_combiner": {
"internal_title": "[Image Combiner]",
- "overlap": "int",
"map_res": "int"
- }
+ },
+
+ "autonav_playback": {
+ "internal_title": "[Playback]",
+ "record_imu": "bool",
+ "record_gps": "bool",
+ "record_position": "bool",
+ "record_feedback": "bool",
+ "record_motor_debug": "bool",
+ "record_raw_cameras": "bool",
+ "record_filtered_cameras": "bool",
+ "record_astar": "bool",
+ "record_autonomous": "bool",
+ "record_manual": "bool",
+ "frame_rate": "int"
+ }
}
var conbusDevices = {
diff --git a/display/scripts/main.js b/display/scripts/main.js
index d16495e7..90572df4 100644
--- a/display/scripts/main.js
+++ b/display/scripts/main.js
@@ -24,6 +24,7 @@ $(document).ready(function () {
send({ op: "broadcast" });
send({ op: "get_nodes" });
+ send({ op: "get_presets" });
const waitInterval = setInterval(() => {
if (deviceStates["autonav_serial_can"] != 3) {
@@ -48,19 +49,47 @@ $(document).ready(function () {
$(".connecting").hide();
$("#main").show();
}, 1000);
+
+ setTimeout(() => {
+ if(websocket.readyState == 1)
+ {
+ send({ op: "get_presets" });
+ }
+ }, 3000);
};
websocket.onmessage = function (event) {
const messages = event.data.split("\n");
- for (const message of messages)
- {
+ for (const message of messages) {
const obj = JSON.parse(message);
const { op, topic } = obj;
-
+
if (op == "data") {
onTopicData(topic, obj);
}
-
+
+ if (op == "get_presets_callback") {
+ const presets = obj.presets;
+ const presetElement = $("#dropdown_elements");
+ presetElement.empty();
+ for (const preset of presets) {
+ const dropdownItem = $(`
${preset} `);
+ presetElement.append(dropdownItem);
+
+ dropdownItem.on("click", function () {
+ const preset_name = $(this).children().attr("data-value");
+ send({
+ op: "set_active_preset",
+ preset: preset_name
+ });
+ send({ op: "get_presets" });
+ });
+ }
+
+ current_preset = obj.active_preset;
+ $("#active_preset_value").text(current_preset);
+ }
+
if (op == "get_nodes_callback") {
console.log(obj);
for (let i = 0; i < obj.nodes.length; i++) {
@@ -74,8 +103,7 @@ $(document).ready(function () {
const statemap = obj.states;
if (node in statemap) {
- if (node == "rosbridge_websocket" || node == "rosapi" || node == "scr_core" || node == "rosapi_params")
- {
+ if (node == "rosbridge_websocket" || node == "rosapi" || node == "scr_core" || node == "rosapi_params") {
continue;
}
@@ -89,11 +117,20 @@ $(document).ready(function () {
}
}
- for (const key in obj.configs)
- {
+ for (const key in obj.configs) {
config[key] = obj.configs[key];
}
regenerateConfig();
+
+ // Update system state
+ let system = obj["system"];
+ $("#var_system_state").text(system["state"] == 0 ? "Diabled" : system["state"] == 1 ? "Autonomous" : system["state"] == 2 ? "Manual" : "Shutdown");
+ $("#var_system_mode").text(system["mode"] == 0 ? "Competition" : system["mode"] == 1 ? "Simulation" : "Practice");
+ $("#var_system_mobility").text(system["mobility"] ? "Enabled" : "Disabled");
+
+ // Update some buttons
+ $("#checkbox_system_mobility").prop("checked", system["mobility"]);
+ $("#input_system_state").val(system["state"]);
}
}
};
@@ -116,7 +153,14 @@ $(document).ready(function () {
};
}
- createWebsocket();
+ if (!development_mode) {
+ createWebsocket();
+ } else {
+ $("#connecting-state").text("Updating Data");
+ $(".connecting-input").hide();
+ $(".connecting").hide();
+ $("#main").show();
+ }
var sendQueue = [];
@@ -124,7 +168,6 @@ $(document).ready(function () {
send({
op: "set_system_state",
state: systemState.state,
- estop: systemState.estop,
mobility: systemState.mobility,
});
}
@@ -285,22 +328,19 @@ $(document).ready(function () {
}
if (topic == "/scr/state/system") {
- const { state, mode, mobility, estop } = msg;
+ const { state, mode, mobility } = msg;
$("#var_system_state").text(state == 0 ? "Diabled" : state == 1 ? "Autonomous" : state == 2 ? "Manual" : "Shutdown");
$("#var_system_mode").text(mode == 0 ? "Competition" : mode == 1 ? "Simulation" : "Practice");
$("#var_system_mobility").text(mobility ? "Enabled" : "Disabled");
- $("#var_system_estop").text(estop ? "Yes" : "No");
systemState.state = state;
systemState.mode = mode;
systemState.mobility = mobility;
- systemState.estop = estop;
$("#input_system_state").val(state);
$("#input_system_mode").val(mode);
$("#input_system_mobility").prop("checked", mobility);
- $("#input_system_estop").prop("checked", estop);
return;
}
@@ -318,7 +358,9 @@ $(document).ready(function () {
}
if (topic == "/scr/configuration") {
- console.log(msg);
+ const { device, json } = msg;
+ config[device] = JSON.parse(json);
+ regenerateConfig();
return;
}
@@ -416,6 +458,24 @@ $(document).ready(function () {
return;
}
+ if (topic == "/autonav/cfg_space/raw/image/left_small") {
+ const imgElement = document.getElementById("target_filtered_left");
+ imgElement.src = `data:image/jpeg;base64,${msg.data}`;
+ return;
+ }
+
+ if (topic == "/autonav/cfg_space/raw/image/right_small") {
+ const imgElement = document.getElementById("target_filtered_right");
+ imgElement.src = `data:image/jpeg;base64,${msg.data}`;
+ return;
+ }
+
+ if (topic == "/autonav/cfg_space/combined/image") {
+ const imgElement = document.getElementById("target_combined");
+ imgElement.src = `data:image/jpeg;base64,${msg.data}`;
+ return;
+ }
+
if (topic == "/autonav/cfg_space/raw/debug") {
const imgElement = document.getElementById("target_camera_raw");
imgElement.src = `data:image/jpeg;base64,${msg.data}`;
@@ -423,7 +483,7 @@ $(document).ready(function () {
}
if (topic == "/autonav/debug/astar/image") {
- const imgElement = document.getElementById("target_astar_path");
+ const imgElement = document.getElementById("target_expandified");
imgElement.src = `data:image/jpeg;base64,${msg.data}`;
return;
}
@@ -500,6 +560,7 @@ $(document).ready(function () {
$(".dropdown-menu a").on("click", function () {
const parentDataTarget = $(this).parents(".dropdown").attr("data-target");
+ console.log(parentDataTarget);
if (parentDataTarget == "system_state") {
const id = $(this).attr("data-value");
systemState.state = parseInt(id);
@@ -519,9 +580,29 @@ $(document).ready(function () {
}
});
- $("#checkbox_system_estop").on("change", function () {
- systemState.estop = $(this).is(":checked");
- setSystemState();
+ $("#save_preset_mode").on("click", function () {
+ send({
+ op: "save_preset_mode"
+ });
+ send({ op: "get_presets" });
+ });
+
+ $("#save_preset_as").on("click", function () {
+ const preset_name = $("#preset_save_name").val();
+ send({
+ op: "save_preset_as",
+ preset: preset_name
+ });
+ send({ op: "get_presets" });
+ $("#preset_save_name").val("");
+ });
+
+ $("#delete_preset").on("click", function () {
+ send({
+ op: "delete_preset",
+ preset: current_preset
+ });
+ send({ op: "get_presets" });
});
$("#checkbox_system_mobility").on("change", function () {
@@ -554,40 +635,40 @@ $(document).ready(function () {
function generateElementForConfiguration(data, type, device, text) {
if (type == "bool") {
const checked = data == 1;
-
+
// Create a dropdown
const div = document.createElement("div");
div.classList.add("input-group");
div.classList.add("mb-3");
-
+
const select = document.createElement("select");
select.classList.add("form-select");
select.onchange = function () {
- config[device][text] = select.value;
+ config[device][text] = select.value == 1 ? true : false;
send({
op: "configuration",
device: device,
json: config[device],
});
}
-
+
const optionTrue = document.createElement("option");
optionTrue.value = 1;
optionTrue.innerText = "True";
optionTrue.selected = checked;
-
+
const optionFalse = document.createElement("option");
optionFalse.value = 0;
optionFalse.innerText = "False";
optionFalse.selected = !checked;
-
+
select.appendChild(optionTrue);
select.appendChild(optionFalse);
-
+
const span = document.createElement("span");
span.classList.add("input-group-text");
span.innerText = text;
-
+
div.appendChild(span);
div.appendChild(select);
return div;
@@ -596,7 +677,7 @@ $(document).ready(function () {
const div = document.createElement("div");
div.classList.add("input-group");
div.classList.add("mb-3");
-
+
const input = document.createElement("input");
input.type = "number";
input.classList.add("form-control");
@@ -609,11 +690,11 @@ $(document).ready(function () {
json: config[device],
});
}
-
+
const span = document.createElement("span");
span.classList.add("input-group-text");
span.innerText = text;
-
+
div.appendChild(span);
div.appendChild(input);
return div;
@@ -622,7 +703,7 @@ $(document).ready(function () {
const div = document.createElement("div");
div.classList.add("input-group");
div.classList.add("mb-3");
-
+
const input = document.createElement("input");
input.type = "number";
input.classList.add("form-control");
@@ -635,26 +716,167 @@ $(document).ready(function () {
json: config[device],
});
}
-
+
const span = document.createElement("span");
span.classList.add("input-group-text");
span.innerText = text;
-
+
div.appendChild(span);
div.appendChild(input);
return div;
}
+ else if (type == "point.int") {
+ // x, y point for two integers
+ const div = document.createElement("div");
+ div.classList.add("input-group");
+ div.classList.add("mb-3");
+
+ const inputX = document.createElement("input");
+ inputX.type = "number";
+ inputX.classList.add("form-control");
+ inputX.value = data[0];
+ inputX.onchange = function () {
+ config[device][text][0] = parseInt(inputX.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ }
+
+ const inputY = document.createElement("input");
+ inputY.type = "number";
+ inputY.classList.add("form-control");
+ inputY.value = data[1];
+ inputY.onchange = function () {
+ config[device][text][1] = parseInt(inputY.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ }
+
+ const span = document.createElement("span");
+ span.classList.add("input-group-text");
+ span.innerText = text;
+
+ div.appendChild(span);
+ div.appendChild(inputX);
+ div.appendChild(inputY);
+ return div;
+ }
+ else if (type == "parallelogram.int") {
+ const div = document.createElement("div");
+ div.classList.add("input-group", "mb-3");
+
+ function createCoordinateInput(value, onChangeHandler) {
+ const input = document.createElement("input");
+ input.type = "number";
+ input.classList.add("form-control", "coordinate-input");
+ input.value = value;
+ input.onchange = onChangeHandler;
+ return input;
+ }
+
+ const inputX1 = createCoordinateInput(data[0][0], function () {
+ config[device][text][0][0] = parseInt(inputX1.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputY1 = createCoordinateInput(data[0][1], function () {
+ config[device][text][0][1] = parseInt(inputY1.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputX2 = createCoordinateInput(data[1][0], function () {
+ config[device][text][1][0] = parseInt(inputX2.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputY2 = createCoordinateInput(data[1][1], function () {
+ config[device][text][1][1] = parseInt(inputY2.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputX3 = createCoordinateInput(data[2][0], function () {
+ config[device][text][2][0] = parseInt(inputX3.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputY3 = createCoordinateInput(data[2][1], function () {
+ config[device][text][2][1] = parseInt(inputY3.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputX4 = createCoordinateInput(data[3][0], function () {
+ config[device][text][3][0] = parseInt(inputX4.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const inputY4 = createCoordinateInput(data[3][1], function () {
+ config[device][text][3][1] = parseInt(inputY4.value);
+ send({
+ op: "configuration",
+ device: device,
+ json: config[device],
+ });
+ });
+
+ const span = document.createElement("span");
+ span.classList.add("input-group-text");
+ span.innerText = text;
+
+ div.appendChild(span);
+ div.appendChild(inputX1);
+ div.appendChild(inputY1);
+ div.appendChild(inputX2);
+ div.appendChild(inputY2);
+ div.appendChild(inputX3);
+ div.appendChild(inputY3);
+ div.appendChild(inputX4);
+ div.appendChild(inputY4);
+ return div;
+ }
else {
const options = addressKeys[device][text];
-
+
if (typeof options == "object") {
const index = data;
-
+
// Create a dropdown
const div = document.createElement("div");
div.classList.add("input-group");
div.classList.add("mb-3");
-
+
const select = document.createElement("select");
select.classList.add("form-select");
select.onchange = function () {
@@ -665,7 +887,7 @@ $(document).ready(function () {
json: config[device],
});
}
-
+
for (let i = 0; i < Object.keys(options).length; i++) {
const option = document.createElement("option");
option.value = i;
@@ -673,63 +895,98 @@ $(document).ready(function () {
option.innerText = options[i];
select.appendChild(option);
}
-
+
const span = document.createElement("span");
span.classList.add("input-group-text");
span.innerText = text;
-
+
div.appendChild(span);
div.appendChild(select);
return div;
}
}
}
-
+
const regenerateConfig = () => {
- const configElement = $("#configuration");
+ const configElement = $("#options");
configElement.empty();
-
- for (const deviceId in config) {
- const deviceConfig = config[deviceId];
- if (addressKeys[deviceId] == undefined) {
- console.log(`Unknown Device Config: ${deviceId}`);
- // const alert = $(`
Unknown Device Config: ${deviceId}
`);
- // configElement.append(alert);
+
+ // Sort the keys in each config by their addressKeys
+ for(const deviceId in addressKeys)
+ {
+ if (!(deviceId in config)) {
continue;
}
-
+
const title = addressKeys[deviceId]["internal_title"];
const deviceElement = $(`
`);
deviceElement.append(``);
const deviceBody = $(`
`);
deviceElement.append(deviceBody);
-
- for (const address of Object.keys(deviceConfig).sort()) {
- const data = deviceConfig[address];
- const type = addressKeys[deviceId][address];
- if (type == undefined) {
- const alert = $(`
Unknown Type: ${address}
`);
+
+ const deviceConfig = config[deviceId];
+ for (const address in addressKeys[deviceId]) {
+ if (address == "internal_title") {
+ continue;
+ }
+
+ if (!(address in deviceConfig)) {
+ const alert = $(`
Key not found: ${address}
`);
deviceBody.append(alert);
continue;
}
-
+
+ const data = deviceConfig[address];
+ const type = addressKeys[deviceId][address];
const inputElement = generateElementForConfiguration(data, type, deviceId, address);
deviceBody.append(inputElement);
}
-
- for (const address in addressKeys[deviceId]) {
- if (address in deviceConfig || address == "internal_title") {
- continue;
- }
-
- const alert = $(`
Unknown Configuration Entry: ${address}
`);
- deviceBody.append(alert);
- }
-
+
configElement.append(deviceElement);
}
+
+ // config = outputConfig;
+ // for (const deviceId in config) {
+ // const deviceConfig = config[deviceId];
+ // if (addressKeys[deviceId] == undefined) {
+ // console.log(`Unknown Device Config: ${deviceId}`);
+ // // const alert = $(`
Unknown Device Config: ${deviceId}
`);
+ // // configElement.append(alert);
+ // continue;
+ // }
+
+ // const title = addressKeys[deviceId]["internal_title"];
+ // const deviceElement = $(`
`);
+ // deviceElement.append(``);
+ // const deviceBody = $(`
`);
+ // deviceElement.append(deviceBody);
+
+ // for (const address of Object.keys(deviceConfig).sort()) {
+ // const data = deviceConfig[address];
+ // const type = addressKeys[deviceId][address];
+ // if (type == undefined) {
+ // const alert = $(`
Unknown Type: ${address}
`);
+ // deviceBody.append(alert);
+ // continue;
+ // }
+
+ // const inputElement = generateElementForConfiguration(data, type, deviceId, address);
+ // deviceBody.append(inputElement);
+ // }
+
+ // for (const address in addressKeys[deviceId]) {
+ // if (address in deviceConfig || address == "internal_title") {
+ // continue;
+ // }
+
+ // const alert = $(`
Unknown Configuration Entry: ${address}
`);
+ // deviceBody.append(alert);
+ // }
+
+ // configElement.append(deviceElement);
+ // }
}
-
+
function send(obj) {
sendQueue.push(obj);
}
diff --git a/display/scripts/utilities.js b/display/scripts/utilities.js
index c529122d..ad9fef1c 100644
--- a/display/scripts/utilities.js
+++ b/display/scripts/utilities.js
@@ -28,6 +28,15 @@ const transferImageToElement = (id, data) => {
img.src = "data:image/jpeg;base64," + data;
}
+const trasferImageBytesToElement = (id, data) => {
+ const img = document.getElementById(id);
+ const msgarray = new Uint8Array(data);
+ const blob = new Blob([msgarray], { type: "image/jpeg" });
+ const urlCreator = window.URL || window.webkitURL;
+ const imageUrl = urlCreator.createObjectURL(blob);
+ img.src = imageUrl;
+}
+
const fromFloatToBytes = (value) => {
var buffer = new ArrayBuffer(4);
var view = new DataView(buffer);
diff --git a/display/styles/index.css b/display/styles/index.css
index 2db3d8cd..db90d939 100644
--- a/display/styles/index.css
+++ b/display/styles/index.css
@@ -141,6 +141,30 @@ span[data-state="5"] {
margin: 1rem 0;
}
+.controls-row {
+ display: flex;
+ flex-direction: row;
+ gap: 1rem;
+}
+
+.controls-row > button {
+ text-wrap: nowrap;
+}
+
+#controls {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ width: fit-content;
+}
+
+#options {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ margin: 1rem 0;
+}
+
#preferences {
display: flex;
flex-direction: column;
@@ -153,21 +177,55 @@ span[data-state="5"] {
#images {
display: flex;
- flex-direction: row;
+ flex-direction: column;
gap: 1rem;
- flex-wrap: wrap;
}
-#images > canvas[data-type="regular"] {
- width: 640px !important;
- height: 480px !important;
+img[data-type="regular"] {
+ width: 480px !important;
+ height: 640px !important;
}
-#images > canas[data-type="bigboy"] {
+img[data-type="bigboy"] {
width: 800px !important;
height: 800px !important;
}
+img[data-type="small"] {
+ width: 320px !important;
+ height: 320px !important;
+}
+
#logging {
margin: 1rem;
+}
+
+.coordinate-input {
+ width: 60px;
+ margin-right: 5px;
+ text-align: center;
+ border-radius: 5px;
+ border: 1px solid #ced4da;
+}
+
+.roww {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ width: fit-content;
+ height: min-content;
+}
+
+#dashboard {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem;
+}
+
+#vtest {
+ min-width: 1000px;
+}
+
+#active_preset_value {
+ color: #ff7bff;
}
\ No newline at end of file
diff --git a/setup/autonav.rules b/setup/etc/autonav.rules
similarity index 95%
rename from setup/autonav.rules
rename to setup/etc/autonav.rules
index cde1f625..f6cd8301 100644
--- a/setup/autonav.rules
+++ b/setup/etc/autonav.rules
@@ -11,4 +11,4 @@ KERNEL=="hidraw*", KERNELS=="*28DE:*", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
# Safety Lights PICO
-KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", ATTRS{serial}=="E660D051138A8531", MODE:="0666", GROUP:="dialout", SYMLINK+="autonav-mc-safetylights"
+KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", ATTRS{serial}=="E660D051138A8531", MODE:="0666", GROUP:="dialout", SYMLINK+="autonav-mc-safetylights"
\ No newline at end of file
diff --git a/setup/autonav.service b/setup/etc/autonav.service
similarity index 87%
rename from setup/autonav.service
rename to setup/etc/autonav.service
index 87d6432d..2bb7edc3 100644
--- a/setup/autonav.service
+++ b/setup/etc/autonav.service
@@ -1,5 +1,5 @@
[Unit]
-Description=Autonav 2023 Service
+Description=Autonav 2024 Service
[Service]
Type=simple
diff --git a/setup/autonav_service.sh b/setup/etc/autonav_service.sh
similarity index 80%
rename from setup/autonav_service.sh
rename to setup/etc/autonav_service.sh
index d123c582..66f7c22d 100644
--- a/setup/autonav_service.sh
+++ b/setup/etc/autonav_service.sh
@@ -6,7 +6,7 @@ export DISPLAY=:0
source /opt/ros/humble/setup.bash
# Check if build is needed, if so, build
-cd /home/$LOCAL_USER/autonav_software_2023/autonav_ws
+cd /home/$LOCAL_USER/autonav_software_2024/autonav_ws
UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
@@ -21,5 +21,5 @@ else
fi
# Launch
-source /home/$LOCAL_USER/autonav_software_2023/autonav_ws/install/setup.bash
+source /home/$LOCAL_USER/autonav_software_2024/autonav_ws/install/setup.bash
ros2 launch autonav_launch competition.xml
\ No newline at end of file
diff --git a/setup/steam.sh b/setup/etc/steam.sh
similarity index 100%
rename from setup/steam.sh
rename to setup/etc/steam.sh
diff --git a/setup/vnav.sh b/setup/etc/vnav.sh
similarity index 100%
rename from setup/vnav.sh
rename to setup/etc/vnav.sh
diff --git a/setup/jams.sh b/setup/jams.sh
deleted file mode 100755
index 36a4a2d2..00000000
--- a/setup/jams.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-# Download and unzip the best jams around
-curl --output jams.zip --netrc-file vectorsecrets.txt https://files.dylanzeml.in/protected/jams.zip
-mkdir -p $HOME/autonav_software_2023/deps/songs
-unzip -o jams.zip -d $HOME/autonav_software_2023/deps/songs
-rm jams.zip
\ No newline at end of file
diff --git a/setup/setup.sh b/setup/setup.sh
index 4290c79b..50a1da4d 100755
--- a/setup/setup.sh
+++ b/setup/setup.sh
@@ -19,19 +19,13 @@ bash vnav.sh
# Steam Controller Dependencies
bash steam.sh
-# Music Dependencies
-bash jams.sh
-
-# ImGUI Dependencies
-sudo apt install libglfw3-dev libglew-dev -y
-
# Python deps
sudo apt install python3-pip -y
pip3 install python-can[serial]
pip3 install websockets
# Copy the udev rules to the correct location
-sudo cp autonav.rules /etc/udev/rules.d/autonav.rules
+sudo cp etc/autonav.rules /etc/udev/rules.d/autonav.rules
# Reload udev
sudo service udev reload
@@ -39,8 +33,8 @@ sleep 2
sudo service udev restart
# Copy services
-sudo cp autonav.service /etc/systemd/system/autonav.service
-sudo cp autonav_service.sh /usr/bin/autonav_service.sh
+sudo cp etc/autonav.service /etc/systemd/system/autonav.service
+sudo cp etc/autonav_service.sh /usr/bin/autonav_service.sh
# chmod time :D
sudo chmod +x /usr/bin/autonav_service.sh