Idea Chandrayaan-2, Vikram lander and Pragyan rover

Jeremyxxx

Active member
Joined
Jan 25, 2013
Messages
294
Reaction score
85
Points
43
Location
Dawson Springs
with the plans by the ISRO to launch Chandrayaan-2 to lunar orbit, as well as landing the Vikram lander and Pragyan rover in a high plain between two craters, Manzinus C and Simpelius N, at a latitude of about 70° south, an Addon for the mission will have to be made around mid-March.

This will include the recompile of the GSLV rocket into Orbiter 2016.

https://en.wikipedia.org/wiki/Chandrayaan-2
 

Sbb1413

Add-on developer and tester
Joined
Aug 14, 2018
Messages
947
Reaction score
367
Points
78
Location
India
Preferred Pronouns
he/his/him
I can help you with rockets only, not spacecraft. :(
 

Jeremyxxx

Active member
Joined
Jan 25, 2013
Messages
294
Reaction score
85
Points
43
Location
Dawson Springs
Thankfully, the help with the rocket would be nice... but the Lunar orbiter, lander and rover would have to be made by someone else.
 
Last edited:

4throck

Enthusiast !
Joined
Jun 19, 2008
Messages
3,502
Reaction score
991
Points
153
Location
Lisbon
Website
orbiterspaceport.blogspot.com
This is an old and primitive add-on, but you can use it if it helps in any way:
[ame="https://www.orbithangar.com/searchid.php?ID=3287"]Sriharikota base and updated PSLV & GSLV textures[/ame]
 

Sbb1413

Add-on developer and tester
Joined
Aug 14, 2018
Messages
947
Reaction score
367
Points
78
Location
India
Preferred Pronouns
he/his/him
Please be patient! I cannot help right now because I am looking for a YouTube converter.
 

gattispilot

Addon Developer
Addon Developer
Joined
Oct 17, 2007
Messages
7,546
Reaction score
1,702
Points
203
Location
Dallas, TX
Rover
CospvEl.jpg

rsZfhoF.jpg

Q8bFazf.jpg

It is in GV. But middle wheel doesn't spin and no way to open the panel
 
Last edited:

gattispilot

Addon Developer
Addon Developer
Joined
Oct 17, 2007
Messages
7,546
Reaction score
1,702
Points
203
Location
Dallas, TX
6QOFhnL.jpg

wsC3kbJ.jpg


Just need re-texture some spots. I think the only half side of panels is weird.

yCb2zf3.jpg
 
Last edited:

N_Molson

Addon Developer
Addon Developer
Donator
Joined
Mar 5, 2010
Messages
8,965
Reaction score
2,791
Points
203
Location
Toulouse
Looks pretty good, always good to have some probes and minirovers to send into space ! :hailprobe:
 

gattispilot

Addon Developer
Addon Developer
Joined
Oct 17, 2007
Messages
7,546
Reaction score
1,702
Points
203
Location
Dallas, TX
So in regular graphics the lander hops all around in d3d9 it seems stable.

I have run into a issue.
I tried to code the rover and it loads but the mesh is not seen. Nothing in the log to say module not loaded?

---------- Post added at 02:47 PM ---------- Previous post was at 08:03 AM ----------

nO IDEA WHY THIS ISN'T WORKING:
Code:
// ==============================================================
//                 ORBITER MODULE: MARKIXHAWK1
//                  Part of the ORBITER SDK
//          Copyright (C) 2002-2004 Martin Schweiger
//                   All rights reserved
//
// MARKIXHAWK1.cpp
// Control module for MARKIXHAWK1 vessel class
//

// ==============================================================
//#define STRICT
//#define ORBITER_MODULE

#include "orbitersdk.h"
#include "ParaRover.h"








VISHANDLE MainExternalMeshVisual = 0;




Para_rover::Para_rover(OBJHANDLE hObj, int fmodel)
: VESSEL3(hObj, fmodel)
{


	
	Height_From_Ground = -.111;




	DefineAnimations();


	

	
	

	




}

void Para_rover::clbkSetClassCaps(FILEHANDLE cfg) {
	// physical specs
	SetSize(1);
	SetEmptyMass(MASS);
	SetCW(0.9, 0.9, 2, 1.4);
	SetWingAspect(0.1);
	SetWingEffectiveness(0.1);
	SetCrossSections(_V(12.16, 15.99, 9.39));
	SetRotDrag(_V(0.1, 0.1, 0.1));
	if (GetFlightModel() >= 1) {
		SetPitchMomentScale(1e-4);
		SetBankMomentScale(1e-4);
	}
	SetPMI(_V(3.75, 3.48, 2.23));
	SetTrimScale(0.05);
	SetCameraOffset(_V(0, .7, 3.121));
	SetSurfaceFrictionCoeff(0.01, 0.75);
	TOUCHDOWNVTX td[4];
	double ro = Passo;
	double x_target = -0.5;
	double stiffness = (-1)*(MASS*9.80655) / (3 * x_target);
	double damping = 0.9*(2 * sqrt(MASS*stiffness));
	for (int i = 0; i<4; i++)
	{

		td[i].damping = damping;
		td[i].mu = 3;
		td[i].mu_lng = 3;
		td[i].stiffness = stiffness;
	}
	td[0].pos.x = cos(30 * RAD)*ro;
	td[0].pos.y = -Height_From_Ground;
	td[0].pos.z = -sin(30 * RAD)*ro;
	td[1].pos.x = 0;
	td[1].pos.y = -Height_From_Ground;
	td[1].pos.z = 1 * ro;
	td[2].pos.x = -cos(30 * RAD)*ro;
	td[2].pos.y = -Height_From_Ground;
	td[2].pos.z = -sin(30 * RAD)*ro;
	td[3].pos.x = 0;
	td[3].pos.y = 15 * ro;
	td[3].pos.z = 0;


	SetTouchdownPoints(td, 4);

	//SetTouchdownPoints(_V(0, -8.7, 10), _V(-1.6, -8.7, -10), _V(1.6, -8.7, -10));;
	LR2 = CreateAttachment(true, _V(0 ,- .1207033, - .4531974), _V(0, 1, 0), _V(0, 0, 1), "LANDER", false);

	


	

	SetMeshVisibilityMode(AddMesh(oapiLoadMeshGlobal("Par_rover")), MESHVIS_ALWAYS); //Main ship mesh


	

}

void Para_rover::clbkPreStep(double simt, double simdt, double mjd) {
	

}
void Para_rover::clbkPostStep(double simt, double simdt, double mjd) {

}

void Para_rover::DefineAnimations(void) {



}



// --------------------------------------------------------------
// Keyboard interface handPara_rover (buffered key events)
// --------------------------------------------------------------
int Para_rover::clbkConsumeBufferedKey(DWORD key, bool down, char *kstate) {
	// only process keydown events
	if (!down) return 0;
	

	return 0;
}






void Para_rover::clbkVisualCreated(VISHANDLE vis, int refcount) {
	MainExternalMeshVisual = GetMesh(vis, 0);
	// We warn the user, in the case UMmu isn't installed it's a good idea to send a "oapiDebugString"
	// Orbiter message, otherwise your addon will not be fully operational and user may not notice. 
	// (nobody read doc, you may be the only one, if you read this send me a postcard ;)

}

// ============================================================== 
// Visual destroyed
// ============================================================== 
void Para_rover::clbkVisualDestroyed(VISHANDLE vis, int refcount) {
	MainExternalMeshVisual = 0;
}

// ======================================================================== 
// clbkLoadState function of Orbiter - Save scenario when user exit Orbiter 
// ======================================================================== 
void Para_rover::clbkSaveState(FILEHANDLE scn)
{
	char cbuf[256];

	// ORBITER, default vessel parameters


	

	

	// ORBITER, default vessel parameters
	SaveDefaultState(scn);





	



	
}

// ======================================================================== 
// clbkLoadStateEx function of Orbiter - Load Orbiter scenario 
// ======================================================================== 
void Para_rover::clbkLoadStateEx(FILEHANDLE scn, void *status)
{
	char *line;
	while (oapiReadScenario_nextline(scn, line))
	{
		
		
		 {
			ParseScenarioLineEx(line, status);
			// unrecognised option - pass to Orbiter's generic parser
		}

		

		
	

	

	}
	
}


void Para_rover::clbkFocusChanged(bool getfocus, OBJHANDLE hNewVessel, OBJHANDLE hOldVessel) {
	// erase message if we focus to another vessel
	if (!getfocus) strcpy(oapiDebugString(), "");
}
h.
Code:
// ==============================================================
//                 ORBITER MODULE: LER2
//                  Part of the ORBITER SDK
//          Copyright (C) 2002-2004 Martin Schweiger
//                   All rights reserved
//
// LER2.cpp
// Control module for Para_rovervessel class
//
// Notes:
// This is an example for a "minimal" vessel implementation which
// only overloads the clbkSetClassCaps method to define vessel
// capabilities and otherwise uses the default VESSEL class
// behaviour.
// ==============================================================

//#ifndef __LER2_H
//#define __LER2_H


#include "orbitersdk.h"
// ==============================================================
// Some vessel parameters
// ==============================================================
const double MAXSPEED = 2.78; /* (2.78m/s = 10km/h) */
const double MASS = 4000;
const double FUELMASS = 10;
const double ISP = 5e7;
const double MAXMAINTH = 2500;
const double MAXRETROTH = 2500;
const double RCSISP = 5e7;
const double MAXRCSTH = 7500;






// Interface for derived vessel class: QJBStar
// ==========================================================

class Para_rover : public VESSEL3 {
public:
	Para_rover(OBJHANDLE hObj, int fmodel);
	~Para_rover();

	void clbkSetClassCaps(FILEHANDLE cfg);
	void clbkSaveState(FILEHANDLE scn);
	void clbkLoadStateEx(FILEHANDLE scn, void *status);
	int clbkConsumeBufferedKey(DWORD key, bool down, char *kstate);
	void clbkVisualCreated(VISHANDLE vis, int refcount);
	void DefineAnimations(void);
	void clbkVisualDestroyed(VISHANDLE vis, int refcount);
	void clbkPostStep(double simtt, double simdt, double mjd);
	void clbkFocusChanged(bool getfocus, OBJHANDLE hNewVessel, OBJHANDLE hOldVessel);

	void clbkPreStep(double simt, double simdt, double mjd);







private:

	ATTACHMENTHANDLE  LR2;
	double Max_Steering_Angle, Height_From_Ground, Passo, TURN_proc;
	//bool FWD, BWD, LFT, RGT;
	VESSELSTATUS2 vs2;
	double targetSpeed, CurrentSpeed;
	double currentSpeed, wheelspin;
	UINT  vcMeshUINT, meshi_Vessel, meshi_VC, meshi_VC1,STOWEDMESH;
	UINT   anim_MIDDLEWHEELLEFT, anim_REARWHEELLEFT,  anim_FRONTWHEELLEFT;
	UINT   anim_MIDDLEWHEELRIGHT, anim_REARWHEELRIGHT, anim_FRONTWHEELRIGHT;
	MESHHANDLE  meshhg_Vessel, meshhg_VC;
	int CAM, lighton, FORWARDgear, REVERSEgear, neutralgear, cameragear, LASTGEAR;


	int whichap,STOW;

	int whichone, do_attach, first_time, f8, liftpad;
	int APSel;
	double apd, pit2, pos, main_on, retro_on, HGA_ANGLE_proc, HGARAISE_proc;
	






	



};

//#endif // !__LER2_H

COMPILES GOOD but no mesh is seen
Code:
VSOP87(B) Neptune: Precision 1e-006, Terms 391/2024
000000.000: Finished initialising world
000000.000: Finished initialising status
000000.000: Finished initialising camera
000000.000: Finished setting up render state
D3D9: ERROR: Base Object 0x28A97118 = 'Tranquility Base' not cataloged
D3D9: ERROR: Base Object 0x28A974A0 = 'MoonbaseAlpha1' not cataloged
D3D9: ERROR: Base Object 0x28A98D58 = 'Preary Base' not cataloged
D3D9: ERROR: Base Object 0x28A9FF48 = 'UCGO Base Europa' not cataloged
000000.000: D3D9: [Scene Initialized]
000000.000: Finished initialising panels
D3D9: ERROR: Configuration file not found for object 0x28A974A0
D3D9: ERROR: Configuration file not found for object 0x28A974A0
            D3D9: Loading Micro Textures for Moon
            D3D9: Level 0, D3D9Moon_A.dds, 42.0px/m, 48.8m, Mipmap count=12
            D3D9: Level 1, D3D9Moon_C2.dds, 6.0px/m, 341.3m, Mipmap count=12
            D3D9: Level 2, D3D9Moon_C.dds, 0.8px/m, 2560.0m, Mipmap count=12
            D3D9: Micro textures Loaded
000011.836: D3D9: [Session Closed. Scene deleted.]
000011.836: D3D9: [Destroy Render Window Called]
000011.836: **** Closing simulation session
D3D9: ERROR: Invalid Window !! RenderWndProc() called after calling clbkDestroyRenderWindow() uMsg=0x82


---------- Post added 08-26-19 at 05:12 AM ---------- Previous post was 08-25-19 at 02:47 PM ----------

Got the rover fixed. trying to get it attach to the lander and exit the craft
bUUwHA8.jpg


---------- Post added at 05:50 AM ---------- Previous post was at 05:12 AM ----------

I hope someone can see what is wrong. The attachment is good if I don't move it. But if I move the attachment with the animations then the rover spins fast.
Code:
arm1_tip[0] = _V(0, -.313, .65);
arm1_tip[1] = _V(0, -1, 0);
arm1_tip[2] = _V(0, 0, -1);
LR2 = CreateAttachment(false, _V(0, -.313, .65), _V(0, -1, 0), _V(0, 0, -1), "ROVER", false);
Code:
//RAMP
	anim_RAMP1 = CreateAnimation(0);
	anim_ROVERRAMP1 = CreateAnimation(0);

	static UINT RAMPGrp0[1] = { 69 };//ramp1
	static MGROUP_ROTATE RAMP1(0, RAMPGrp0, 1, _V(0, -.357, .87), _V(1, 0, 0), (float)(115 * RAD));
	parent = AddAnimationComponent(anim_RAMP1, 0, 1, &RAMP1);

	static UINT RAMPGrp1[4] = { 71,75,18,70 };//ramp2
	static MGROUP_ROTATE RAMP2(0, RAMPGrp1, 4, _V(0, .845, .911), _V(1, 0, 0), (float)(-180 * RAD));
	parent1 = AddAnimationComponent(anim_RAMP1, 0, 1, &RAMP2, parent);

	rms_anim[0] = new MGROUP_ROTATE(LOCALVERTEXLIST, MAKEGROUPARRAY(arm1_tip), 3, _V(0, -.313, .65), _V(1, 0, 0), (float)(115 * RAD)); // -447 .. +447
	hAC_ramp = AddAnimationComponent(anim_ROVERRAMP1, 0, 1, rms_anim[0], parent);

Code:
//RAMP1

	if (RAMP1_status >= DOOR_RAISING) {
		double da = simdt * LIFT_SPEED;
		if (RAMP1_status == DOOR_RAISING) {
			if (RAMP1_proc > 0.0) RAMP1_proc = max(0.0, RAMP1_proc - da);
			else RAMP1_status = DOOR_UP;
		}
		else {
			if (RAMP1_proc < 1.0) RAMP1_proc = min(1.0, RAMP1_proc + da);
			else RAMP1_status = DOOR_DOWN;
		}
		SetAnimation(anim_RAMP1, RAMP1_proc);
		SetAnimation(anim_ROVERRAMP1, RAMP1_proc);
	}
	
	xp2 = arm1_tip[1] - arm1_tip[0]; normalise(xp2);
	xr2 = arm1_tip[2] - arm1_tip[0]; normalise(xr2);
	SetAttachmentParams(LR2, arm1_tip[0], xp2, xr2);
 
Top