Skip to content

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

Merged
ivanperez-keera merged 1 commit into
space-ros:mainfrom
RBinsonB:feat/lunar_pole_exploration_rover
Jul 7, 2026
Merged

NASA_Challenge_[@RBinson]_[Lunar Pole Exploration Rover & Plugins]#43
ivanperez-keera merged 1 commit into
space-ros:mainfrom
RBinsonB:feat/lunar_pole_exploration_rover

Conversation

@RBinsonB

@RBinsonB RBinsonB commented Sep 6, 2024

Copy link
Copy Markdown
Contributor

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
Contributor 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

dsobek commented Feb 19, 2026

Copy link
Copy Markdown

@ivanperez-keera to review this PR.

@dsobek

dsobek commented Feb 19, 2026

Copy link
Copy Markdown

@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.

@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

ana-GT commented Mar 11, 2026

Copy link
Copy Markdown
Contributor

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

ana-GT commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

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.

@ivanperez-keera

Copy link
Copy Markdown
Contributor

Some of these images are a bit large. They can easily be reduced in size by converting them to JPG (I'm seeing a 50% reduction in size). They could also be modified to used an indexed palette instead of RGB, although there is some quality loss if we do that.

@ivanperez-keera
ivanperez-keera force-pushed the feat/lunar_pole_exploration_rover branch 2 times, most recently from 12133c7 to fe807f2 Compare May 1, 2026 14:52
@ivanperez-keera
ivanperez-keera force-pushed the feat/lunar_pole_exploration_rover branch from fe807f2 to 9fc0f88 Compare June 4, 2026 07:29
@ivanperez-keera

ivanperez-keera commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

I reviewed this demo again. I added a few commits to the PR that fix issues I found.

Unlike other demos, this PR adds the demos repo using vcs. That also means that it adds all demos, which leads to all demos in the repo being built by default.

I added a commit that makes other demos be ignored, but it's very fragile. We probably want to change that before merging this.

There'll be several pending items, which I'd like to defer to future tickets:

  • Update demo to Jazzy. @ana-GT has a fix for that.
  • Update demo to use new build system for Space ROS demos. @mkhansenbot may know what needs to be done here.

@ivanperez-keera
ivanperez-keera force-pushed the feat/lunar_pole_exploration_rover branch 2 times, most recently from 769b36f to e2223a7 Compare June 17, 2026 13:07

@ivanperez-keera ivanperez-keera left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This contribution builds and runs for me. I can move the rover.

I have reviewed and adjusted this PR, adjusted the size of images, fixed the Dockerfile, and revised the README and the commit history.

I believe it's ready to be integrated.

We'd need to merge the accompanying PR in the simulation repo first.

@ivanperez-keera ivanperez-keera self-assigned this Jun 17, 2026
@ivanperez-keera ivanperez-keera added this to the jazzy-2026.07.0 milestone Jun 17, 2026
@ivanperez-keera

Copy link
Copy Markdown
Contributor

Something needs to change here. Changing the resources to use lfs in the simulation repo broke the demo. Working on this.

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 e2223a7 to 4712dea Compare June 25, 2026 16:52
@ivanperez-keera

Copy link
Copy Markdown
Contributor

I was able to build this and run it. I've merged the corresponding issue in the simulation repo and I'm in the process of re-building this and merging this now.

@ivanperez-keera

ivanperez-keera commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

This image works correctly when built locally.

image

Checking CI issues now.

@asimonov asimonov left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i cannot build original PR as I am on arm64.

but i can build @ana-GT upgraded version based on jazzy. it builds and I can run the rover inside Gazebo GUI.

@ivanperez-keera

Copy link
Copy Markdown
Contributor

Blocked by: space-ros/simulation#42

@ivanperez-keera
ivanperez-keera force-pushed the feat/lunar_pole_exploration_rover branch from 1b5e780 to 4712dea Compare July 7, 2026 03:43
@ivanperez-keera
ivanperez-keera merged commit c5e4784 into space-ros:main Jul 7, 2026
19 of 22 checks passed
@github-project-automation github-project-automation Bot moved this from In Review to Done in Space ROS Project Development Jul 7, 2026
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

Status: Done

Development

Successfully merging this pull request may close these issues.

6 participants