Skip to content

Commit 85cdc95

Browse files
committed
Undeprecate and create old kinematics simulation more easily.
1 parent d9ad24c commit 85cdc95

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

ihmc-avatar-interfaces/src/main/java/us/ihmc/avatar/kinematicsSimulation/HumanoidKinematicsSimulation.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@
9696
import java.util.concurrent.atomic.AtomicReference;
9797

9898
/**
99-
* @deprecated Use {@link SCS2AvatarSimulationFactory#setKinematicsSimulation} instead.
99+
* We built {@link SCS2AvatarSimulationFactory#setKinematicsSimulation} to replace this,
100+
* but apparently this one still works better for some reason.
100101
*/
101102
public class HumanoidKinematicsSimulation
102103
{
@@ -160,7 +161,10 @@ private HumanoidKinematicsSimulation(DRCRobotModel robotModel, HumanoidKinematic
160161
this.kinematicsSimulationParameters = kinematicsSimulationParameters;
161162

162163
// instantiate some existing controller ROS2 API?
163-
ros2Node = new ROS2NodeBuilder().build(HumanoidControllerAPI.HUMANOID_KINEMATICS_CONTROLLER_NODE_NAME);
164+
ROS2NodeBuilder nodeBuilder = kinematicsSimulationParameters.getRos2NodeBuilder();
165+
if (nodeBuilder == null)
166+
nodeBuilder = new ROS2NodeBuilder();
167+
ros2Node = nodeBuilder.build(HumanoidControllerAPI.HUMANOID_KINEMATICS_CONTROLLER_NODE_NAME);
164168
heartbeat = new ROS2Heartbeat(ros2Node, KINEMATICS_SIMULATION_HEARTBEAT);
165169

166170
String robotName = robotModel.getSimpleRobotName();
@@ -261,7 +265,7 @@ private HumanoidKinematicsSimulation(DRCRobotModel robotModel, HumanoidKinematic
261265
walkingParentRegistry.addChild(walkingController.getYoVariableRegistry());
262266

263267
// create controller network subscriber here!!
264-
realtimeROS2Node = new ROS2NodeBuilder().buildRealtime(HumanoidControllerAPI.HUMANOID_KINEMATICS_CONTROLLER_NODE_NAME + "_rt");
268+
realtimeROS2Node = nodeBuilder.buildRealtime(HumanoidControllerAPI.HUMANOID_KINEMATICS_CONTROLLER_NODE_NAME + "_rt");
265269
ROS2Topic inputTopic = HumanoidControllerAPI.getInputTopic(robotName);
266270
ROS2Topic outputTopic = HumanoidControllerAPI.getOutputTopic(robotName);
267271
ControllerNetworkSubscriber controllerNetworkSubscriber = new ControllerNetworkSubscriber(inputTopic,

ihmc-avatar-interfaces/src/main/java/us/ihmc/avatar/kinematicsSimulation/HumanoidKinematicsSimulationParameters.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package us.ihmc.avatar.kinematicsSimulation;
22

3-
import us.ihmc.avatar.scs2.SCS2AvatarSimulationFactory;
43
import us.ihmc.commons.UnitConversions;
4+
import us.ihmc.ros2.ROS2NodeBuilder;
55

66
/**
7-
* @deprecated Use {@link SCS2AvatarSimulationFactory#setKinematicsSimulation} instead.
7+
* To be used with {@link HumanoidKinematicsSimulation}.
88
*/
99
public class HumanoidKinematicsSimulationParameters
1010
{
@@ -20,6 +20,7 @@ public class HumanoidKinematicsSimulationParameters
2020
private double dt = UnitConversions.hertzToSeconds(70);
2121
private boolean runNoFasterThanMaxRealtimeRate = true;
2222
private double maxRealtimeRate = 2.0;
23+
private ROS2NodeBuilder ros2NodeBuilder = null;
2324

2425
public double getInitialGroundHeight()
2526
{
@@ -60,7 +61,7 @@ public void setInitialRobotY(double initialRobotY)
6061
{
6162
this.initialRobotY = initialRobotY;
6263
}
63-
64+
6465
public double getInitialRobotZ()
6566
{
6667
return initialRobotZ;
@@ -120,7 +121,7 @@ public boolean runNoFasterThanMaxRealtimeRate()
120121
{
121122
return runNoFasterThanMaxRealtimeRate;
122123
}
123-
124+
124125
public void setMaxRealtimeRate(double maxRealtimeRate)
125126
{
126127
this.maxRealtimeRate = maxRealtimeRate;
@@ -140,4 +141,14 @@ public void setEnablePeriodicThread(boolean createPeriodicThread)
140141
{
141142
this.createPeriodicThread = createPeriodicThread;
142143
}
144+
145+
public void setRos2NodeBuilder(ROS2NodeBuilder ros2NodeBuilder)
146+
{
147+
this.ros2NodeBuilder = ros2NodeBuilder;
148+
}
149+
150+
public ROS2NodeBuilder getRos2NodeBuilder()
151+
{
152+
return ros2NodeBuilder;
153+
}
143154
}

0 commit comments

Comments
 (0)