Skip to content

Commit 75ef135

Browse files
committed
fix hold
1 parent aac1d46 commit 75ef135

4 files changed

Lines changed: 147 additions & 18 deletions

File tree

Assets/Resources.meta

Lines changed: 0 additions & 8 deletions
This file was deleted.

Assets/Scenes/SampleScene.unity

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,7 +2056,7 @@ RectTransform:
20562056
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
20572057
m_AnchorMin: {x: 0.5, y: 0.5}
20582058
m_AnchorMax: {x: 0.5, y: 0.5}
2059-
m_AnchoredPosition: {x: 725, y: 380}
2059+
m_AnchoredPosition: {x: 800, y: 400}
20602060
m_SizeDelta: {x: 150, y: 150}
20612061
m_Pivot: {x: 0.5, y: 0.5}
20622062
--- !u!114 &295888028
@@ -2743,7 +2743,7 @@ MonoBehaviour:
27432743
m_Direction: 0
27442744
m_MinValue: 0
27452745
m_MaxValue: 10
2746-
m_WholeNumbers: 0
2746+
m_WholeNumbers: 1
27472747
m_Value: 0
27482748
m_OnValueChanged:
27492749
m_PersistentCalls:
@@ -4799,7 +4799,7 @@ RectTransform:
47994799
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
48004800
m_AnchorMin: {x: 0.5, y: 0.5}
48014801
m_AnchorMax: {x: 0.5, y: 0.5}
4802-
m_AnchoredPosition: {x: 725, y: 380}
4802+
m_AnchoredPosition: {x: 800, y: 400}
48034803
m_SizeDelta: {x: 150, y: 150}
48044804
m_Pivot: {x: 0.5, y: 0.5}
48054805
--- !u!114 &715360077
@@ -5158,6 +5158,8 @@ GameObject:
51585158
m_Component:
51595159
- component: {fileID: 772347504}
51605160
- component: {fileID: 772347505}
5161+
- component: {fileID: 772347507}
5162+
- component: {fileID: 772347506}
51615163
m_Layer: 5
51625164
m_Name: HoldToggle_auto
51635165
m_TagString: Untagged
@@ -5233,6 +5235,34 @@ MonoBehaviour:
52335235
m_PersistentCalls:
52345236
m_Calls: []
52355237
m_IsOn: 0
5238+
--- !u!114 &772347506
5239+
MonoBehaviour:
5240+
m_ObjectHideFlags: 0
5241+
m_CorrespondingSourceObject: {fileID: 0}
5242+
m_PrefabInstance: {fileID: 0}
5243+
m_PrefabAsset: {fileID: 0}
5244+
m_GameObject: {fileID: 772347503}
5245+
m_Enabled: 1
5246+
m_EditorHideFlags: 0
5247+
m_Script: {fileID: 11500000, guid: af3ffe20b45cee642a9c0cd82f4ef59d, type: 3}
5248+
m_Name:
5249+
m_EditorClassIdentifier:
5250+
holdSpeed: 1
5251+
holdSpeedSlider: {fileID: 1887006598}
5252+
holdSpeedText: {fileID: 38190623}
5253+
holdToggleButton: {fileID: 772347505}
5254+
--- !u!114 &772347507
5255+
MonoBehaviour:
5256+
m_ObjectHideFlags: 0
5257+
m_CorrespondingSourceObject: {fileID: 0}
5258+
m_PrefabInstance: {fileID: 0}
5259+
m_PrefabAsset: {fileID: 0}
5260+
m_GameObject: {fileID: 772347503}
5261+
m_Enabled: 1
5262+
m_EditorHideFlags: 0
5263+
m_Script: {fileID: 11500000, guid: feab04ad06492965492b3edc6423aa53, type: 3}
5264+
m_Name:
5265+
m_EditorClassIdentifier:
52365266
--- !u!1 &777058406
52375267
GameObject:
52385268
m_ObjectHideFlags: 0
@@ -5602,7 +5632,7 @@ MonoBehaviour:
56025632
m_Direction: 0
56035633
m_MinValue: 0
56045634
m_MaxValue: 10
5605-
m_WholeNumbers: 0
5635+
m_WholeNumbers: 1
56065636
m_Value: 0
56075637
m_OnValueChanged:
56085638
m_PersistentCalls:
@@ -7900,8 +7930,8 @@ MonoBehaviour:
79007930
m_HandleRect: {fileID: 1506478503}
79017931
m_Direction: 0
79027932
m_MinValue: 0
7903-
m_MaxValue: 25
7904-
m_WholeNumbers: 0
7933+
m_MaxValue: 30
7934+
m_WholeNumbers: 1
79057935
m_Value: 0
79067936
m_OnValueChanged:
79077937
m_PersistentCalls:
@@ -8906,7 +8936,7 @@ MonoBehaviour:
89068936
m_Direction: 0
89078937
m_MinValue: 0
89088938
m_MaxValue: 20
8909-
m_WholeNumbers: 0
8939+
m_WholeNumbers: 1
89108940
m_Value: 0
89118941
m_OnValueChanged:
89128942
m_PersistentCalls:
@@ -10457,8 +10487,8 @@ MonoBehaviour:
1045710487
m_HandleRect: {fileID: 1346637681}
1045810488
m_Direction: 0
1045910489
m_MinValue: 0
10460-
m_MaxValue: 1
10461-
m_WholeNumbers: 0
10490+
m_MaxValue: 20
10491+
m_WholeNumbers: 1
1046210492
m_Value: 0
1046310493
m_OnValueChanged:
1046410494
m_PersistentCalls:
@@ -12222,7 +12252,7 @@ MonoBehaviour:
1222212252
m_Direction: 0
1222312253
m_MinValue: 0
1222412254
m_MaxValue: 10
12225-
m_WholeNumbers: 0
12255+
m_WholeNumbers: 1
1222612256
m_Value: 0
1222712257
m_OnValueChanged:
1222812258
m_PersistentCalls:

Assets/Scripts/HoldManager.cs

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using UnityEngine;
2+
using UnityEngine.UI;
3+
using ROS2;
4+
using std_msgs.msg;
5+
using TMPro;
6+
7+
public class HoldManager : MonoBehaviour
8+
{
9+
private ROS2UnityComponent ros2Unity;
10+
private ROS2Node ros2Node;
11+
private IPublisher<std_msgs.msg.Float32> hold_depth_pub; // トピック名を/upper_hand/depthに変更
12+
13+
// ホールド速度の設定
14+
public float holdSpeed = 1.0f;
15+
private bool isHolding = false; // ホールド状態を追跡するフラグ
16+
17+
// UI要素の参照
18+
public Slider holdSpeedSlider;
19+
public TMPro.TextMeshProUGUI holdSpeedText;
20+
public Toggle holdToggleButton;
21+
22+
void Start()
23+
{
24+
if (TryGetComponent(out ros2Unity))
25+
{
26+
if (ros2Unity.Ok())
27+
{
28+
ros2Node = ros2Unity.CreateNode("UnityHoldManagerNode");
29+
// /upper_hand/depthトピックにパブリッシュするように修正
30+
hold_depth_pub = ros2Node.CreatePublisher<std_msgs.msg.Float32>("/upper_hand/depth");
31+
}
32+
}
33+
else
34+
{
35+
Debug.LogError("ROS2UnityComponent not found on this GameObject.");
36+
}
37+
38+
// ホールド速度スライダーの設定
39+
if (holdSpeedSlider != null)
40+
{
41+
holdSpeedSlider.value = holdSpeed;
42+
holdSpeedSlider.onValueChanged.AddListener(OnHoldSpeedSliderChanged);
43+
OnHoldSpeedSliderChanged(holdSpeedSlider.value); // 初期値をテキストに反映
44+
}
45+
46+
// ホールドトグルの設定
47+
if (holdToggleButton != null)
48+
{
49+
holdToggleButton.onValueChanged.AddListener(OnHoldToggleChanged);
50+
}
51+
}
52+
53+
/// <summary>
54+
/// ホールド速度を毎フレームパブリッシュする
55+
/// </summary>
56+
void Update()
57+
{
58+
if (isHolding)
59+
{
60+
// ROS2が初期化されているかチェック
61+
if (ros2Unity != null && ros2Unity.Ok() && ros2Node != null && hold_depth_pub != null)
62+
{
63+
std_msgs.msg.Float32 msg = new std_msgs.msg.Float32();
64+
msg.Data = -holdSpeed; // ホールドは常に負の値
65+
hold_depth_pub.Publish(msg);
66+
}
67+
}
68+
}
69+
70+
/// <summary>
71+
/// ホールド速度スライダーの値が変更されたときに呼び出されるメソッド
72+
/// </summary>
73+
private void OnHoldSpeedSliderChanged(float value)
74+
{
75+
holdSpeed = value;
76+
if (holdSpeedText != null)
77+
{
78+
holdSpeedText.text = holdSpeed.ToString("F2");
79+
}
80+
}
81+
82+
/// <summary>
83+
/// ホールドトグルの状態が変更されたときに呼び出されるメソッド
84+
/// </summary>
85+
public void OnHoldToggleChanged(bool isOn)
86+
{
87+
isHolding = isOn; // ホールド状態フラグを更新
88+
89+
if (!isOn)
90+
{
91+
// トグルがオフになった場合、速度0を1回だけパブリッシュして停止を指示
92+
if (ros2Unity != null && ros2Unity.Ok() && ros2Node != null && hold_depth_pub != null)
93+
{
94+
std_msgs.msg.Float32 msg = new std_msgs.msg.Float32();
95+
msg.Data = 0.0f;
96+
hold_depth_pub.Publish(msg);
97+
Debug.Log("Hold disabled. Publishing speed: 0.0");
98+
}
99+
}
100+
else
101+
{
102+
Debug.Log($"Hold enabled. The speed will be published in Update().");
103+
}
104+
}
105+
}

Assets/Scripts/HoldManager.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)