Skip to content

NASA_Challenge_[@RBinson]_[Lunar Pole Exploration Rover & Plugins]#43

Open
RBinsonB wants to merge 1 commit intospace-ros:mainfrom
RBinsonB:feat/lunar_pole_exploration_rover
Open

NASA_Challenge_[@RBinson]_[Lunar Pole Exploration Rover & Plugins]#43
RBinsonB wants to merge 1 commit intospace-ros:mainfrom
RBinsonB:feat/lunar_pole_exploration_rover

Conversation

@RBinsonB
Copy link
Copy Markdown

@RBinsonB RBinsonB commented Sep 6, 2024

Lunar Pole Exploration Rover & Plugins

Closes: issue #36

This package (and associated assets in the simulation repository space-ros/simulation#25) provides a Gazebo simulation of a lunar south pole exploration mission inspired by the real NASA VIPER mission.

It includes a realistic environment, the Mons Mouton, where the VIPER rover was planned to land, and a fully controllable rover model.

The key elements of the simulation is the integration of specifically developped Gazebo plugins. A solar panel plugin and associated battery and power consumption plugins aim to simulate the power generation challenge of the lunar south pole.

This package and associated plugins and models were developped by Robin Baran and Stevedan Ogochukwu Omodolor Omodia for the NASA Space ROS Sim Summer Sprint Challenge.

Challenge Name: NASA Space ROS Sim Summer Sprint Challenge
Team lead Freelancer name: @RBinson
Submission title: Lunar Pole Exploration Rover & Plugins

Detailed information on how to build, to run, the APIs and so on is available in the README

demo_banner

mons_mouton_world1

Contribution details

Our contribution is as follows:

  • A lunar south pole exploration Gazebo simulation modelled on NASA VIPER mission including:
    • A fully simulated rover model
    • A world and ground model to simulate the Mons Mouton (also called Liebnitz Beta) area.
  • A set of Gazebo plugins to simulate power generation and consumption in space Robotics, used in the lunar pole exploration Gazebo simulation. These plugins are as follows:
    • A solar panel plugin to simulate power generation from the sun according to occlusion and angle between the sun and the panel
    • A radioisotope thermal generator plugin to simulate the constant power from a radioisotope thermal generator
    • A modified version of the linear battery plugin that is able to take as charge input the power outputs of the two previous plugins.
    • A sensor power load system plugin to simulate the power drawn by sensors

Why It Matters

Our motivation and rational for this contribution is firstly based on the renewed global interest for the moon. The polar regions in particular are of high interest due to the high chance of water ice being present in permanently shaded craters. Said water could be used to establish a long lasting human presence on the moon (https://www.weforum.org/agenda/2023/08/space-water-ice-moon-south-pole/).

Unique challenges have to be addressed in this environment and would be interesting to simulate in Space-ROS. In particular the power generation and management:

  • Solar power being constantly available outside of shaded area
  • Solar power being unavailable while testing the presence of water ice in a shaded area
  • Solar panel placement to adapt to the sun low position on the horizon

In addition, power generation and management strategies are a cornerstone of any space mission, and in particular space robotic missons. Many space missions have been saved or got extended beyond their initially planned lifetimes through the careful management of power loads. Deactivating science equipment, sensors and even actuators to reduce consumption. For example, the Opportunity and Spirit rovers extended their mission life well beyond the planned 90 days by deactivating non-essential equipment and reducing communication during dust storms (https://web.archive.org/web/20140902071407/http://www.nasa.gov/mission_pages/mer/mer-20070824.html). Being able to simulate those behaviors and strategies seems of great added value to Space-ROS.

Detailed information on how to build, to run, the APIs and so on is available in the README

@RBinsonB RBinsonB marked this pull request as ready for review September 7, 2024 23:17
@mkhansenbot mkhansenbot force-pushed the feat/lunar_pole_exploration_rover branch from a7b581e to a0a14d4 Compare September 9, 2024 17:56
@RBinsonB RBinsonB force-pushed the feat/lunar_pole_exploration_rover branch from 0820a6f to 9448fb0 Compare September 10, 2024 19:51
@RBinsonB RBinsonB changed the title NASA_Challenge_[@RBinsonB]_[Lunar Pole Exploration Rover & Plugins] NASA_Challenge_[@RBinson]_[Lunar Pole Exploration Rover & Plugins] Sep 11, 2024
@RBinsonB
Copy link
Copy Markdown
Author

@mkhansenbot the docker builds on my machine, can we try again on the CI?

@Bckempa Bckempa added the Summer Sprint NASA Space ROS Sim Summer Sprint Challenge 2024 label Sep 15, 2024
@dsobek
Copy link
Copy Markdown
Contributor

dsobek commented Feb 19, 2026

@ivanperez-keera to review this PR.

@dsobek
Copy link
Copy Markdown
Contributor

dsobek commented Feb 19, 2026

@asimonov to review as well.

@ivanperez-keera ivanperez-keera self-requested a review March 5, 2026 15:19
@ivanperez-keera ivanperez-keera force-pushed the feat/lunar_pole_exploration_rover branch 2 times, most recently from f8e1718 to c96082d Compare March 5, 2026 15:24
@ivanperez-keera
Copy link
Copy Markdown
Contributor

Currently reviewing this.

@ana-GT Given your comments in #134:

Is there anything broken in this PR as is?

If not, does it make sense to merge it as is and then file a separate PR for any improvements you have as part of #134?

Happy to talk in a call if that's easier.

This commit adds a lunar pole exploration rover demo modelled on NASA's VIPER
mission, including a simulated rover model, and world and ground models to
simulate the Mons Mouton.

The commit also adds Gazebo plugins to simulate power generation and
consumption in space robotics, which the simulation above uses. Plugins
include:

- A solar panel plugin to simulate power generation from the sun according to
  occlusion and angle between the sun and the panel.

- A radioisotope thermal generator plugin to simulate the constant power from a
  radioisotope thermal generator.

- A modified version of the linear battery plugin that is able to take as
  charge input the power outputs of the two previous plugins.

- A sensor power load system plugin to simulate the power drawn by sensors

Documentation, as well as a dockerfile to help build and try this demo, are
included.

Co-authored-by: stevedan <stevedan.o.omodolor@gmail.com>
@ivanperez-keera ivanperez-keera force-pushed the feat/lunar_pole_exploration_rover branch from c96082d to 6cdb761 Compare March 5, 2026 15:29
@ana-GT
Copy link
Copy Markdown
Contributor

ana-GT commented Mar 11, 2026

Hi Ivan,

I don't think the original PR is broken but for sure it is outdated (and takes a while to build). I went ahead and updated it so it works with the (1) latest space-ros jazzy version, the current Gazebo, and (2) It follows the current setup/format for demos that uses docker compose.

The only hiccup I have noticed is that the Solar Panel plugin crashes if you have more than one running. The Viper robot model has 3 solar panels, so if you add the 3 plugins, there is a crash. One of my colleagues tried to fix it but without luck. I'll take another look at it today and if I am able to fix it, I'll write back.

PS.- Happy to hop in a call if needed, but first I want to give one last shot to fix that Solar Plugin thing. I'd like to have them all working, as in the original PR.

@ana-GT
Copy link
Copy Markdown
Contributor

ana-GT commented Mar 12, 2026

Hi @ivanperez-keera , okay, I took a look at this again. As I said, the only issue I was having was that the solar plugins were crashing in my machine. I fixed that by moving some calculations from the PostUpdate function to OnRender in the plugin, since there were some render-related threading issues.

In summary: Our branch https://github.com/traclabs/demos/tree/viper_sync has updates that build on top of the original work of RBinson and allows a user to:

  1. Start a GUI and demo containers that follow the format/convention that has been adopted for the canadarm2/rover examples. Most significant I think is that - from what I can tell - the simulation package is no longer used.
  2. Fixed SolarPlugin, which was crashing when running it in Jazzy.
  3. Added a SolarPanel's state interface so the robot can be visualized in Rviz correctly.
  4. Updated the solar panel mesh a bit so it looks a bit more homogeneous (blue squares of the same color, separated by thin black lines).

Video below shows my running the demo (using ./run.sh after running ./build.sh first), making the robot turn around, and visualizing the solar panel topic in a terminal. I'd be happy to send a PR if needed. If there are more changes/edits you'd like to do, I am also happy if anybody just grab our changes and incorporate them in whatever way you see fit. We are using our forked version for a current project and so far we are thankfully not having any issues, so I think the code should be good to go.

2026_03_12_test_lunar_exploration_rover_hb.mp4

@ivanperez-keera
Copy link
Copy Markdown
Contributor

Note that this would have to be changed in this PR before the final merge:

  demos:                                                                         
    type: git                                                                    
    url: https://github.com/RBinsonB/demos.git                                   
    version: feat/lunar_pole_exploration_rover                                   
  simulation:                                                                    
    type: git                                                                    
    url: https://github.com/RBinsonB/simulation.git                              
    version: feat/lunar_pole_exploration_rover 

That should point to the space-ros org.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Summer Sprint NASA Space ROS Sim Summer Sprint Challenge 2024

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants