Wheel robot with 4 joints can't move by Differential Controller using Action Graph and ROS

Hi everyone,

I followed Isaac Sim tutorials to recreate Turtlebot3 and control their 2 joints it using ROS Noetic by teleop_keyboard node. Until this everything is OK. Then I wanted to follow the same steps with another robot of 4 wheel then 4 joints. But occurred these warnings referring the 2 extra joints.

2022-09-22 23:35:56 [364,740ms] [Warning] [omni.graph.core.plugin] OmniGraph Warning: shape mismatch: value array of shape (1,2) could not be broadcast to indexing result of shape (1,4)
                   (from compute() at line 110 in /home/catolica/.local/share/ov/pkg/isaac_sim-2022.1.1/exts/omni.isaac.core_nodes/omni/isaac/core_nodes/ogn/nodes/OgnIsaacArticulationController.py)

Then I added another Differential Controller to vinculate the extra 2 joints but the same warnings appeared twice and the robot is stopped.

2022-09-22 23:35:56 [364,737ms] [Warning] [omni.graph.core.plugin] OmniGraph Warning: shape mismatch: value array of shape (1,2) could not be broadcast to indexing result of shape (1,4)
(from compute() at line 110 in /home/catolica/.local/share/ov/pkg/isaac_sim-2022.1.1/exts/omni.isaac.core_nodes/omni/isaac/core_nodes/ogn/nodes/OgnIsaacArticulationController.py)
2022-09-22 23:35:56 [364,740ms] [Warning] [omni.graph.core.plugin] OmniGraph Warning: shape mismatch: value array of shape (1,2) could not be broadcast to indexing result of shape (1,4)
(from compute() at line 110 in /home/catolica/.local/share/ov/pkg/isaac_sim-2022.1.1/exts/omni.isaac.core_nodes/omni/isaac/core_nodes/ogn/nodes/OgnIsaacArticulationController.py)

And this is the joint tree of the robot

Has something similar happened to someone?

Hello. You don’t need a second Articulation controller. You have to form a vector of 4 values and feed it to the controller input.

I have same problem. anyone this solve it?

Thanks for the advise @pme1976 but I’ve tried with a vector of 4 values feeding “Make array” but the problem and warning remains.

OmniGraph Warning: shape mismatch: value array of shape (1,2) could not be broadcast to indexing result of shape (1,4)

Or I have to feed Articulation controller “Joint names” with another element?

I think that warning appears because articulation controller really have only 2 outputs: left joint and right joint. There are 2 extra joints that “cause the problem” and the purpose here is to replicate actions of left_joint to left_joint_2, same thing with the right_joint.

Does anyone could control 4 joints with this method (Action graph) or antoher using ROS?

In theory you should be able to either put in an array of 4 for velocity command and leave the joint names empty, or you also need to put in an array of 4 for the joint names with all four joints. If that doesn’t work, then can you please attach your usd file and we can take a look at it.

Thanks to everyone for your advise! it can be solved creating an array of shape (1,4) from the velocity command output of the Differential Controller. Using 2 “Array Index” to get the values of the velocity command and “Make Array” to create the new array [right_joint, left_joint, right_joint2, left_joint2] or the order that you want. Finally feeding the Articulation Controller.

2 Likes

scout_v2_09_29.usb.usd (8.0 KB)

I designed the same as you, but it didn’t work properly.

Could you tell me how you set the setting values?

Yep @donghoon.sejong . The parameters are the followings:

Screenshot from 2022-09-29 11-13-59

And some screens of the configurations:

I hope that helps