ROS2SubscribeJointState output uninitialized position command

I am trying to use topic_based_controller for my mobile robot by refer to https://docs.omniverse.nvidia.com/isaacsim/latest/ros2_tutorials/tutorial_ros2_manipulation.html.
I published a joint state that has only velocity command from ROS 2, but ROS2SubscribeJointState outputs position and effort commands.
In worst case, the simulation is stopped by out-range error because the values in position command are not initialized.

I think it is best way that ROS2SubscribeJointState output nan if the command is not exist.
In the current implementation, IsaacArticulationController expects that commands that do not exist will be empty.
But this implementation expects the robot has only one type command.
My robot requires different types of commands for different actuators.
For example:

position_command = [nan, nan, 1.0, 2.0, 3.0]
velocity_command = [1.0, 1.0, nan, nan, nan]

Isaac Sim 4.0.0 still has this problem.
Uninitialized position commands remain output.

Since the robot will work if the position command between “SubscribeJointState.outputs:positionCommand” and “ArticulationController.inputs:positionCommand” is disconnected, it is clear that this uninitialized command is doing something bad.

Please show this video. When the position command’s line is disconnected, the robot move.

Making the position and velocity commands separate topics might solve the problem.
However, this document states that position and velocity commands can operate on a single topic.

How is the code in this document tested?

I solved this problem by using ROS2 Generic Subscriber.
My Omni Graph is below.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.