Publishing ROS topic cause "PhysX error"

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

Isaac Sim Version

4.2.0
4.1.0
4.0.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Isaac Lab Version (if applicable)

1.2
1.1
1.0
Other (please specify):

Operating System

Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: 2070 Dual
  • Driver Version: 535.183.01

Topic Description

Detailed Description

Hello Guys,

We’re working on creating a work station with multiple robots in it. As I’m trying to simulate it in Isaac Sim I ran into a minor issue once I was trying to publish my robots JointState as ros topic.

The issue seem to be that the ROS publishing frequency is not the same as the Isaac Sim’s step/time index (or something like that) which avoids my publishing function to get the robots joint state sometimes.

The simulation is not crashing, but it gives me the error below:
PhysX error: PxArticulationReducedCoordinate::copyInternalStateToCache() not allowed while simulation is running. Call will be ignored., FILE /builds/omniverse/physics/physx/source/physx/src/NpArticulationReducedCoordinate.cpp, LINE 197

Generally, I call my publish function (for each robot individually) independant from the my whole code’s flow:

Code

publish_rate = 10.0
i=0
for robot in robots:
    robot._js_pub_interval = rospy.Timer(rospy.Duration(10.0 / publish_rate), robot.ros_js_publisher)

while simulation_app.is_running():
    # Rendering The World
    test._my_world.step(render=True)
    if not test._my_world.is_playing():
            if i % 100 == 0:
                print("**** Click Play to start simulation *****")
            i += 1
            continue

    step_index = test._my_world.current_time_step_index
    # Re initializing robots defined in the list
    for robot in robots:
        robot.articulation_controller_init(step_index)

    if step_index < 20:
        continue

End

Since I’m planning to use CuRobo IK algorithm to generate movements to my robots, it might take time to compute the path. Therefore, my logic was to creat a function that can be called independent from my code’s runtime and be able to publish all the robot’s JointState as ROS topics even in the moments that the code is stucked on CuRobo’s IK path planning.

I would be happy to have your help on removing this error/warning which is kind of distrupting once the simulation starts.

Steps to Reproduce

(Add more steps as needed)

Error Messages

PhysX error: PxArticulationReducedCoordinate::copyInternalStateToCache() not allowed while simulation is running. Call will be ignored., FILE /builds/omniverse/physics/physx/source/physx/src/NpArticulationReducedCoordinate.cpp, LINE 197

Screenshots or Videos

(If applicable, add screenshots or links to videos that demonstrate the issue)

Additional Information

What I’ve Tried

(Describe any troubleshooting steps you’ve already taken)

Related Issues

(If you’re aware of any related issues or forum posts, please link them here)

Additional Context

(Add any other context about the problem here)

I haven’t read through it yet, but please check if this forum topic is helpful:
PhysX error occurs when I move joint with efforts control and ROS message is helpful.

@VickNV

Thanks for the response.

That’s a solution I agree with.
Asking the ROS publisher to publish the JointStates once a physical step moves forward is fixing the issue.

What I wanted to implement was a way to publish the JointStates in a different timestamp than the physical step (or the scene step). For example, I wanted to publish the JointState of my robot with a frequency of 10Hz and irrelevant to the simulation scene’s instance.

As I mentioned, the code is working fine, but the warning comes up and occupies the application window (keeps saying that it will ignore the call), so I just wanted to get rid of the warning coming up in this matter.

Also, I have to mention that I bring up the whole simulation using python standalone.