Skip to content

Commit 563f507

Browse files
committed
urdf primitive collider import fix
1 parent cee0638 commit 563f507

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

Runtime/Scripts/ROS/Unity/Controllers/ZOArmController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ private ZOControllerManagerService ControllerManager {
138138
protected override void ZOReset() {
139139
base.ZOReset();
140140
UpdateRateHz = 25.0f;
141-
ROSTopic = "/arm_controller";
141+
ROSTopic = "/arm_controller/follow_joint_trajectory";
142142
}
143143

144144

Runtime/Scripts/ROS/Unity/Services/ZOControllerManagerService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public string ListControllerTypesServiceTopic {
6060
protected override void ZOReset() {
6161
base.ZOReset();
6262
_ROSTopic = "controller_manager";
63-
UpdateRateHz = 5.0f;
63+
UpdateRateHz = 25.0f;
6464
}
6565

6666

Runtime/Scripts/Util/ImportExport/ZOImportURDF.cs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,11 @@ public static ZOSimDocumentRoot Import(XmlDocument xmlDocument, string workingDi
136136

137137
XmlNode xmlBox = xmlGeom.GetChildByName("box");
138138
if (xmlBox != null) {
139-
collisionGeo = GameObject.CreatePrimitive(PrimitiveType.Cube);
139+
collisionGeo = new GameObject("box_collider");
140+
BoxCollider boxCollider = collisionGeo.AddComponent<BoxCollider>();
140141
Vector3 size = xmlBox.Attributes["size"].Value.FromURDFStringToVector3();
141142

142-
collisionGeo.transform.localScale = size.Ros2UnityScale();
143+
boxCollider.size = size.Ros2UnityScale();
143144
}
144145

145146
XmlNode xmlCylinder = xmlGeom.GetChildByName("cylinder");
@@ -148,13 +149,23 @@ public static ZOSimDocumentRoot Import(XmlDocument xmlDocument, string workingDi
148149
float radius = float.Parse(xmlCylinder.Attributes["radius"].Value);
149150
float length = float.Parse(xmlCylinder.Attributes["length"].Value);
150151
collisionGeo.transform.localScale = new Vector3(radius * 2.0f, length * 0.5f, radius * 2.0f);
152+
MeshCollider meshCollider = collisionGeo.AddComponent<MeshCollider>();
153+
meshCollider.sharedMesh = collisionGeo.GetComponent<MeshFilter>().sharedMesh;
154+
meshCollider.convex = true;
155+
156+
GameObject.DestroyImmediate(collisionGeo.GetComponent<MeshRenderer>());
157+
GameObject.DestroyImmediate(collisionGeo.GetComponent<MeshFilter>());
158+
151159
}
152160

153161
XmlNode xmlSphere = xmlGeom.GetChildByName("sphere");
154162
if (xmlSphere != null) {
155-
collisionGeo = GameObject.CreatePrimitive(PrimitiveType.Sphere);
163+
collisionGeo = new GameObject("sphere_collider");// GameObject.CreatePrimitive(PrimitiveType.Sphere);
164+
156165
float radius = float.Parse(xmlSphere.Attributes["radius"].Value);
157-
collisionGeo.transform.localScale = new Vector3(radius * 2.0f, radius * 2.0f, radius * 2.0f);
166+
SphereCollider sphereCollider = collisionGeo.AddComponent<SphereCollider>();
167+
sphereCollider.radius = radius;
168+
// collisionGeo.transform.localScale = new Vector3(radius * 2.0f, radius * 2.0f, radius * 2.0f);
158169
}
159170

160171
XmlNode xmlMesh = xmlGeom.GetChildByName("mesh");
@@ -165,15 +176,15 @@ public static ZOSimDocumentRoot Import(XmlDocument xmlDocument, string workingDi
165176

166177
MeshFilter[] meshFilters = collisionGeo.GetComponentsInChildren<MeshFilter>();
167178
foreach (MeshFilter meshFilter in meshFilters) {
168-
MeshCollider meshCollider = collisionGeo.AddComponent<MeshCollider>();
179+
MeshCollider meshCollider = meshFilter.gameObject.AddComponent<MeshCollider>();
169180

170181
// add mesh collider
171182
meshCollider.sharedMesh = meshFilter.sharedMesh;
172183
meshCollider.convex = true;
173184

174185
// remove mesh renderer and mesh filter
175-
GameObject.DestroyImmediate(collisionGeo.GetComponent<MeshRenderer>());
176-
GameObject.DestroyImmediate(collisionGeo.GetComponent<MeshFilter>());
186+
GameObject.DestroyImmediate(meshFilter.gameObject.GetComponent<MeshRenderer>());
187+
// GameObject.DestroyImmediate(meshFilter.gameObject.GetComponent<MeshFilter>());
177188

178189
}
179190

0 commit comments

Comments
 (0)