Not able to move custom robot manipulator

Hello,

I created a scene which has a custom robot loaded. I am able to use the Articulation Inspector in order to manipulate the robots movement.

But when I try to apply the articulation action to the robot it is not moving.

def move_robot(self, joints):
        print("Move robot to ", joints)
        world = self.get_world()
        action = ArticulationAction(joint_positions=joints)
        self.articulation_controller.apply_action(action)
        world.step(render=True)

After retrieving the articulation I set up the robot this way:

def setup_articulation(self):
        print("Setup articulation")
        articulations = self.get_all_articulations()
        print(articulations)
        prim_path = articulations[0]
        print("Select robot", prim_path)

         # Create and Initialize the Articulation
        self.robot = Articulation(prim_path=prim_path)
        if not self.robot.handles_initialized:
            print("Initialize robot handle")
            self.robot.initialize()

        # start event subscriptions
        if not self._physx_subscription:
            self._physx_subscription = self._physxIFace.subscribe_physics_step_events(self._on_physics_step)

        self.articulation_controller = self.robot.get_articulation_controller() 

When I try to apply the action I do not see the robot moving.

Is there anything I’m missing?

I have tried to pass simple joint velocity commands to my custom manipulator.

class RandomController(ArticulationController):
    def forward(self, command):
        # An simple controller that generates random action regardless the inputs
        action = np.concatenate((2*np.random.rand(7,), 5*np.random.rand(6,)))
        return ArticulationAction(joint_velocities=[action])

Then call this controller and apply the actions in pre_step under the task

    def pre_step(self, control_index, simulation_time):
        action = RandomController(command=[0.20, np.pi / 4])
        self._my_robot.apply_action(action) 
1 Like