Posted on: Nov 20 2012, 06:58 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
Would discussion of this relatively recently published paper be banned here due to potential astrobiology content? |
Forum: Forum Guide · Post Preview: #194579 · Replies: 130 · Views: 758332 |
Posted on: Sep 6 2012, 04:31 AM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
I don't remember an anagylph of the rover with the +6 and +12 day HiRISE images: http://www.uahirise.org/ESP_028335_1755 http://www.uahirise.org/ESP_028401_1755 Very nice Mark! Which images did you use as source images? I followed the links but there are many different types of images and I'm not sure which ones to use to make my own. |
Forum: MSL · Post Preview: #190702 · Replies: 1152 · Views: 911278 |
Posted on: Aug 27 2012, 02:43 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
|
Forum: MSL · Post Preview: #190028 · Replies: 307 · Views: 414572 |
Posted on: Aug 27 2012, 03:32 AM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
Here's version 2.0 of my Navcam download tool, which simplifies the process of downloading multiple left/right stereo image pairs and creating stereoscopic images. This version includes a GUI and supports anaglyph as well as SBS stereoscopic 3D images, a horizontal image offset, a function to find the latest sol number, and a few other changes and additions. A windows executable is attached and the source is below. Here are the links to StereoPhoto Maker and AutoIt. Thanks again jmknapp for http://curiositymsl.com. After downloading the image pairs and creating the script file, run StereoPhoto Maker, select File, Multi conversion from list, select the script file, the output image type, and then click the Convert Files button. Screenshot CODE ; This script processes all full frame MSL Navcam images using jmknapp's http://curiositymsl.com, downloads only full frame LR pairs (if not downloaded already) and creates a StereoPhoto Maker script file ; version 2.0, 20120826 ; UMSF: 3d_mars #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=navcam_download.exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <ProgressConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <file.au3> #include <array.au3> #Region ### START Koda GUI section ### Form=navcam_sbs.kxf $Form_Navcam = GUICreate("MSL Navcam Image Download and Script Generator", 569, 400, 368, 376) $SetFont = GUISetFont(9) $Label_Title = GUICtrlCreateLabel("This app downloads MSL Navcam full frame stereo pairs and exports a StereoPhoto Maker script for generating stereoscopic images. NOTE: Only matching left/right image pairs will be downloaded.", 24, 8, 521, 55) $Label_Input_Sol_Number_Text= GUICtrlCreateLabel("Input Sol", 24, 72, 86, 17, $SS_CENTERIMAGE) $Input_Sol = GUICtrlCreateInput("1", 90, 71, 105, 21) $Button_Prev_Sol = GUICtrlCreateButton("Prev Sol", 235, 69, 65, 25) $Button_Next_Sol = GUICtrlCreateButton("Next Sol", 300, 69, 65, 25) $Button_GetLatestSol = GUICtrlCreateButton("Get Latest Sol", 385, 69, 105, 25) $Checkbox_Create_Scriptfile = GUICtrlCreateCheckbox("Create StereoPhoto Maker script file", 24, 100, 270, 17) GUICtrlSetState($Checkbox_Create_Scriptfile, $GUI_CHECKED) $Checkbox_download_images = GUICtrlCreateCheckbox("Download Images", 24, 123, 130, 17) GUICtrlSetState($Checkbox_download_images, $GUI_CHECKED) $Input_Image_Path = GUICtrlCreateInput("Path to save images", 24, 150, 420, 21) GUICtrlSetTip($Input_Image_Path, "Input path to save images and script file") $Button_Browse = GUICtrlCreateButton("Browse...", 450, 148, 81, 25) $Label_hOffset = GUICtrlCreateLabel("Horizontal image offset", 24, 185, 160, 17) $Input_hOffset = GUICtrlCreateInput("-160", 180, 185, 86, 20) $Button_Start = GUICtrlCreateButton("Start", 24, 224, 65, 25) $Progressbar = GUICtrlCreateProgress(24, 264, 249, 17, $WS_BORDER) ;GUICtrlCreateLabel("text", left, top, width, height) $Label_Total_Image_Text = GUICtrlCreateLabel("Total Images:", 29, 304, 93, 17) $Label_Total_Image_Count = GUICtrlCreateLabel("0", 139, 304, 50, 17) $Label_Total_New_Image_Text = GUICtrlCreateLabel("Total New Images:", 29, 328, 107, 17) $Label_Total_New_Image_Count = GUICtrlCreateLabel("0", 139, 328, 50, 17) $Label_Status_Text = GUICtrlCreateLabel("Status:", 29, 368, 37, 17) $Label_Status = GUICtrlCreateLabel(" ", 71, 368, 400, 17, $SS_SUNKEN) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### ; read settings from ini Global $sIniFile = @ScriptDir & "\navcam_sbs.ini" ;IniRead(filename,section,key,default) GUICtrlSetData($Input_Sol, IniRead($sIniFile, "Sol", 0, "1")) GUICtrlSetData($Input_Image_Path, IniRead($sIniFile, "Image_Path", 1, "Input save path")) GUICtrlSetData($Input_hOffset, IniRead($sIniFile, "hOffset", 2, "-160")) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _Shutdown() Exit Case $Button_GetLatestSol GetLatestSol() Case $Button_Next_Sol Next_Sol() Case $Button_Prev_Sol Prev_Sol() Case $Button_Browse _Browse() Case $Button_Start _Start() EndSwitch WEnd Func GetLatestSol() $jplsite_file = @TempDir & "\jplsite.txt" ;dump site into file $return = InetGet("http://mars.jpl.nasa.gov/msl/multimedia/raw/?s=", $jplsite_file, 1, 0) ;read file into array Local $jplsite If Not _FileReadToArray($jplsite_file, $jplsite) Then MsgBox(4096, "Error", " Error importing from file to Array error:" & @error) Exit EndIf While 1 ;search array for latest sol number $index = _ArraySearch($jplsite, "Total for Sol",0,0,0,1) If $index = -1 Then MsgBox(0,"","no match for sol number on JPL site") ExitLoop EndIf $jplsite_foundline = $jplsite[$index] ExitLoop WEnd $solstrt = StringInStr($jplsite_foundline,"Total for Sol") $solend = StringInStr($jplsite_foundline,": ") $sol_latest = StringMid($jplsite_foundline,$solstrt+14,$solend-$solstrt-14) GUICtrlSetData($Input_Sol,$sol_latest) EndFunc Func Next_Sol() $sol_num=GUICtrlRead($Input_Sol,1) $sol_num += 1 GUICtrlSetData($Input_Sol,$sol_num) EndFunc Func Prev_Sol() $sol_num=GUICtrlRead($Input_Sol,1) $sol_num -= 1 if $sol_num < 1 then $sol_num = 1 GUICtrlSetData($Input_Sol,$sol_num) EndFunc Func _Browse() $sol=GUICtrlRead($Input_Sol,1) ;choose path and file name for images and generated StereoPhoto Maker script file Local $MyDocsFolder = "::{450D8FBA-AD25-11D0-98A8-0800361B1103}" Local $StereoPhoto_script_file = FileSaveDialog("Choose a path and filename for images and image list:", $MyDocsFolder, "Text Files (*.txt)", 2, "navcam_sol_" & $sol & ".txt") ; option 2 = dialog remains until valid path/file selected GUICtrlSetData($Input_Image_Path,$StereoPhoto_script_file) EndFunc Func _Start() ; start a loop so the function can be aborted at any point Do GUICtrlSetData($Label_Total_Image_Count,0) GUICtrlSetData($Label_Total_New_Image_Count,0) GUICtrlSetData($progressbar, 0) $sol=GUICtrlRead($Input_Sol,1) $hOffset=GUICtrlRead($Input_hOffset,1) ; create temp filename for listing all URLs for a given sol ; example: c:\users\username\appdata\local\temp\URLs_sol_1.txt $URL_list_file=@TempDir & "\URLs_sol_" & $sol & ".txt" ; download image URL list to text file ; InetGet option syntax: URL, filename, 1=force reload, 0=wait for download GUICtrlSetData($Label_Status,"Download URLs") InetGet("http://curiositymsl.com/cgi-bin/getfiles.cgi?sol=" & $sol, $URL_list_file,1,0) ; if no URLs found then abort $URL_list_size=FileGetSize($URL_list_file) If $URL_list_size = 0 Then GUICtrlSetData($Label_Status,"No URLs found") ExitLoop EndIf ; read URL list and import to array ; note: $allURLs[0] contains the number of records read into the array. GUICtrlSetData($Label_Status,"Read URLs into array") Local $allURLs If Not _FileReadToArray($URL_list_file, $allURLs) Then MsgBox(4096, "Error", " Error importing from file to Array error:" & @error) ;Exit EndIf ; search for Navcam full frame (*EDR_F*) (exclude thumbnails) into new array $allframes which contains only image URLs we care about ; Navcam full frame example URLs: ; http://mars.jpl.nasa.gov/msl-raw-images/pr...AUT_04096M_.JPG ; http://mars.jpl.nasa.gov/msl-raw-images/pr...AUT_04096M_.JPG ; declare large array instead of resizing array multiple times, uses very little RAM Local $allframes[9999]=[0] GUICtrlSetData($Label_Status,"Search for Navcam full frame images") $x = 1 For $URL in $allURLs ;check for Navcam full frame If StringInStr($URL,"EDR_F") Then $allframes[$x]=$URL $x += 1 EndIf Next ;record total number of frames $allframes[0]=$x - 1 ; read allframes to find matching left/right pairs ; insert into new arrays $leftframe_Nav, $rightframe_Nav Local $leftframe_Nav[9999]=[0] Local $rightframe_Nav[9999]=[0] Local $leftframe_counter = 0 Local $rightframe_counter = 0 GUICtrlSetData($Label_Status,"Search for Left and Right frames") For $x = 1 to $allframes[0] If StringInStr($allframes[$x],"NLA_") Then ;left frame found, store in $leftframe_Nav array $leftframe_counter += 1 $leftframe_Nav[$leftframe_counter]=$allframes[$x] $leftframe_Nav[0]=$leftframe_counter ElseIf StringInStr($allframes[$x],"NRA_") Then ;right frame found, store in $rightframe_Nav array $rightframe_counter += 1 $rightframe_Nav[$rightframe_counter]=$allframes[$x] $rightframe_Nav[0]=$rightframe_counter EndIf Next ; if no left full frames then abort and exit If $leftframe_counter == 0 Then ;MsgBox(0, "", "No frames found") GUICtrlSetData($Label_Status,"No full frames found") EndIf ; using lists of left and right frames, find matches and save output Local $right_matching_frame_number[9999]=[0] Local $StereoPhoto_script_lines[9999]=[0] Local $URL_left_temp, $left_image_file_name, $URL_right_temp, $right_image_file_name, $left_image_full_path, $right_image_full_path GUICtrlSetData($Label_Status,"Find Left/Right frame matches") For $x = 1 to $leftframe_Nav[0] ;extract frame number $leftframe_image_number=StringMid($leftframe_Nav[$x],StringInStr($leftframe_Nav[$x],"NLA_")+4,9) ; returns -1 if no match found $right_matching_frame_number[$x] = _ArraySearch($rightframe_Nav, $leftframe_image_number, 0, 0, 0, 1) ; update progress bar Local $Percent = ($x / $leftframe_Nav[0] ) * 100 GUICtrlSetData($progressbar, $Percent) ; download left and right images If $right_matching_frame_number[$x] <> -1 Then ; increment total image counter (+2 because left and right frames found) GUICtrlSetData($Label_Total_Image_Count,GUICtrlRead($Label_Total_Image_Count,1) + 2) ; find the file names $URL_left_temp = StringSplit($leftframe_Nav[$x], "/") $left_image_file_name = $URL_left_temp[UBound($URL_left_temp)-1] $URL_right_temp = StringSplit($rightframe_Nav[$right_matching_frame_number[$x]], "/") $right_image_file_name = $URL_right_temp[UBound($URL_right_temp)-1] ; create full path names $left_image_full_path=@WorkingDir & "\" & $left_image_file_name $right_image_full_path=@WorkingDir & "\" & $right_image_file_name ; build array for StereoPhoto Maker script file $StereoPhoto_script_lines[$x]="21,0,0," & $hOffset & ",0," & $left_image_full_path & "," & $right_image_full_path & ",," ; download the images ; if the file already exists don't download it again If Not FileExists($left_image_full_path) Then ; increment total new image counter GUICtrlSetData($Label_Total_New_Image_Count,GUICtrlRead($Label_Total_New_Image_Count,1) + 1) If GUICtrlRead($Checkbox_download_images) = $GUI_CHECKED Then InetGet($leftframe_Nav[$x],$left_image_full_path,1,0) EndIf If Not FileExists($right_image_full_path) Then ; increment total new image counter GUICtrlSetData($Label_Total_New_Image_Count,GUICtrlRead($Label_Total_New_Image_Count,1) + 1) If GUICtrlRead($Checkbox_download_images) = $GUI_CHECKED Then InetGet($rightframe_Nav[$right_matching_frame_number[$x]],$right_image_full_path,1,0) EndIf EndIf Next GUICtrlSetData($Label_Status,"Processing complete") If GUICtrlRead($Checkbox_Create_Scriptfile) = $GUI_CHECKED Then GUICtrlSetData($Label_Status,"Save script file") $StereoPhoto_script_file=GUICtrlRead($Input_Image_Path,1) ; write StereoPhoto Maker script file Local $hFile = FileOpen($StereoPhoto_script_file, 2) ; 2 = erase previous _FileWriteFromArray($StereoPhoto_script_file, $StereoPhoto_script_lines, 1) ; 1 = index to start FileClose($hFile) GUICtrlSetData($Label_Status,"Script file saved") EndIf ExitLoop ; end function loop Until 1 ; open StereoPhoto Maker, File menu, multi conversion from list... EndFunc Func _Shutdown() ; save settings to ini IniWrite($sIniFile, "Sol", 0, GUICtrlRead($Input_Sol)) IniWrite($sIniFile, "Image_Path", 1, GUICtrlRead($Input_Image_Path)) IniWrite($sIniFile, "hOffset", 2, GUICtrlRead($Input_hOffset)) EndFunc |
Forum: MSL · Post Preview: #190006 · Replies: 373 · Views: 240680 |
Posted on: Aug 23 2012, 05:29 AM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
|
Forum: MSL · Post Preview: #189528 · Replies: 307 · Views: 414572 |
Posted on: Aug 22 2012, 07:25 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
|
Forum: MSL · Post Preview: #189483 · Replies: 307 · Views: 414572 |
Posted on: Aug 21 2012, 02:48 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
|
Forum: MSL · Post Preview: #189340 · Replies: 307 · Views: 414572 |
Posted on: Aug 18 2012, 03:31 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
How does it register two images if the images are of different sizes, and/or slanted at a different angles? Here is a link to the documentation. The page that specifically answers your question is here. |
Forum: Image Processing Techniques · Post Preview: #189016 · Replies: 9 · Views: 18116 |
Posted on: Aug 17 2012, 05:52 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
As I mentioned in the other thread I've owned the Sony HMZ-T1 (retail $799) for several months. I've used it to view MER and MSL images with spectacular results. Rocks "pop" out from the surface and the images are much more pleasant to view. The terrain seems real and tangible. For me the biggest advantage of this unit over other 3D display technologies are the high quality OLED displays, one for each eye. Since each eye has a dedicated display there is no ghosting typical with single display units. The displays are very bright, with deep color and CRT-level blacks. In addition to displaying 3D images, I've also used it with google maps and flight simulators, and to play a variety of games and 3D movies on both PC and PS3. The disadvantages of this unit are price, weight, and comfort. For many people it is too heavy to wear for extended periods of time. I solved this problem with a suspension system which allows me to wear it for hours with no discomfort. Another disadvantage is the experience cannot be shared without removing the unit to give to someone else to wear. |
Forum: Image Processing Techniques · Post Preview: #188904 · Replies: 21 · Views: 26917 |
Posted on: Aug 17 2012, 02:40 PM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
I had to look up what SBS stereo is (but hey, I can't even find my red-blue glasses to see some of the probably amazing anaglyph efforts here). So I take it that you need to have some expensive headgear like the Sony you mentioned to view them ($800) or at least shutter glasses and a special monitor? I wonder what the cheapest entry point is. I mentioned the hardware as an aside and I don't want to diverge too much from the main purpose of this thread, so allow me to just say that any effort you put into viewing these images in 3D will be worth it, trust me. The Mars landscape comes to life in 3D, and with MSL we have many different 3D image sources. Thank you again MSSS! |
Forum: MSL · Post Preview: #188887 · Replies: 373 · Views: 240680 |
Posted on: Aug 17 2012, 03:59 AM | |
Newbie ![]() Group: Members Posts: 11 Joined: 12-August 12 Member No.: 6550 ![]() |
First post. Here's a small script I wrote to automatically process left and right full frame Navcam image pairs into SBS stereoscopic images. Thanks go to jmknapp for his image list service, http://curiositymsl.com. I originally intended to automate the full process, from downloading the images to creating the final SBS output, but then I realized that I may want to process the images a bit before the final step. I use the free StereoPhoto Maker to create the final images. It's a windows app which is why I chose to write this in AutoIt (also free). BTW, the images are PHENOMENAL when viewed with the Sony HMZ-T1. I purchased this hardware a few months ago in anticipation of this mission (and other 3D applications), and I've been extremely pleased with the quality of the high contrast dual OLED displays, which present a ghost-free stereo image. CODE #include <file.au3> ; for _filereadtoarray #include <Array.au3> ; for _arraydisplay ; 20120816, version 0.1 ; This script processes all full frame Navcam images using jmknapp's http://curiositymsl.com, downloads only full frame LR pairs (if not downloaded already) and creates a StereoPhoto script file ; (todo) Also process Mastcam images ; 3d_mars ; prompt user for sol number to retrieve, $sol Local $sol = InputBox("Sol Number", "Input Sol Number:") If @error Then Exit ; create temp file for listing all URLs for a given sol ; example: c:\users\username\appdata\local\temp\URLs_sol_1.txt $URL_list_file=@TempDir & "\URLs_sol_" & $sol & ".txt" ; download image URL list to text file ; InetGet option syntax: URL, filename, 1=force reload, 0=wait for download InetGet("http://curiositymsl.com/cgi-bin/getfiles.cgi?sol=" & $sol, $URL_list_file,1,0) ; read URL list and import to array ; note: $allURLs[0] contains the number of records read into the array. Local $allURLs If Not _FileReadToArray($URL_list_file, $allURLs) Then MsgBox(4096, "Error", " Error importing from file to Array error:" & @error) Exit EndIf ; search for Navcam full frames (*EDR_F*) insert into new array $allframes ; Navcam full frame example URLs: ; http://mars.jpl.nasa.gov/msl-raw-images/pr...AUT_04096M_.JPG ; http://mars.jpl.nasa.gov/msl-raw-images/pr...AUT_04096M_.JPG ; declare large array instead of resizing array multiple times, uses very little RAM Local $allframes[9999]=[0] $x = 1 For $URL in $allURLs ;check for Navcam full frame If StringInStr($URL,"EDR_F") Then $allframes[$x]=$URL $x += 1 EndIf Next ;record total number of frames $allframes[0]=$x - 1 ; read allframes to find matching left/right pairs ; insert into new arrays $leftframe_Nav, $rightframe_Nav Local $leftframe_Nav[9999]=[0] Local $rightframe_Nav[9999]=[0] Local $leftframe_counter = 0 Local $rightframe_counter = 0 For $x = 1 to $allframes[0] If StringInStr($allframes[$x],"NLA_") Then ;left frame found, store in $leftframe_Nav array $leftframe_counter += 1 $leftframe_Nav[$leftframe_counter]=$allframes[$x] $leftframe_Nav[0]=$leftframe_counter ElseIf StringInStr($allframes[$x],"NRA_") Then ;right frame found, store in $rightframe_Nav array $rightframe_counter += 1 $rightframe_Nav[$rightframe_counter]=$allframes[$x] $rightframe_Nav[0]=$rightframe_counter EndIf Next ; if no left full frames then abort and exit If $leftframe_counter == 0 Then MsgBox(0, "", "No Navcam full frames found") Exit EndIf ;choose path and file name for images and generated StereoPhoto Maker script file Local $MyDocsFolder = "::{450D8FBA-AD25-11D0-98A8-0800361B1103}" Local $StereoPhoto_script_file = FileSaveDialog("Choose a path and filename for images and StereoPhoto Maker script file:", $MyDocsFolder, "Text Files (*.txt)", 2, "navcam_sbs_sol_" & $sol & ".txt") ; option 2 = dialog remains until valid path/file selected If @error Then MsgBox(4096, "", "Save cancelled.") EndIf ; using lists of left and right frames, find matches and save output Local $right_matching_frame_number[9999]=[0] Local $StereoPhoto_script_lines[9999]=[0] Local $URL_left_temp, $left_image_file_name, $URL_right_temp, $right_image_file_name, $left_image_full_path, $right_image_full_path For $x = 1 to $leftframe_Nav[0] ;extract frame number $leftframe_image_number=StringMid($leftframe_Nav[$x],StringInStr($leftframe_Nav[$x],"NLA_")+4,9) ; returns -1 if no match found $right_matching_frame_number[$x] = _ArraySearch($rightframe_Nav, $leftframe_image_number, 0, 0, 0, 1) ; download left and right images If $right_matching_frame_number[$x] <> -1 Then ; find the file names $URL_left_temp = StringSplit($leftframe_Nav[$x], "/") $left_image_file_name = $URL_left_temp[UBound($URL_left_temp)-1] $URL_right_temp = StringSplit($rightframe_Nav[$right_matching_frame_number[$x]], "/") $right_image_file_name = $URL_right_temp[UBound($URL_right_temp)-1] ; create full path names $left_image_full_path=@WorkingDir & "\" & $left_image_file_name $right_image_full_path=@WorkingDir & "\" & $right_image_file_name ; build array for StereoPhoto Maker script file $StereoPhoto_script_lines[$x]="21,0,0,0,0," & $left_image_full_path & "," & $right_image_full_path & ",," ; download the images ; if the file already exists don't download it again If Not FileExists($left_image_full_path) Then InetGet($leftframe_Nav[$x],$left_image_full_path,1,0) EndIf If Not FileExists($right_image_full_path) Then InetGet($rightframe_Nav[$right_matching_frame_number[$x]],$right_image_full_path,1,0) EndIf EndIf Next ; write StereoPhoto Maker script file Local $hFile = FileOpen($StereoPhoto_script_file, 2) ; 2 = erase previous _FileWriteFromArray($StereoPhoto_script_file, $StereoPhoto_script_lines, 1) ; 1 = index to start FileClose($hFile) ; open StereoPhoto Maker, select File menu, select multi conversion from list... |
Forum: MSL · Post Preview: #188859 · Replies: 373 · Views: 240680 |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() |
Lo-Fi Version | Time is now: 29th March 2024 - 08:09 AM |
RULES AND GUIDELINES Please read the Forum Rules and Guidelines before posting. IMAGE COPYRIGHT |
OPINIONS AND MODERATION Opinions expressed on UnmannedSpaceflight.com are those of the individual posters and do not necessarily reflect the opinions of UnmannedSpaceflight.com or The Planetary Society. The all-volunteer UnmannedSpaceflight.com moderation team is wholly independent of The Planetary Society. The Planetary Society has no influence over decisions made by the UnmannedSpaceflight.com moderators. |
SUPPORT THE FORUM Unmannedspaceflight.com is funded by the Planetary Society. Please consider supporting our work and many other projects by donating to the Society or becoming a member. |
![]() |