Simulate Battery Charger

Any suggestion on how to go about simulating a “battery charger” in Isaac Sim.

Here is what I am trying to accomplish:
1 - Running ROS2 docking controller
2 - After docking to the battery charger successfull, start charging, provide indication of coupling (light)
3 - Once the battery is fully charged (100%), stop the battery charger (decoupling (light))
4 - Undock the robot from the battery charger

I looked at the Samples (Clock, DeskFan, LightBulb and Maze) but not much documentation is provided. It would have been greate if there were some documentations (is there any documentation on it?).

If anyone have ideas/suggestions/directions, it would be highly appreciated.


Hi @nvidia-orin -

  1. Creating the Charger Model: You would need to create a 3D model of the charger and import it into Isaac Sim. This could be done in a 3D modeling software like Blender, and then imported into Isaac Sim as a USD file.
  2. Docking Behavior: You would need to implement a ROS2 docking controller that can guide the robot to the charger. This could involve using sensor data from the robot (like lidar or camera data) to locate the charger and navigate to it. You might also need to implement a docking algorithm that can accurately align the robot with the charger.
  3. Charging Process: To simulate the charging process, you could use a variable in your simulation to represent the robot’s battery level. When the robot is docked with the charger, you could gradually increase this variable over time until it reaches 100%. You could also use a light in your simulation to indicate when the robot is charging.
  4. Undocking Behavior: Once the battery is fully charged, you would need to implement behavior for the robot to undock from the charger. This could involve reversing the actions of the docking behavior.

As for the documentation, you’re correct that the Isaac Sim documentation doesn’t currently include a detailed tutorial on this specific scenario.

@rthaker Thank for the feedback.

I have done all the steps as you mentioned (1-4).

I am/was looking for suggestions on how to create a “simulated battery charger” in Isaac Sim.

Currently, I have the “3D CAD battery charger” but it has no interaction with the AMR (carter). Carter is running ROS2 navigation stack and custom docking/undocking controller which is controlled by behavior trees. Carter docks and undocks using Nav2+BT along with “custom simulated battery” (CSB).

I would like to create “custom simulated battery charger” (CSBC) in Isaac Sim that is basically “3D CAD battery charger” with its software. This system should interacts with/through ROS2 and custom CSB running on AMR.

Isaac Sim ----------- AMR
carter ----------- carter navigation
CSBC ----------- CSB
Smart Factory-----------(ROS2/Nav2/BT/Dock/Undock)

I appreciate for your suggestions/comments.

Writing custom extension

Simulating a Battery Charger in Isaac Sim:
To simulate a battery charger in NVIDIA Isaac Sim that interacts with an Autonomous Mobile Robot (AMR) running in the simulation, and communicates using ROS2, you would need to follow these general steps:

a. Create the Battery Charger Model:

  • Design or import a 3D model of the battery charger into Isaac Sim.
  • Define the collision properties of the charger’s model. This includes specifying the shape and size of the collision volume that will be used to detect collisions with other objects in the simulation. This is important for ensuring that the charger interacts realistically with other objects, such as the AMR and the simulated battery.
  • Define the physical properties and behaviors of the battery charger in the simulation, including its charging mechanism and indicator lights.
  • Define how the charging process works. For example, does the charger have physical connectors that need to be aligned with the AMR’s battery for charging? How does the charging process start and stop?
  • Model the indicator lights on the charger. This involves creating visual elements (lights) on the charger’s 3D model that can change color and intensity.
  • Implement the behavior of the indicator lights based on the charging status:
    • Green light: Indicates that the battery is fully charged.
    • Blinking red light: Indicates that the battery is currently charging.

b. Integrate with ROS2:

  • Set up ROS2 integration within Isaac Sim to enable communication between the battery charger simulation and the AMR’s simulated battery. This might involve creating ROS2 nodes and topics for communication.
  • Establish communication between the AMR, the charger, and the simulated battery using ROS2 topics. This allows the components to exchange information about the charging process, such as when the AMR docks, when charging starts, and when it completes.
  • Continuously monitor the charging progress of the simulated battery. This could involve subscribing to ROS2 topics that provide updates on the charging percentage and other relevant information.

c. AMR and Simulated Battery:

  • Ensure that the AMR model in Isaac Sim has a simulated battery that can be charged.
  • Implement the logic on the AMR side to initiate the docking process with the battery charger when needed.

d. Charging Logic:

  • Implement the charging logic within the battery charger’s simulation.
  • When the AMR docks with the charger, start sending signals to the simulated battery to begin charging (start increasing the charging percentage).

e. Indicator Lights:

  • Implement the visual indicators (green light when charged, blinking red light while charging) on the battery charger model based on the charging status.
  • Implement the behavior on the AMR’s side to interpret the charging status and respond to the indicator lights on the battery charger.
  • For instance, when the simulated battery is fully charged (as indicated by the green light on the charger), the AMR could acknowledge the completion and potentially undock from the charger.