Parallax
-
Posts
237 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Posts posted by Parallax
-
-
Im just going to post all my robotics stuff in one thread to keep from cluttering the forums, and update the title when i post something new...
Latest work in progress is based on my trusty base model walker:
Added a servo-mounted MK1 cockpit, folding wings, and some vtol engines.
Need some more practice flying this thing, especially landing. May have to use a smaller cockpit to make it less top-heavy.
-
Stuck some robot legs onto a jet plane and this is what happened...
-
Built a bigger one. Now its actually possible to land once in a while.
-
-
-
-
get kOS, then you can program a sequence of motions to loop continuosly with a button press, instead of QWOP'ing all over the place
-
This is indeed hilariously awesome. How does it move initially though? The legs seem to not provide any forward thrust. Is it simply leaning forward?
It lifts the legs and strides forward. I have the length of stride linked to the value of the throttle, so that max speed is at full throttle and at zero it walks in place.
-
water physics update sounds awsome
-
a jet airplane that walks/runs on robot legs instead of wheeled landing gear. -
still need to figure out an elegant way of landing this thing... -
something strange is happening.
im trying to use an action group to toggle between controlling from the forward facing probe core with SAS off and controlling from the upward facing probe with steering locked upward.
i got it to toggle between controlling from the two different probes by doing this:
SET UPPROBE TO SHIP:PARTSTAGGED("UPPROBE")[0].
SET FWDPROBE TO SHIP:PARTSTAGGED("FWDPROBE")[0].
UNTIL ALTITUDE=20000
{
IF AG1=1
FWDPROBE:CONTROLFROM.
ELSE
UPPROBE:CONTROLFROM.
}.but when i add the code to set the SAS commands, like so:
SET UPPROBE TO SHIP:PARTSTAGGED("UPPROBE")[0].
SET FWDPROBE TO SHIP:PARTSTAGGED("FWDPROBE")[0].
UNTIL ALTITUDE=20000
{
IF AG1=1
FWDPROBE:CONTROLFROM.
UNLOCK STEERING.
ELSE
UPPROBE:CONTROLFROM.
LOCK STEERING TO Up + R(0,0,90).
}.i get an error. what gives?
-
The idea is that its a plane, but instead of landing gear with wheels, it will have cyborg legs and do running takeoffs and landings.
Im using my own servo sequencer template script to generate the walking part of the script ( [based on an earlier craft i made](http://forum.kerbalspaceprogram.com/threads/126654-Long-Jumping-Bipedal-Robot-%28craft-script-included%29-INFERNAL-ROBOTICS-kOS) ), so that part is done.
however, i made my template script a while ago and since then forgot how to kOS. here what im stuck on: my walking script relies on controlling from the upward facing control probe and locking heading in the upward direction with SAS; but to fly the plane properly i need to control from the probe core that faces forward and have any SAS commands disabled.
right now it can do a running takeoff and flies well enough once i manually switch to the foreward facing probe core, but its impossible to land without the ability to make the switch at exactly the right time...
basically i want to be able to toggle between which of the two probe i "control from", and apply the appropriate SAS setting for the selected probe.
any ideas?
-
what version/mods are you using?
-
i think you might have sent me one of those red dinosaur things a while ago, could that be it?
-
Latest walker design. Now with ground detection, automatic jumping mode, ability to lean into turns
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).
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}.
}.
}.
}.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!
-
-
My previous walker build (already made obsolete by a current WIP):
-
Craft file, download this and drop it into your SPH folder:
https://www.dropbox.com/s/kwic92ted1sjicc/POGO-1.craft?dl=0
Here is the script I'm running:
SET TURN TO SHIP:PARTSTAGGED("TURN")[0].
SET JUMP TO SHIP:PARTSTAGGED("JUMP")[0].
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PARAMETER SPEED1.
PARAMETER ACCELERATION.
PARAMETER TURNRATE.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UNTIL SHIP:ALTITUDE > 20000
{
IF GEAR = 1
UNTIL GEAR = 0
{
IF + ALT:RADAR < 3.9
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SET SPEED1 TO 250 + 2500*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET ACCELERATION1 TO 1500 + 150*SHIP:CONTROL:PILOTMAINTHROTTLE.
SET TURNRATE TO 6 - 1.5*SHIP:CONTROL:PILOTMAINTHROTTLE.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TURN:GETMODULE("MUMECHTOGGLE"):SETFIELD("SPEED", TURNRATE).
JUMP:GETMODULE("MUMECHTOGGLE"):SETFIELD("ACCELERATION", SPEED1).
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
JUMP:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 1).
WAIT 0.125.
JUMP:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE +", 0).
JUMP:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 1).
WAIT 0.25.
JUMP:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE -", 0).
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}.
}.
}.Start-up procedure:
1) Extract your pogo-pilot from the capsule and sit him down in the command seat.
2) Detach capsule.
3) Right-click on the probe core and select "control from here"
4) Use mechjeb's smart ASS function to lock heading to the UP direction
5) Open the kOS control panel and run the script i posted above.
6) Detach the launch clamps.
7) Steer with "j" and "l" (you may want to remap your kerbal's space suit light to another button, like "u")
8) Lean forward and back with "i" and "k"
9) Action group "0" toggles ladder up and down
10) Action group "g" toggles jumping routine
11) Throttle controls the force of the jump, keep it low to avoid damage.
Mods:
- mechjeb
- kOS
- Infernal Robotics + reworked IR models
- tweakscale
If you download this, please post here and let me know if it works or not.
-
Kerbal pogo-stick. kOS is programmed to jump automatically as soon as the craft is close enough to the ground. The force of the jump is varied using the throttle. Self balancing via mechjeb's smart A.S.S utility. Not really all that impressive on its own, but this technique will lead to some interesting future craft... -
-
updated my kOS robot script to work with the latest ksp/mods, quick and dirty test walker to try it out:
http://gfycat.com/SpeedyThinHedgehog#
there will be more
-
updated for 1.02
http://gfycat.com/SpeedyThinHedgehog
made a clean install of ksp + updated mods. took a bit of time to get my script working again, but now i can focus on building and getting creative.
-
on previous versions of IR i could set an action group to center a group of servos, so that i could use an IR hotkey to move the servo to the limit, and when i let go of the hotkey, the servo would go back to center. i cant find a way to do this anymore, whenever i move a servo it overrides the command to move to center and it stays stuck in the advanced position. unfortunately this means that i cant build my walking robots the same way i used to, unless i can find some work-around.
any ideas?
[WIP] MSI's Infernal Robotics - Model Rework (v02 Pre-Release Beta)
in KSP1 Mod Development
Posted
im trying out a craft + script from 1.05, i am getting an error on this line now for some reason:
BAL2:GETMODULE("MUMECHTOGGLE"):DOACTION("MOVE CENTER", 1).
"failed to convert parameters"
here is the rest of the script, unchanged from 1.0.5, any ideas what i need to change to make it work again?
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]. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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 VERTICALSPEED < 0 AND + ALT:RADAR < 5.0 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.030*SHIP:CONTROL:PILOTMAINTHROTTLE. SET DELAY2 TO 0.105 - 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). ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// UNTIL VERTICALSPEED < 0 AND + ALT:RADAR < 5.0 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 + 22*SHIP:CONTROL:PILOTMAINTHROTTLE. SET RANGE2 TO 0 - 22*SHIP:CONTROL:PILOTMAINTHROTTLE. SET DELAY1 TO 0.16 + 0.030*SHIP:CONTROL:PILOTMAINTHROTTLE. SET DELAY2 TO 0.105 - 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. 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.4 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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). ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// }. }. }. }.