Data is received from BalanceBot

This commit is contained in:
Stedd 2023-10-22 01:17:23 +02:00
parent c4ceaee3f6
commit e558733a20
4 changed files with 128 additions and 3 deletions

@ -1 +1 @@
Subproject commit 421750f1209e8c91aa594c1126a306e127c5a7a2 Subproject commit 533ddb404ffa5582e5ac9c395861806e2042e981

View File

@ -584,6 +584,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 744781436} - component: {fileID: 744781436}
- component: {fileID: 744781435} - component: {fileID: 744781435}
- component: {fileID: 744781437}
m_Layer: 5 m_Layer: 5
m_Name: UDPManager m_Name: UDPManager
m_TagString: Untagged m_TagString: Untagged
@ -603,8 +604,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0053eace8ae9ca34680b4223e559ebc6, type: 3} m_Script: {fileID: 11500000, guid: 0053eace8ae9ca34680b4223e559ebc6, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_port: 8888 _port: 1234
listen: 1 _ipAddress: 239.1.2.3
_watchdog: 0
<Data>k__BackingField:
--- !u!4 &744781436 --- !u!4 &744781436
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -620,6 +623,20 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &744781437
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 744781434}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 65ec321cdebe52d449c641ae006932b9, type: 3}
m_Name:
m_EditorClassIdentifier:
_udpManager: {fileID: 744781435}
<ReceivedData>k__BackingField:
--- !u!1 &752811092 --- !u!1 &752811092
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -0,0 +1,97 @@
using System;
using GameDev.UDP;
using UnityEngine;
[RequireComponent(typeof(UDPManager))]
public class ReceiveData : MonoBehaviour
{
[Header("Connections")]
[SerializeField] private UDPManager _udpManager;
[Header("State")]
[SerializeField] private float _updateRate;
[SerializeField] private ulong _packages;
[field: SerializeField] public byte[] ReceivedData { get; set; }
[field: Header("ReceivedData")]
[field: SerializeField] private byte Watchdog { get; set; }
[field: SerializeField] private byte States { get; set; }
[field: SerializeField] private int M1SpeedCmd { get; set; }
[field: SerializeField] private int M2SpeedCmd { get; set; }
[field: SerializeField] private float AccelerometerPitch { get; set; }
[field: SerializeField] private float FilteredPitch { get; set; }
[field: SerializeField] private float PitchRate { get; set; }
[field: SerializeField] private float RemSpeedRef { get; set; }
[field: SerializeField] private float RemTurnSpeedRef { get; set; }
[field: SerializeField] private float ScContOut { get; set; }
[field: SerializeField] private float TcContOut { get; set; }
[field: SerializeField] private float OlContOut { get; set; }
[field: SerializeField] private float RefIL { get; set; }
[field: SerializeField] private float ActIL { get; set; }
[field: SerializeField] private float ErrorIL { get; set; }
[field: SerializeField] private float ILContOut { get; set; }
[field: SerializeField] private float IErrorIL { get; set; }
[field: SerializeField] private float ILAntiWindup { get; set; }
[field: SerializeField] private float SpeedCmd1 { get; set; }
[field: SerializeField] private float SpeedCmd2 { get; set; }
private int _newPackages;
private float _sampleTime;
private void OnEnable()
{
_sampleTime = 1;
_udpManager.ReceivedNewUdpData += ProcessData;
}
private void OnDisable()
{
_udpManager.ReceivedNewUdpData -= ProcessData;
}
private void ProcessData()
{
_packages++;
_newPackages++;
ReceivedData = _udpManager.Data;
var i = 0;
Watchdog = ReceivedData[i];
States = ReceivedData[i += 1];
M1SpeedCmd = BitConverter.ToInt16(ReceivedData, i += 1);
M2SpeedCmd = BitConverter.ToInt16(ReceivedData, i += 2);
AccelerometerPitch = BitConverter.ToSingle(ReceivedData, i += 2);
FilteredPitch = BitConverter.ToSingle(ReceivedData, i += 4);
PitchRate = BitConverter.ToSingle(ReceivedData, i += 4);
RemSpeedRef = BitConverter.ToSingle(ReceivedData, i += 4);
RemTurnSpeedRef = BitConverter.ToSingle(ReceivedData, i += 4);
ScContOut = BitConverter.ToSingle(ReceivedData, i += 4);
TcContOut = BitConverter.ToSingle(ReceivedData, i += 4);
OlContOut = BitConverter.ToSingle(ReceivedData, i += 4);
RefIL = BitConverter.ToSingle(ReceivedData, i += 4);
ActIL = BitConverter.ToSingle(ReceivedData, i += 4);
ErrorIL = BitConverter.ToSingle(ReceivedData, i += 4);
ILContOut = BitConverter.ToSingle(ReceivedData, i += 4);
IErrorIL = BitConverter.ToSingle(ReceivedData, i += 4);
ILAntiWindup = BitConverter.ToSingle(ReceivedData, i += 4);
SpeedCmd1 = BitConverter.ToSingle(ReceivedData, i += 4);
SpeedCmd2 = BitConverter.ToSingle(ReceivedData, i += 4);
}
private void FixedUpdate()
{
CalculateReceiveRate();
}
private void CalculateReceiveRate()
{
if (_sampleTime < 0)
{
_updateRate = _newPackages;
_newPackages = 0;
_sampleTime = 1;
}
else
{
_sampleTime -= Time.fixedDeltaTime;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 65ec321cdebe52d449c641ae006932b9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: