Hello everyone,
IITB Mars Rover Team here
We are excited to share the updated version of our Unity-based simulation pipeline that integrates seamlessly with ROS2. Since our last submission, we’ve worked on addressing previous limitations and making the simulation more realistic, optimized, and useful for development.
Key Improvements Since Last Version
- Optimized Simulation Performance: The simulation now runs at a high and stable frame rate, publishing all ROS2 topics without any frame drops.
- ROS2 Topic Fidelity: All published topics now exactly match the real Panther rover in both type and naming, ensuring drop-in compatibility with existing pipelines.
- Improved Rover Control (PID): The Panther’s movement is now controlled by a PID system. When commanding via
/panther/cmd_vel, the rover tracks commanded velocities accurately, using ground-truth feedback instead of relying on wheel rotations. - Higher Topic Frequencies: Camera and LiDAR publishing frequency has been significantly increased thanks to optimization of rendering and sensor pipelines.
- Environment Enhancements: The world now includes ArUco markers throughout the Mars Yard as well as additional objects (Mallet, Cone, Screwdriver) for testing perception and object detection pipelines.
- Prefab Architecture: The Panther, sensors, and world assets have been modularized into prefabs, making the project easier to extend and maintain.
This simulation environment is designed to support research and development in mapping, navigation, and computer vision with a setup closer to the real rover.
We’ve updated the full guide on GitHub for anyone who wants to try it out:
GitHub: ERC Unity Project
Suggestions and feedback are, as always, most welcome.
Reply to Feedback
We would also like to directly address the feedback we received on our previous submission.
Vehicle Physics
“Currently Panther struggles to climb slopes… consider adjusting friction, torque, damping… safer stopping on cmd_vel timeout… W+A/D not working for curves.”
All these points have been resolved:
- The rover no longer depends on wheel rotation for velocity, instead, it uses ground-truth feedback to accurately follow commanded velocities.
- PID-based control ensures smooth and stable motion under
/panther/cmd_vel. - The rover responds correctly to combined inputs (e.g., forward + turn), and speed tracking is consistent across terrain.
- Timeout behavior has been improved to avoid uncontrolled movement.
ROS Integration
“Low camera FPS, lack of compression, performance bottlenecks in Unity–ROS bridge.”
Improvements implemented:
- By optimizing how LiDAR and camera pipelines run in Unity, the simulation now achieves higher frame rates, enabling much higher topic publishing frequencies than before.
- Frame drops have been eliminated, ensuring consistent ROS2 communication.
- Although
image_transportcompression is not yet added, the pipeline is robust enough for stable high-frequency raw image publishing.
Architecture
“Panther and ZED hierarchies defined inside scene; prefabs recommended; suggested ROS2 launch file integration.”
Updates made:
- All major components (Panther, sensors, and world assets) have been modularized into prefabs, improving reusability and maintainability.
- We evaluated running Unity directly via a launch file, but due to complexity we decided on a more robust approach: running three processes separately –
- ROS TCP Endpoint
- Static TF Publisher
- Unity Simulation
This keeps the workflow simple and stable while still ensuring smooth integration.
With these updates, we believe the simulation has reached a much more polished stage, both in realism and usability.
We’re looking forward to seeing how the community uses it for testing and development before the final test!
Thanks,
Rishabh
IITB Mars Rover Team