async void OnUbiiNodeInitialized() { ubiiSpecs = new Ubii.Devices.Component { Name = NAME, Description = DESCRIPTION, MessageFormat = MESSAGE_FORMAT, IoType = Ubii.Devices.Component.Types.IOType.Subscriber, Topic = GetTopicTargetVelocities() }; ubiiSpecs.Tags.AddRange(TAGS); tokenTargetVelocities = await ubiiNode.SubscribeTopic(this.ubiiSpecs.Topic, (Ubii.TopicData.TopicDataRecord record) => { for (int i = 0; i < record.Object3DList.Elements.Count; i++) { string boneString = record.Object3DList.Elements[i].Id; HumanBodyBones bone; if (HumanBodyBones.TryParse(boneString, out bone)) { Ubii.DataStructure.Pose3D pose = record.Object3DList.Elements[i].Pose; Vector3 linear = new Vector3((float)pose.Position.X, (float)pose.Position.Y, (float)pose.Position.Z); Vector3 angular = new Vector3((float)pose.Euler.X, (float)pose.Euler.Y, (float)pose.Euler.Z); SetTargetVelocity(bone, linear, angular); } } }); ubiiReady = true; }
private async void StartTest() { if (ubiiNode == null) { Debug.LogError("UbiiClient not found!"); return; } await ubiiNode.WaitForConnection(); CreateUbiiSpecs(); Ubii.Services.ServiceReply deviceRegistrationReply = await ubiiNode.RegisterDevice(ubiiDevice); if (deviceRegistrationReply.Device != null) { ubiiDevice = deviceRegistrationReply.Device; } this.subToken = await ubiiNode.SubscribeTopic(topicTestPublishSubscribe, (Ubii.TopicData.TopicDataRecord record) => { testPosition.Set((float)record.Vector3.X, (float)record.Vector3.Y, (float)record.Vector3.Z); }); testRunning = true; }
async void InitCurrentPoseListTopic() { tokenCurrentPoseList = await ubiiNode.SubscribeTopic(ubiiComponentAvatarCurrentPose.GetTopicCurrentPoseList(), (Ubii.TopicData.TopicDataRecord record) => { Google.Protobuf.Collections.RepeatedField <Ubii.DataStructure.Object3D> objects = record.Object3DList.Elements; for (int i = 0; i < record.Object3DList.Elements.Count; i++) { string boneString = record.Object3DList.Elements[i].Id; HumanBodyBones bone; if (HumanBodyBones.TryParse(boneString, out bone)) { Ubii.DataStructure.Pose3D pose = record.Object3DList.Elements[i].Pose; UbiiPose3D newMapPose = new UbiiPose3D { position = new Vector3((float)pose.Position.X, (float)pose.Position.Y, (float)pose.Position.Z), rotation = new Quaternion((float)pose.Quaternion.X, (float)pose.Quaternion.Y, (float)pose.Quaternion.Z, (float)pose.Quaternion.W) }; if (mapBone2CurrentPose.ContainsKey(bone)) { mapBone2CurrentPose[bone] = newMapPose; } else { mapBone2CurrentPose.Add(bone, newMapPose); } } } }); }
public async void OnUbiiInitialized() { topicFrequencyCounter = "/" + ubiiNode.GetID() + "/test/pm_frequency_counter"; topicFrequencyCounterTickValue = "/" + ubiiNode.GetID() + "/test/pm_frequency_counter/tick_value"; expectedCounter = 0; tickValue = 2; ubiiNode.PublishImmediately(new TopicDataRecord { Topic = topicFrequencyCounterTickValue, Int32 = tickValue }); //await Task.Delay(2000); testFailure = false; await ubiiNode.SubscribeTopic(topicFrequencyCounter, (TopicDataRecord record) => { expectedCounter += tickValue; testFailure = record.Int32 != expectedCounter; if (testFailure) { Debug.LogError("counter from PM expected to be " + expectedCounter + " but was actually " + record.Int32); } }); ubiiSession = new Ubii.Sessions.Session { Name = "Test Processing Modules Counter" }; ubiiSession.ProcessingModules.Add(new Ubii.Processing.ProcessingModule { Name = TestPMFrequencyCounter.specs.Name }); Ubii.Sessions.IOMapping ioMapping = new Ubii.Sessions.IOMapping(); ioMapping.ProcessingModuleName = TestPMFrequencyCounter.specs.Name; ioMapping.InputMappings.Add(new Ubii.Sessions.TopicInputMapping { InputName = "counterTick", Topic = topicFrequencyCounterTickValue }); ioMapping.OutputMappings.Add(new Ubii.Sessions.TopicOutputMapping { OutputName = "outCounter", Topic = topicFrequencyCounter }); ubiiSession.IoMappings.Add(ioMapping); RunTest(); }
async void InitIKTopics() { foreach (IK_TARGET ikTarget in Enum.GetValues(typeof(IK_TARGET))) { GameObject ikTargetObject = new GameObject("IK-Target PoseEstimator " + ikTarget.ToString()); mapIKTargetTransforms.Add(ikTarget, ikTargetObject.transform); mapIKTarget2UbiiPose.Add(ikTarget, new UbiiPose3D { position = new Vector3(), rotation = new Quaternion() }); } tokenIkTargetPose = await ubiiNode.SubscribeTopic(ubiiComponentIkTargets.GetTopicIKTargets(), (Ubii.TopicData.TopicDataRecord record) => { for (int i = 0; i < record.Object3DList.Elements.Count; i++) { string ikTargetString = record.Object3DList.Elements[i].Id; Ubii.DataStructure.Pose3D pose3D = record.Object3DList.Elements[i].Pose; IK_TARGET ikTarget; if (IK_TARGET.TryParse(ikTargetString, out ikTarget)) { UbiiPose3D pose = mapIKTarget2UbiiPose[ikTarget]; pose.position.Set( (float)pose3D.Position.X, (float)pose3D.Position.Y, (float)pose3D.Position.Z); pose.rotation.Set( (float)pose3D.Quaternion.X, (float)pose3D.Quaternion.Y, (float)pose3D.Quaternion.Z, (float)pose3D.Quaternion.W); mapIKTarget2UbiiPose[ikTarget] = pose; } } }); initialized = true; }
async private void RunTestSubscribePublish() { await ubiiNode.WaitForConnection(); string topic = "/" + ubiiNode.GetID() + "/unity3D_client/test/subcribe_publish_simple"; bool success = false; Action <TopicDataRecord> callback = (TopicDataRecord record) => { success = record.Bool; }; SubscriptionToken subToken = await ubiiNode.SubscribeTopic(topic, callback); ubiiNode.Publish(new Ubii.TopicData.TopicDataRecord { Topic = topic, Bool = true }); await Task.Delay(1000).ContinueWith(async(Task t) => { bool successUnsubscribe = await ubiiNode.Unsubscribe(subToken); if (!successUnsubscribe) { Debug.LogError("RunTestSubscribePublish Unsubscribe() FAILURE!"); } if (success) { Debug.Log("RunTestSubscribePublish SUCCESS!"); } else { Debug.LogError("RunTestSubscribePublish FAILURE!"); } }); }