Request Tianwen Mars Mission

I adjust the height and now we get this.
DrBrJL4.jpg

I still get a locked screen sometimes. It locks in debug too. So not sure what is going on with that?
 
Also, could someone make a quick scenario for a plausible reentry and landing test (taking into account Tianwen's current orbit, and the landing zone) ? I probably can do it but it would save some much needed coding/meshing time ! Just use a DG as a placeholder.

From NASA / NSSDCA :

The orbiter will use high-resolution cameras to search for the nominal landing site for the lander and rover. They will separate from the orbiter and make a landing somewhere in the Utopia Planitia region, currently scheduled for May 2021. The orbiter will then go into a 265 x 12,000 km altitude polar orbit, from which it will make scientific measurements and act as a relay for the rover communications with Earth.
 
I don't have an exact source for this, but I saw two landing location mentioned. Base definitions for both:

Code:
BASE-V2.0
Name = Tianwen-1_a
Location =  100 25.5
Size = 1000
ObjectSize = 100
MAPOBJECTSTOSPHERE = TRUE


BEGIN_OBJECTLIST
LPAD1
    POS 0 0 0
    SCALE 0
    ROT 0.000
    TEX Lpad01
END
END_OBJECTLIST

Code:
BASE-V2.0
Name = Tianwen-1_b
Location = 131 27
Size = 1000
ObjectSize = 100
MAPOBJECTSTOSPHERE = TRUE


BEGIN_OBJECTLIST
LPAD1
    POS 0 0 0
    SCALE 0
    ROT 0.000
    TEX Lpad01
END
END_OBJECTLIST
 
No sure what is going on with the rover. Here is a zip of the sdk and dll. You so can drive it. But something is wrong with the animation on the left turn.
 

Attachments

Where did they get that exact date (17. May) from? I can only find official statements saying "Mid May" so far.

...but my chinese-translation-foo might not be the strongest recently ;)
 
I don't think there is an official statement yet. I think they'll land the rover first, then if successful make a statement. What they said is that the landing window would be "between mid-May and mid-June".
 
More info about reentry and landing: https://twitter.com/MarsZhurong

E1Py60QXoAQ_T01

E1Py60NXsAA1Q68



Landing site is listed as 24.748N 110.318E.

Here's a map view of the area:

And a basic base definition:
Code:
BASE-V2.0
Name = Zhurong
Location = 110.318 24.748
Size = 1000
ObjectSize = 100
MAPOBJECTSTOSPHERE = TRUE




BEGIN_OBJECTLIST
LPAD1
    POS 0 0 0
    SCALE 0
    ROT 0.000
    TEX Lpad01
END
END_OBJECTLIST
 
Last edited:
Very useful info, thanks ! So it fires the descent engine below 1500 meters and hovers 100 meters above the surface, lower than I thought ! But thats logical the atmosphere is so thin you have to keep the parachute until the very last moment.

And the orbiter drops it on a reentry trajectory then fires again to get back in a high orbit where it can act as a relay, makes sense.

So I'll use those values as "targets" for the descent program, we'll see what comes out of it. The difficult thing will be to determine the initial polar orbit position in time, Ap/Pe/Inc are not a problem, but it has to match exactly the rotation of the planet to aim the landing site precisely.
 
Last edited:
The Tianwen-1 lander will be remembered as the first Chinese Mars lander to touchdown on the surface seemingly without incident.
 
Found some GIF images detailing how Zhurong deploys its camera mast, antenna, and solar panels from this editorial written in Mandarin, in addition to how it moves on the surface:
https://www.cnbeta.com/articles/science/1128229.htm

Full deployment...
86cac7e211ae1e5.gif

Camera mast/antenna only....
89049727296cc60.gif

Wheel movements...
f95e7f829781878.gif

0565ba2b6e3f877.gif
 
Last edited:
It seems like the orbiter must settle into a proper orbit before they can transmit images.
Makes sense, since it deorbited itself to deliver the lander. Also, I've only seen mention of a reception station outside China (on South America).
So in short they are waiting for favorable ground passes and earth reception opportunities. Perhaps a few more days.
 
Thanks to Kuddel I got a better/stable rover. I still have a rover animation issue.
{ if (TURN_proc > 1) TURN_proc = (TURN_proc - 1); else if (TURN_proc < 0) TURN_proc = (TURN_proc + 1); if (TURN_check == TURN_DOWN)TURN_proc = (TURN_proc + db); else if (TURN_check == TURN_UP)TURN_proc = (TURN_proc - db); else if (TURN_check == TURN_STOP)TURN_proc = TURN_proc; double ax14 = TURN_proc - rot; if (ax14 > 1) ax14 -= 1; else if (ax14 < 0) ax14 += 1; double ax36 = TURN_proc + rot; if (ax36 > 1) ax36 -= 1; else if (ax36 < 0) ax36 += 1; SetAnimation(anim_FRONTWHEELFRAMERIGHT, ax14); //SetAnimation(anim_axle2, TURN_proc); //SetAnimation(anim_REARWHEELFRAMERIGHT, ax36); SetAnimation(anim_FRONTLEFTWHEELFRAME, ax14); //SetAnimation(anim_axle5, TURN_proc); //SetAnimation(anim_REARWHEELFRAME, ax36); //sprintf(oapiDebugString(), "ax14:%04d TURN:%04d ROT:%04d", ax14, TURN_proc, rot); }
left whhel frame
static UINT FRONTWHEELFRAMEGrp1[1] = { GRP_FRONTLEFTAXLE };//LEFTFRONTWHEELFRAME rms2_anim[4] = new MGROUP_ROTATE(0, FRONTWHEELFRAMEGrp1, 1, _V(-.461, -.224, .62), _V(0, 1, 0), (float)(90 * RAD)); // -2 .. +145 anim_FRONTLEFTWHEELFRAME = CreateAnimation(0.0); parentFRTFRAME = AddAnimationComponent(anim_FRONTLEFTWHEELFRAME, 0, 1, rms2_anim[4]);
rightwheelframe
static UINT FRONTWHEELFRAMEGrp3A[1] = { GRP_FRONTRIGHTAXLE };// rms3_anim[4] = new MGROUP_ROTATE(0, FRONTWHEELFRAMEGrp3A, 1, _V(.461, -.224, .62), _V(0, 1, 0), (float)(90 * RAD)); // -2 .. +145 anim_FRONTWHEELFRAMERIGHT = CreateAnimation(0.0); parentFRTFRAME = AddAnimationComponent(anim_FRONTWHEELFRAMERIGHT, 0, 1, rms3_anim[4]);

as you can see the animation is basically the same
if (TURNDir ==LEFT) {//LEFT TURN d_hdg = d_hdg + .0000001;//rate of steering change of heading vs2.surf_hdg -= d_hdg; if (vs2.surf_hdg < 0) { vs2.surf_hdg += 2 * PI; } rot += 0.0005;//animation axle wheel turn rate if (rot > .125) rot = .125; } if (TURNDir == RIGHT) {//RIGHT TURN rot -= 0.0005;//animation axle wheel turn rate if (rot < -.125) rot = -.125; d_hdg = d_hdg + .0000001;//rate of steering change of heading vs2.surf_hdg += d_hdg; //sprintf(oapiDebugString(), "turn %d SURFHDG %2.2f", i3, vs2.surf_hdg); if (vs2.surf_hdg > 2 * PI) { vs2.surf_hdg -= 2 * PI; } } if (TURNDir == NEUTRAL) {// straight so straighten wheels //sprintf(oapiDebugString(), "turn %2.2f cos %2.2f sin %2.2f,rot %2.2f", TURN_proc, cosTurn, sinTurn, rot); if (abs(rot) <= 0.005) rot = 0; else if (rot < 0) rot += 0.0005; else if (rot > 0) rot -= 0.0005; d_hdg = 0; }

so on left turn the front wheels amost turn 90 degrees plus the turn. they return to 90 degrees right turn fine

Also I wonder if there a fix for the rover being below the surface. I can adjust the td point so at the start it is good but then as you drive it looks like it is sinking. Using the hi res terrain?

TOUCHDOWNVTX td[4]; 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);
 

Attachments

  • ROVERLEFTTURN1.jpg
    ROVERLEFTTURN1.jpg
    165.7 KB · Views: 2
  • ROVERLEFTTURN2.jpg
    ROVERLEFTTURN2.jpg
    139.4 KB · Views: 2
Back
Top