Projects

    Alauvi.

    Image of the "Alauvi" project
    Icon of the "Python" tagPython
    Personal project
    Finished
    A 3D space rover simulator, featuring realistic vehicle physics, textured terrain, and a fully animated robotic arm.

    Project description

    Introduction

    As part of my academic curriculum, I participated in a two-week group project where the objective was to design and develop a space rover simulator using Python. Inspired by NASA’s Perseverance rover, this simulator aimed to reproduce realistic vehicle behavior and allow the control of a robotic arm within a fully navigable 3D environment.

    The project required us to quickly learn and apply concepts in 3D graphics, physics simulation, and animation. Working in a team of three, we divided tasks efficiently to deliver a functional, interactive simulator within a very limited timeframe.


    Project Objectives

    The primary goal of the project was to design a 3D rover capable of moving realistically across a terrain, while integrating interactive elements such as a robotic arm and a basic user interface. Another important objective was to offer users a choice between a local play mode and an online connection setup through a menu system developed specifically for the simulation.

    Additionally, we aimed to progressively refine the visual aspects of the environment by implementing a Mars-like terrain complete with rocks, elevation changes, and surface texturing.


    Technologies Used

    The project was built entirely in Python, using the Panda3D engine for 3D rendering, animation handling, and physics management. Panda3D’s built-in physics modules (such as vehicle physics) allowed us to simulate realistic rover movement without having to develop a physics engine from scratch.

    Blender was used to create and rig the 3D model of the rover and its robotic arm. We also developed custom assets and textures for the environment, ensuring a coherent visual identity throughout the simulation.


    Development Process

    We structured our development into several major phases, each focusing on a specific aspect of the simulator.

    We began by creating a simple prototype using Panda3D’s default car model. This allowed us to test and calibrate the basic physics behaviors, such as traction, collisions, and vehicle dynamics. Once these foundations were validated, we integrated our custom rover model, initially into a basic environment with no textures and debug grids visible to assist with collision testing.

    Progressively, we replaced the prototype environment with a detailed Mars-like terrain. Rocks and other surface features were added to make the simulation environment more realistic. The terrain was textured, and final adjustments were made to the physics parameters to adapt the rover’s behavior to this new setting.

    Parallel to this, we worked on the robotic arm. Rigging and animation were done in Blender, then imported into Panda3D. We synchronized the arm’s movement with user controls in the simulation interface, allowing for basic mechanical operations.

    Robot arm animation

    The final stages involved integrating the user interface: buttons for camera control, energy management, arm manipulation, and an action log window.

    Robot on the map

    We also implemented a main menu with a mode selection screen (local or online), providing a structured entry point into the simulation.

    Main menu


    Main Features

    The final simulator included several key features:

    • A real-time 3D rover with realistic movement and environmental interaction.
    • A fully animated robotic arm, controllable directly from the interface.
    • A Mars-inspired terrain, complete with textured surfaces, rocks, and elevation variations.
    • A custom-designed user interface featuring energy bars, inventory tracking, camera switching, and a log window for tracking user actions.
    • A menu and mode selection system, allowing players to choose between local and networked play modes before entering the simulation.

    Key Learnings

    This project significantly strengthened my skills in several key areas:

    • Mastery of 3D simulation basics using an engine like Panda3D.
    • Practical experience in vehicle dynamics integration and collision management.
    • Application of animation techniques for the robot arm.
    • Design and implementation of interactive UI systems.
    • Effective teamwork in a limited timeframe.

    Conclusion

    This simulator project was a very rewarding experience, during which I developed an interactive 3D vehicle, implemented realistic physics, and integrated mechanical animations. It reinforced my desire to further explore the use of 3D objects in interactive projects.