(* Well, "sols" technically. A day on Mars is 24 hours, 39 minutes and 35 seconds.)
On Feb. 18, 2021 at 3:55 p.m. EST, NASA’s Perseverance rover landed on Mars, completing a 127 million mile journey. Since landing in Jezero Crater, a 28-mile wide crater in Mars’ northern hemisphere, the two-ton rover has sent back over 340,000 incredible images from its 23 cameras – as well as the cameras on Ingenuity, its experimental quadcopter.
At the time, I was happy to see that the successful landing made a big splash in the media, and instantly cemented the mission as one of NASA’s most impressive exploratory accomplishments.
But after the media moved on to other stories, Perseverance just plugged along on Mars, and kept sending back a steady stream of the most incredible images of Mars’ rocky landscape that were seen by a much smaller group of people.
As a true Mars nerd, I keep a bookmark in my browser of NASA’s “raw images” gallery for the rover, and occasionally I will go through the pictures and just marvel at some of the features and landscapes that NASA dutifully shares with the world just after they have arrived from Mars. To have access to these images so quickly and easily makes me feel closer to this plucky car-sized robot, weathering one of the harshest environments we have engineered complex scientific instruments to operate in.
I didn’t want to miss any of the rusty vistas that Perseverance has sent home, so using NASA’s easy to use API, I downloaded all of the metadata for all of the images captured by the rover’s cameras from the date it landed, until October 17, 2022. The most striking landscapes were captured by the Mastcam-Z (left and right), so I just downloaded those. I ended up with a collection of 59,571 pictures taken on Mars.
I wanted to see the images in order, and to easily see when the photograph was taken. So using the photo metadata, I wrote some code to add a caption block to each image, noting the day of the mission (known as the “Sol”), the full date the picture was taken, and which camera was used, as well as NASA’s unique ID for each image.
All of the photos in one big-ass movie, with timestamps 👇🏻
I turned this sequence of images into a movie, paced long enough for you to get a good glimpse of each picture, without inducing a seizure. It's insanely long. The full sequence clocks in at 16 hours and 32 minutes, which is too long for YouTube, so I had to squeeze it down to about 12 hours. You can watch it while you are eating your lunch (or your next two weeks of lunches).
Think back to a memorable day in your life that has happened since Feb. 18, 2021. Scrub through the video to see what Perseverance was doing back on Mars on the same day (and let me know if anything particularly beautiful was photographed on your day).
The effect of watching this sequence is interesting to me, as interspersed with these grand landscapes, you have a lot of shots of the rover’s cool color calibration target (to ensure and calibrate accurate color), close inspection of the rover’s instruments such as its drill, the Sun overhead and tons of beautiful glitchy imaging artifacts. This is as close as you can get to feeling a bit of the rover’s experience to date over the course of the 590 days that it has spent exploring the Red Planet.
🪐 If you liked this project, you may also enjoy a similar thing I worked on back at The Wall Street Journal, where I downloaded all of the images of Saturn and its 62 moons from the Cassini probe. The published work took the form of a video (with some evocative music by “Explosions In The Sky”) that showed what small human things we were busy with back on Earth, next to the beautiful images the probe was capturing millions of miles away near Saturn.
For this post, I used NASA's which was really easy to work with. You just need a free API key. I wrote a node script to determine the list of dates I wanted to request metadata for, then generated a shell script to download each day's JSON file, with the date as the name.
I then used another Node script to walk through the JSON and only return the Mastcam Left and Right image URLs. I used this to generate a shell script to download all of the images using
Using some command line graphics (ImageMagick) I normalized the size of all of the images, placing the smaller ones centered on a black background, and I added a caption using the metadata JSON files.
Then I used
ffmpeg to render the video of the image sequence. The final MP4 weighs in at 29.79 GB.
This was kind of a pain to get every single frame to show up in the movie, so I'll share the
ffmpeg command in case this helps anyone. I first had to generate the list of frames, and set a 1 second duration for each image.
ffmpeg -f concat -i list.txt -s 1200x974 -b:v 4000k -minrate 4000k -maxrate 4000k -vcodec mpeg4 -r 10 -an 590-days.mp4
You can subscribe to our newsletter to get future posts delivered to your inbox for free. 👉🏻 📫 Subscribe now.
Sharing is caring
📣 If you think your followers or friends may like it, please consider sharing it.
🙋🏻♀️ If you have any suggestions, comments or requests, please email them to firstname.lastname@example.org
Thanks for reading!
- Jon Keegan (@jonkeegan)