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)
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.
I am facing a similar issue. At first, I was indeed using 2 Articulation Controllers (and I already had in mind this was not the right way to do this), and then I found this thread. I implemented it the same way, and it works exactly the same as with the 2 Articulation Controllers. My problem is that the wheels spin in the correct direction, but the robot does not move accordingly. Instead of doing a spot turn, it creates a very large circle.
Any idea what could cause this behaviour?
Here is the original post I did before I found this threat here. It is not a duplicate, as I face another issue with the movement o the rover, not only the connection.
is your robot a 4-wheel drive or a 2-wheel drive with 2 extra wheels that are not actuated? If it’s a 2-wheel drive, then I would recommend to exclude the non-actuating wheels from the articulation and let them be free joints that just rotates. If it’s a 4-wheel drive and it’s not working as expected, then I would start with tuning some wheel friction properties and chassis mass and see if that helps.
The robot is 4-wheeled, and all four wheels are driven. The four wheels are spinning in the correct direction. Just the entirety of the robot is not moving as it should when rotating.
I have created a physics material that I attribute to the wheels with a friction coefficient of 1 (static and dynamic) as in the 2-wheeled examples from Isaac Sim.
Related to the mass properties, I use the masses of the parts as they were specified in the URDF that I imported. The masses of the parts and the total mass are within reasonable tolerances with respect to the real robot. The robot weighs about 5 kg (in real and in simulation).
Would you suggest increasing or decreasing the mass and/or friction coefficients?
I would play with the mass and not worry about matching real life first and just to see if it makes any difference. If you want to attach your usd file here, I can take a look at it as well.
Hi,
I have a two wheeled actuated robot. But , the two supporting wheels are dragging, can you just help me by how to fix this sliding? The wheel joints are revolute with the chassis link.