浏览代码

Updating version in tutorial and fixing TargetPlacement bug.

/devin-integration-test
Devin Miller (Unity) 3 年前
当前提交
68e77ed3
共有 4 个文件被更改,包括 226 次插入67 次删除
  1. 4
      tutorials/pick_and_place/1_urdf.md
  2. 4
      tutorials/pick_and_place/PickAndPlaceProject/Assets/Scripts/TargetPlacement.cs
  3. 243
      tutorials/pick_and_place/PickAndPlaceProject/Assets/Tests/PlayMode/PlayModeTestScenes/TargetPlacementTest.unity
  4. 42
      tutorials/pick_and_place/PickAndPlaceProject/Assets/Tests/PlayMode/TargetPlacementTests.cs

4
tutorials/pick_and_place/1_urdf.md


1. Install [Unity Hub](https://unity3d.com/get-unity/download).
1. Go to the [Unity 2020.2 Beta website](https://unity3d.com/unity/beta/2020.2.0b9) to install this project's version of Unity: **2020.2.0b9**.
1. Go it the "Installs" tab in the Unity Hub, and click the "Add" button. Select Unity **2020.3.11f1 (LTS)**. If this version is no longer available through the hub, you can find it in the [Unity Download Archive](https://unity3d.com/get-unity/download/archive).
1. Click the "Add" button in the top right of the "Projects" tab on Unity Hub, and navigate to and select the PickAndPlaceProject directory within this cloned repository (`/PATH/TO/Unity-Robotics-Hub/tutorials/pick_and_place/PickAndPlaceProject/`) to add the tutorial project to your Hub.
1. Go to the "Projects" tab in the Unity Hub, click the "Add" button, and navigate to and select the PickAndPlaceProject directory within this cloned repository (`/PATH/TO/Unity-Robotics-Hub/tutorials/pick_and_place/PickAndPlaceProject/`) to add the tutorial project to your Hub.
![](img/hub_addproject.png)

4
tutorials/pick_and_place/PickAndPlaceProject/Assets/Scripts/TargetPlacement.cs


void OnTriggerEnter(Collider other)
{
if (other.gameObject.name == k_NameExpectedTarget)
if (other.gameObject.name == m_Target.name)
{
CurrentState = PlacementState.InsideFloating;
}

{
if (other.gameObject.name == k_NameExpectedTarget)
if (other.gameObject.name == m_Target.name)
{
CurrentState = PlacementState.Outside;
}

243
tutorials/pick_and_place/PickAndPlaceProject/Assets/Tests/PlayMode/PlayModeTestScenes/TargetPlacementTest.unity


m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:

m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalPosition.x
value: -0.098
objectReference: {fileID: 0}

value: 0.3215
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}

value: -0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}

m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalPosition.x
value: -0.098
objectReference: {fileID: 0}

value: -0.07790001
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}

value: -0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}

value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalPosition.x
value: -0.09569999
objectReference: {fileID: 0}

value: 0.3185
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}

value: -0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}

m_CorrespondingSourceObject: {fileID: 5601983281253769233, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
m_PrefabInstance: {fileID: 587740270}
m_PrefabAsset: {fileID: 0}
--- !u!1 &721719780 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 5601983281253769233, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
m_PrefabInstance: {fileID: 1722777672}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1044694655
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 10
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalPosition.x
value: -0.2789
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalPosition.y
value: 0.643
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalPosition.z
value: 0.119
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591414, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_Name
value: TargetPlacementStateChange
objectReference: {fileID: 0}
- target: {fileID: 4980278694990496136, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_Center.y
value: 0.25
objectReference: {fileID: 0}
- target: {fileID: 7978903071639371792, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_Target
value:
objectReference: {fileID: 721719780}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
--- !u!1001 &1080763006
PrefabInstance:
m_ObjectHideFlags: 0

value: 0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalPosition.x
value: -0.106999986
objectReference: {fileID: 0}

value: 0.1506
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}

- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 47.605, y: 261.538, z: -11.471}
--- !u!1001 &1731673592
--- !u!1001 &1722777672
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2

- target: {fileID: 4064412142990923027, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_UseGravity
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 9
value: -0.12299999
value: -0.2787
value: 0.68200004
value: 0.68
value: -0.055899993
value: 0.1215
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.x

value: -0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5601983281253769233, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_Name
value: TargetFalling
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
--- !u!1001 &1731673592
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4064412142990923027, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_UseGravity
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 6
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalPosition.x
value: -0.12299999
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalPosition.y
value: 0.68200004
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalPosition.z
value: -0.055899993
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_RootOrder
value: 6
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5113255398182140587, guid: 3901759e6233748538fffdbc519c1a68, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalPosition.x
value: -0.098
objectReference: {fileID: 0}

value: 0.119
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}

- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 850690186460591411, guid: 43bef545df3e344c4a7e089ca90c15a0, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_RootOrder
value: 8
objectReference: {fileID: 0}
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalPosition.x
value: -0.10367495
objectReference: {fileID: 0}

- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalPosition.z
value: 0.121130586
objectReference: {fileID: 0}
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7025373
objectReference: {fileID: 0}
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalRotation.x

- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7025373
objectReference: {fileID: 0}
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_RootOrder
value: 8
objectReference: {fileID: 0}
- target: {fileID: 2781043625631727712, guid: 85db2308098d34a79837fb7356902f62, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

42
tutorials/pick_and_place/PickAndPlaceProject/Assets/Tests/PlayMode/TargetPlacementTests.cs


[TestFixture, Category("UnitTests")]
public class TargetPlacementTests
{
const int k_NumAllowedFrames = 5;
const int k_NumAllowedFramesStatic = 5;
const int k_NumAllowedFramesDynamic = 20;
const string k_NamePlaced = "TargetPlacementPlaced";
const string k_NameOutside = "TargetPlacementOutside";
const string k_NameFloating = "TargetPlacementFloating";

yield return new TestCaseData(k_NameFloating, TargetPlacement.PlacementState.InsideFloating).Returns(null);
}
[UnityTest, TestCaseSource(nameof(TargetPlacementCases))]
public IEnumerator TargetPlacement_WithStaticObjects_SetsStateCorrectly(
string name, TargetPlacement.PlacementState stateExpected)
TargetPlacement GetTargetPlacement(string name)
return targetPlacement;
}
static IEnumerator WaitForState(
TargetPlacement targetPlacement, TargetPlacement.PlacementState stateExpected, int numFramesToWait)
{
while (targetPlacement.CurrentState != stateExpected && numFramesTested < k_NumAllowedFrames)
while (targetPlacement.CurrentState != stateExpected && numFramesTested < numFramesToWait)
Assert.AreEqual(targetPlacement.CurrentState, stateExpected);
Assert.AreEqual(stateExpected, targetPlacement.CurrentState);
}
[UnityTest, TestCaseSource(nameof(TargetPlacementCases))]
public IEnumerator TargetPlacement_WithStaticObjects_SetsStateCorrectly(
string name, TargetPlacement.PlacementState stateExpected)
{
var targetPlacement = GetTargetPlacement(name);
yield return WaitForState(targetPlacement, stateExpected, k_NumAllowedFramesStatic);
}
[UnityTest]
public IEnumerator TargetPlacement_WithFallingObject_ChangesStateCorrectly()
{
const string name = "TargetPlacementStateChange";
var targetPlacement = GetTargetPlacement(name);
Assert.AreEqual(TargetPlacement.PlacementState.Outside, targetPlacement.CurrentState,
$"{name} should start with no Target in its bounds.");
// Target should fall into placement and come to reset
yield return WaitForState(
targetPlacement, TargetPlacement.PlacementState.InsideFloating, k_NumAllowedFramesDynamic);
yield return WaitForState(
targetPlacement, TargetPlacement.PlacementState.InsidePlaced, k_NumAllowedFramesDynamic);
}
}
正在加载...
取消
保存