Jump to content

Long-Jumping Bipedal Robot (craft+script included) [INFERNAL ROBOTICS + kOS]


Recommended Posts

Latest walker design. Now with ground detection, automatic jumping mode, ability to lean into turns :cool:

Mods:

-infernal robotics + reworked IR parts + tweakscale

-kOS

-mechjeb

Craft file:

https://www.dropbox.com/s/7kgcqq7ut2xev1a/JUMPER-2-d.craft?dl=0

Script

SET TURN TO SHIP:PARTSTAGGED("TURN")[0].
SET LEFTSTR TO SHIP:PARTSTAGGED("LEFTSTR")[0].
SET RIGHTSTR TO SHIP:PARTSTAGGED("RIGHTSTR")[0].
SET LEFT1 TO SHIP:PARTSTAGGED("LEFT1")[0].
SET LEFT2 TO SHIP:PARTSTAGGED("LEFT2")[0].
SET RIGHT1 TO SHIP:PARTSTAGGED("RIGHT1")[0].
SET RIGHT2 TO SHIP:PARTSTAGGED("RIGHT2")[0].
SET BAL2 TO SHIP:PARTSTAGGED("BAL2")[0].

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

PARAMETER SPEED1.
PARAMETER SPEED2.
PARAMETER ACCELERATION1.
PARAMETER ACCELERATION2.
PARAMETER TURNRATE.
PARAMETER RANGE1.
PARAMETER RANGE2.
PARAMETER DELAY1.
PARAMETER HEADING.
PARAMETER LEFT2MAX.
PARAMETER RIGHT2MIN.
PARAMETER BAL2MAX.
PARAMETER BAL2MIN.

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

UNTIL SHIP:ALTITUDE > 20000


{

LOCK STEERING TO Up + R(0,0,270).
IF AG1 = 1
UNTIL AG1 = 0

{


BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).

IF + ALT:RADAR < 5


{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

SET RANGE TO 0 + 2.5*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET SPEED1 TO 40 + 1*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET SPEED2 TO 80 + 1*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET ACCELERATION1 TO 100 + 1*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET ACCELERATION2 TO 200 + 2*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET TURNRATE TO 3 - 1.5*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET RANGE1 TO 0 + 16*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET RANGE2 TO 0 - 16*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET DELAY1 TO 0.16 + 0.035*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET DELAY2 TO 0.11 - 0.1*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET LEFT2MAX TO 0 + 25*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET RIGHT2MIN TO - 25*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET BAL2MAX TO 0 + 15*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET BAL2MIN TO 0 - 15*SHIP:CONTROL:PILOTMAINTHROTTLE.

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

TURN:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", TURNRATE).

LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED1).
LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION1).
LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION2).

RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION2).

LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", -35).
LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", 20).

LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", -70).
LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", LEFT2MAX).


RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", -20).
RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", 35).

RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", RIGHT2MIN).
RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", 70).


RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", 60).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", RANGE2).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", RANGE1).


LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", 60).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", RANGE2).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", RANGE1).


BAL2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", BAL2MIN).
BAL2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", BAL2MAX).


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).

LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
WAIT 0.1.
right2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).

WAIT DELAY1.

LEFTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).

LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
right2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
WAIT DELAY2.

BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

right1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
right2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
WAIT 0.1.
left2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
rightSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
leftSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).

WAIT DELAY1.

rightSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
leftSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).

right1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
right2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
left2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
WAIT DELAY2.



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

}.

IF AG2 = 1
UNTIL AG2 = 0

{

LEFTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).

LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
IF + ALT:RADAR < 4.3

{

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

SET SPEED1 TO 500 + 1500*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET SPEED2 TO 1000 + 3000*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET ACCELERATION1 TO 1000 + 2000*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET ACCELERATION2 TO 2000 + 4000*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET TURNRATE TO 6 - 1.5*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET RANGE1 TO 0 + 20*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET RANGE2 TO 0 - 20*SHIP:CONTROL:PILOTMAINTHROTTLE.

SET RMAX1 TO 10 + 20*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET RMAX2 TO 20 + 40*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET LMIN1 TO -10 - 20*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET LMIN2 TO -20 - 40*SHIP:CONTROL:PILOTMAINTHROTTLE.

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

TURN:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", TURNRATE).

LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED1).
LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION1).
LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION2).

RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION2).

RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION2).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", RANGE2).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", RANGE1).


LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", ACCELERATION2).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", SPEED2).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", RANGE2).
LEFTSTR:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", RANGE1).


LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", LMIN1).
LEFT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", 10).

LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", LMIN2).
LEFT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX",20).


RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", -10).
RIGHT1:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", RMAX1).

RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MIN", -20).
RIGHT2:GETMODULE("MUMECHTOGGLE"):SETFIELD("MAX", RMAX2).


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).

LEFTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
RIGHTSTR:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).

LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).

WAIT .125.


LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).

WAIT .125.


LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).


LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).

WAIT .125.


LEFT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
LEFT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
RIGHT1:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
RIGHT2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).

WAIT .125.

BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

}.
}.
}.
}.

4RgdZ6n.jpg

Instructions:

- place craft file into your SPH folder

- extract kerbal from capsule and have them man the control seat (optional)

- copy and paste the script above into a kOS window and save it under a convenient name

- right click on the probe core and select "control from here" (refer to picture above)

- set throttle to 0 and turn on fine controls

- run the script

- unclamp the launch clamp

- "1" toggles walk mode

- "2" toggles jump mode (walk mode must be activated before activating jump mode, lazy programming, if you can fix this please post the script here so i can steal it)

- "J" and "L" turn the craft

- "I" and "k" adjust balance forward and backward. use this in jump mode to control the angle that the craft will hit the ground

- throttle controls speed. max throttle for running at max speed; 0 throttle for walking in place

- " ; " and " ' " rotate the turret

- "o" and "p" move flashlight up and down

- "9" crouches the craft for embark/disembark and extends ladder

- "0" returns to normal operation from crouched position and retracts ladder

If you download this, please post here to let me know if it works or not. Have fun!

Edited by Parallax
Link to comment
Share on other sites

Dude you are seriously my hero. That script code is bonkers. I'm super impressed the upper part can turn independently. What powers the thing?

Once I get my aircraft finished I'm back in the mech game

Link to comment
Share on other sites

Latest walker design. Now with ground detection, automatic jumping mode, ability to lean into turns :cool:

Wow. You work in Boston Dynamics or something? This thing is seriously impressive, that code must have taken a lot to work out!

Rune. That is more useful than most rovers! :o

Link to comment
Share on other sites

I'm giving you rep for the song alone. The man is the god of electronic music. Check out his Adult Swim theme it is spectacular.

As for that robot. Even more spectacular. I lost it when it leaned into the turn. So cool. Great job.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...