Jump to content

Inverse kinematics robotcontroller for Canadarm1, Canadarm2 and ANY


Trufiadok

Recommended Posts

8 minutes ago, Jasseji said:

Yesss, it's working now, 100 times better than the IR control :D

Now, what is the secret behind the Dragon docking ?

Did you add something to the Docking port cfg itself for it to have a transform as the EndEffector ? (meaning in you video the white ball switches from the LEE w Cam to the Docking Port on the Nose of the Dragon - HOW ? :D)

 

 This is the VirtualEndEffector function - "VEE" button.

You have to select the DockingNode part that you want to set as an endeffector. After push "VEE" button. If selection is OK, this part will be the endeffector, white ball show the result.

If you choose "LeftAlt" without selecting anything and pressing "VEE", LEE will be the endeffector,  again - This is the "Clear VirtualEndEffector" function.

Link to comment
Share on other sites

On 11/18/2018 at 6:49 PM, Trufiadok said:

 This is the VirtualEndEffector function - "VEE" button.

You have to select the DockingNode part that you want to set as an endeffector. After push "VEE" button. If selection is OK, this part will be the endeffector, white ball show the result.

If you choose "LeftAlt" without selecting anything and pressing "VEE", LEE will be the endeffector,  again - This is the "Clear VirtualEndEffector" function.

Hey again, is it safe actually to Install the normal Infernal Robotics alongside ?

I cant make the normal stuff from IR to work (hinges, gantry etc, the icon isnt showing at all)

Link to comment
Share on other sites

7 hours ago, Jasseji said:

Hey again, is it safe actually to Install the normal Infernal Robotics alongside ?

I cant make the normal stuff from IR to work (hinges, gantry etc, the icon isnt showing at all)

have you checked to see if you can move the stuff with action groups? 

i can get the ir core to work just no gui. but i can use action groups to actually move the parts. 

Link to comment
Share on other sites

For some reason it started working by itself :D

 

@Trufiadok did you already do some coding in the direction of inchworming or is it a no-go at the moment ?

i tried to do it via VEE but obviously the arm doesnt get the reference - what would happen if i move the IKRC Module from the LEE to one of the hinges and install a second LEE w CAM where the "Basic" LEE is ?

Link to comment
Share on other sites

23 hours ago, Jasseji said:

Hey again, is it safe actually to Install the normal Infernal Robotics alongside ?

I cant make the normal stuff from IR to work (hinges, gantry etc, the icon isnt showing at all)

The difference between the original IR plugin and IRmod is that in the IRmod the servo turns the shortest path to the specified angle position.

I will examine how this function can be resolved without IRmod.

I changed the code below in the "Interpolator.cs" file.

            //newVel *= Math.Sign(CmdPosition - Position);            // direction		// CHANGED BY TRUFIADOK

            float diffPosition = CmdPosition - Position;								// CHANGED BY TRUFIADOK
            if (diffPosition >= 180f || (diffPosition < 0f && diffPosition >= -180f))	// CHANGED BY TRUFIADOK
                newVel *= -1f;															// CHANGED BY TRUFIADOK

I fixed the speed reduction with the end position approaching.

            if (!IsModulo)
            {
                if (Position >= MaxPosition)
                { 			     // hard limit on Endpositions
                    Position = MaxPosition;
                    Velocity = 0f;
                }
                else if (Position <= MinPosition)
                {
                    Position = MinPosition;
                    Velocity = 0f;
                }
            }
            else
            {
                //if (isSpeedMode)						// CHANGED BY TRUFIADOK
                //{										// CHANGED BY TRUFIADOK
                    Position = ReduceModulo(Position);
                //}										// CHANGED BY TRUFIADOK
            }

If you are using the original IR plugin, the servo motor may turn +350 degrees instead of -10 degrees.

Link to comment
Share on other sites

11 hours ago, Jasseji said:

For some reason it started working by itself :D

This can happen when you switch to another vessel. In this case, the world coordinate system changes. I need to fix it so that the plugin is not active at this time.

@Trufiadok did you already do some coding in the direction of inchworming or is it a no-go at the moment ?

What do you mean by "direction of inchworming"?

i tried to do it via VEE but obviously the arm doesnt get the reference - what would happen if i move the IKRC Module from the LEE to one of the hinges and install a second LEE w CAM where the "Basic" LEE is ?

VEE can be assigned to a part that has DockingNode.

In the current state, the plugin works with only this configuration of robot arm. The order of the servo parts is recorded in the program code.

 

On 11/19/2018 at 7:48 PM, COL.R.Neville said:

are you using anything special to 1.3.1 and out? 

or do we just need to recompile everything for 1.2.2.

I use only a modified IR module API. WireSnareLock and Ca2LeeCam are my own modules, but is also work without them.

I think it can work with 1.2.2.

Link to comment
Share on other sites

yeah thats the problem ive run into. i can make things work by using action groups. but havent been able to find a working front end gui. 

right now using 2.0.10 or v3 3.00 the core part of moving the parts etc works fine but ive tried every combination of gui i could find and even thought about trying to convert everything to using the usi moduleservo but i  havent found one that works. 

one thing i have noticed is that it seems like there is some stream of data that its trying to load i dont know if that is unity itself phoning home or what but i think the links are dead. and all these gui's it seems are using the same thing.

dunno most of this is all voodoo to me hehe.  just trying to get everything going so i can play ro/rss/rp0 on 1.2.2

but thanks for building stuff like this man. 

 

Edited by COL.R.Neville
Link to comment
Share on other sites

@Trufiadok Let me rephrase the question:

Does your Plugin support inchworming ?

i.e. attaching the "LEE wCam" to a target PDGF, then undocking the original mount point (LEE without Cam) and using it as an End Effector to attach to another PDGF, hence "walking" with the arm from one end of the Station to another.

I suppose the Plugin would need to know which End Effector is currently attached to a fixed point and switch the direction 

Like on this video:

 

I tried to do it but the angles keep getting screwed up ;)

Link to comment
Share on other sites

11 hours ago, Jasseji said:

@Trufiadok Let me rephrase the question:

Does your Plugin support inchworming ?

i.e. attaching the "LEE wCam" to a target PDGF, then undocking the original mount point (LEE without Cam) and using it as an End Effector to attach to another PDGF, hence "walking" with the arm from one end of the Station to another.

I suppose the Plugin would need to know which End Effector is currently attached to a fixed point and switch the direction 

Like on this video:

 

I tried to do it but the angles keep getting screwed up ;)

I already understand the question. This mode of operation has not yet been resolved.

The use of servos from another direction is the special feature of the IR module. The reason for twisting is that the rotation is made so that the IR module rotates the entire model and then rotates back the standing part of the model. Therefore it doesn't work from the other direction. That is why it is not that easy to solve inchworming.

19 hours ago, COL.R.Neville said:

yeah thats the problem ive run into. i can make things work by using action groups. but havent been able to find a working front end gui. 

What do you mean by the "action group"?
Does the IKRC module or IR module GUI do not appear?

right now using 2.0.10 or v3 3.00 the core part of moving the parts etc works fine but ive tried every combination of gui i could find and even thought about trying to convert everything to using the usi moduleservo but i  havent found one that works. 

one thing i have noticed is that it seems like there is some stream of data that its trying to load i dont know if that is unity itself phoning home or what but i think the links are dead. and all these gui's it seems are using the same thing.

dunno most of this is all voodoo to me hehe.  just trying to get everything going so i can play ro/rss/rp0 on 1.2.2

but thanks for building stuff like this man. 

 

 

Link to comment
Share on other sites

https://wiki.kerbalspaceprogram.com/wiki/Action_group

remember im using 1.2.2 for rss/ro/rp0

so yours crashes to the desktop for me right now. 

but I've not been able to find a working sequencer for the supposed "working" versions of IR. 

so if I use IRv3 for 1.2.2 the sequencer doesnt work but the core does. so instead of having to give up or try to rewrite the cfg's for the arms to use the USI moduleservo instead of the mumech toggle. I found that you can use action groups instead of a sequencer. 

same works for IR 2.0.10. 

 

 

 

 

Link to comment
Share on other sites

11 hours ago, Trufiadok said:

I already understand the question. This mode of operation has not yet been resolved.

The use of servos from another direction is the special feature of the IR module. The reason for twisting is that the rotation is made so that the IR module rotates the entire model and then rotates back the standing part of the model. Therefore it doesn't work from the other direction. That is why it is not that easy to solve inchworming.

 

understood, i agrees that it will be difficult to solve.

At the moment i am usind another trick - i attached the Canadarm to a small probe core with RCS and reaction wheel and it is attached via a small docking port to the station - i fly the whole assemlbly from one part of the station to another :P

The mod you made works brilliantly, station building is so much more fun now with the proper Shuttle deliveries etc :D

 

Edit: did you upload the changed "Interpolator.cs" somewhere or do we just have to add it ?

Edited by Jasseji
Link to comment
Share on other sites

12 hours ago, Jasseji said:

understood, i agrees that it will be difficult to solve.

At the moment i am usind another trick - i attached the Canadarm to a small probe core with RCS and reaction wheel and it is attached via a small docking port to the station - i fly the whole assemlbly from one part of the station to another :P

The mod you made works brilliantly, station building is so much more fun now with the proper Shuttle deliveries etc :D

 

Edit: did you upload the changed "Interpolator.cs" somewhere or do we just have to add it ?

I did not disapprove of the implement "inchworming" capability. The realization would be that when the direction of operation is turned, plugin would replace the servos to reverse servos. (rotor->rotorb & rotorb->rotor).

Only the difference between the "rotor" and the "rotorb", which is the standing part and which is the rotating part.

 

I uploaded modified InfernalRobotics plugin. Includes changes to the "Interpolator.cs" file. https://github.com/Trufiadok/IKRC-for-Kerbal/blob/master/InfernalRoboticsMod-develop/InfernalRobotics/InfernalRobotics/Command/Interpolator.cs

 

I use a robot satellite to transport the robot arm. This is the TRF-Sphere unit.

atqgTcX.png

 

Link to comment
Share on other sites

21 hours ago, COL.R.Neville said:

https://wiki.kerbalspaceprogram.com/wiki/Action_group

remember im using 1.2.2 for rss/ro/rp0

so yours crashes to the desktop for me right now. 

but I've not been able to find a working sequencer for the supposed "working" versions of IR. 

so if I use IRv3 for 1.2.2 the sequencer doesnt work but the core does. so instead of having to give up or try to rewrite the cfg's for the arms to use the USI moduleservo instead of the mumech toggle. I found that you can use action groups instead of a sequencer. 

same works for IR 2.0.10. 

Did you mean this feature?

99XT6mN.png

Or the function doesn't work in flight mode?

I also met bug on IRmod plugin. In Flight mode, I can't move servos from the IR toolbar. The best solution would be to use the original IR plugin.

My KSP version: 1.5.1.2335 (x64)

Could you send me the KSP.log file then the ksp crashes?

If you help, i uploaded modified InfernalRobotics plugin to Github. https://github.com/Trufiadok/IKRC-for-Kerbal/tree/master/InfernalRoboticsMod-develop

This is the running list of plugins:

vtCLtT0.png

Hope you find some starting point for debugging. If you need some information, to write.

I use the IR plugin API to rotate servos.

Edited by Trufiadok
Link to comment
Share on other sites

OK, for me this works. But I have a question: I have a habitation module with a PDGF an a dockingport (port1).The habitation is connected via the PDGF to the robotic arm. next step is docking the habitation module with port1 to the port2 (target) on the spacestation. Marking the port 2 as target isn`t difficult (leftALT) but how can I mark port1 as the actice port so that IKRK can use this port to align instead of the LEE?

Link to comment
Share on other sites

5 minutes ago, Cheesecake said:

OK, for me this works. But I have a question: I have a habitation module with a PDGF an a dockingport (port1).The habitation is connected via the PDGF to the robotic arm. next step is docking the habitation module with port1 to the port2 (target) on the spacestation. Marking the port 2 as target isn`t difficult (leftALT) but how can I mark port1 as the actice port so that IKRK can use this port to align instead of the LEE?

Could you send me picture from structure?

RobotArm_LEEwCam --> PDGF---(habitation module)---PORT1--> ? <--PORT2---(spacestation)

Do you like this connection?

I think I understand your question. What you need is the VEE function.

Select PORT1 as target (yellow ball) /leftAlt/.

Push VEE button on IKRC window.

The port1 will be the EndEffector (white ball).

Select PORT2 as target (yellow ball).

Activate Inverse Kinematics function.

Link to comment
Share on other sites

CJZCEda.jpg

This is my (test) spacestation.

I followed your instructions:

Select PORT1 as target (yellow ball) /leftAlt/. Done

Push VEE button on IKRC window. Done

The port1 will be the EndEffector (white ball). Nothing happened, the ball is just yellow

Select PORT2 as target (yellow ball).

Activate Inverse Kinematics function.

KJ9pqPe.jpg

 

Edit: reload the scene and now it works.

Edit2: OK, I can do this VEE only one time. After that I can`t rearrange the EndEffector. I must reload the scene.

Edited by Cheesecake
Link to comment
Share on other sites

12 hours ago, Trufiadok said:

I did not disapprove of the implement "inchworming" capability. The realization would be that when the direction of operation is turned, plugin would replace the servos to reverse servos. (rotor->rotorb & rotorb->rotor).

Only the difference between the "rotor" and the "rotorb", which is the standing part and which is the rotating part.

 

I uploaded modified InfernalRobotics plugin. Includes changes to the "Interpolator.cs" file. https://github.com/Trufiadok/IKRC-for-Kerbal/blob/master/InfernalRoboticsMod-develop/InfernalRobotics/InfernalRobotics/Command/Interpolator.cs

 

I use a robot satellite to transport the robot arm. This is the TRF-Sphere unit.

 

Sorry, i'm braindead at this hour - do we have to rebuild the plugin ?

I have these folders in my GameData:

Ca2LeeCam

Canadarm2

IKRC

IkRobotController

InfernalRoboticsMod

MagicSmokeIndustries 

WireSnareLock

 

Which folders from your Github should be added actually ?

The TRF Sphere is neat, can it be added safely between the "Base" LEE and the first rotating joint ?

Actually for RCS stability it might be included behind each LEE of the arm

 

Edit:

Another small question: ist there a reason why you disabled Surface attach for the PDGF ? 

I have edited the cfg myself to enable it and i see no issues - it helps lower the partcount ;)

Edited by Jasseji
Link to comment
Share on other sites

On 11/22/2018 at 9:47 PM, Cheesecake said:

CJZCEda.jpg

This is my (test) spacestation.

I followed your instructions:

Select PORT1 as target (yellow ball) /leftAlt/. Done

Push VEE button on IKRC window. Done

The port1 will be the EndEffector (white ball). Nothing happened, the ball is just yellow

Select PORT2 as target (yellow ball).

Activate Inverse Kinematics function.

KJ9pqPe.jpg

 

Edit: reload the scene and now it works.

Edit2: OK, I can do this VEE only one time. After that I can`t rearrange the EndEffector. I must reload the scene.

I tested the plugin with the Clamp-O-Tron Docking Port. It worked. The Clamp-O-Tron Docking Port can't be the cause of the problem.

XObDfMY.png

I've modified the IKRC plugin. I added logging to VEE activation and VEE deactivation.

Please, update your IKRC plugin, running VEE test and send me KSP.log. I sent my email address for you.

I hope we can read from the log of what the problem might be.

Edited by Trufiadok
I just read Edit, maybe the problem is that if once you set the VEE, you have to reset to the original LEE before you set a new one. Nothing is selected (press leftAlt when cursor doesn't stay on part) and press the "VEE" button.
Link to comment
Share on other sites

14 hours ago, Jasseji said:

Sorry, i'm braindead at this hour - do we have to rebuild the plugin ?

Don't. I just uploaded a source of a fully modified IR plugin, which contains the Interpolator.cs - you requested.

I have these folders in my GameData:

Ca2LeeCam

Canadarm2

IKRC

IkRobotController

InfernalRoboticsMod

MagicSmokeIndustries 

WireSnareLock

 

Which folders from your Github should be added actually ?

Only InfernalRoboticsMod

The TRF Sphere is neat, can it be added safely between the "Base" LEE and the first rotating joint ?

I suppose yes, but the new configuration robot arm must be dumped again. Do I upload the TRF-Spheres part?

Actually for RCS stability it might be included behind each LEE of the arm

 

Edit:

Another small question: ist there a reason why you disabled Surface attach for the PDGF ?

Haven't, I'll fix it, too.

I have edited the cfg myself to enable it and i see no issues - it helps lower the partcount ;)

 

Link to comment
Share on other sites

10 hours ago, Trufiadok said:

I suppose yes, but the new configuration robot arm must be dumped again. Do I upload the TRF-Spheres part?

yes, please, the sphere is very nice, if you could provide the subassembly with the modified config.xml ?

the IKRC folder is not needed in GameData ?

(us bothering you that much = sign up in Patreon so we can get you a Beer at least :P)

I am having a lot of fun building a station with this - even when using CxA's RTAS docking ports which otherwise require a super-alignment to dock.

Album:

https://imgur.com/gallery/7nJeks4

Teaser:

A17scNa.png

 

[imgur]7nJeks4[/imgur]

Edit: I think you didnt upload the recompiled IR Plugin with the Interpolator.cs - Github still lists InfernalRoboticsMod as modified 2 Months ago

 

 

 

Edited by Jasseji
Link to comment
Share on other sites

43 minutes ago, Jasseji said:

yes, please, the sphere is very nice, if you could provide the subassembly with the modified config.xml ?

TRF_SPHERES

(if you could provide the subassembly with the modified config.xml ?)  - What do you think?

the IKRC folder is not needed in GameData ?

Now I understand your question about what the GameData directory should contain.

Ca2LeeCam - This is necessary if you want to use a camera on "TRF_CA2_LEE_wCam" part.

Canadarm2 - This contains the parts that make up the robot arm.

IKRC - Inverse Kinematics Robot Controller plugin - that should be.

IkRobotController - This is the source code for the IKRC plugin, which does not have to be.

InfernalRoboticsMod - This is the modified InfernalRobotics plugin, that's it. If you use the "MagicSmokeIndustries" directory, you don't have to.

InfernalRoboticsMod-develop - This is the source code for the InfernalRoboticsMod plugin, which does not have to be.

MagicSmokeIndustries - This is a complete package that contains the modified IR plugin. If you use this, don't use "InfernalRoboticsMod".

Pictures - I do not need it.

WireSnareLock - This is necessary if you want to use a "WireSnareLock" mechanism on "TRF_CA2_LEE_wCam" part. This is the simulation of the wire lock mechanism with which Lee catches the Pdgf.

The WireSnareLock plugin can disable TRF_CA2_LEE_wCam dockingNode and activate the wire-snare device to capture the PDGF.

WireSnareLock support a physical connection with the vessel, but don't make logic connection.

working animation: https://imgur.com/eCrlpQG

 

3MVTgt9.jpgZUEMXwk.png

(us bothering you that much = sign up in Patreon so we can get you a Beer at least :P)

I am having a lot of fun building a station with this - even when using CxA's RTAS docking ports which otherwise require a super-alignment to dock.

Album:

https://imgur.com/gallery/7nJeks4

Building of space station is moving nicely. :)

Teaser:

A17scNa.png

[imgur]7nJeks4[/imgur]

 

Link to comment
Share on other sites

yes, i use the WireSnare, it is working Perfectly. much more reliable than trying to dock the stuff together :D

And it's actually working much better with the physical connection instead of logical

Quote

(if you could provide the subassembly with the modified config.xml ?)  - What do you think?

I mean, if i modify the Arm and add 2 Spheres between the LEE's and the 1st Joint, what do i need to do to keep the Arm working - it's just enough to make a dump from the GUI ?

Dump needs to be done in the "0" Position ?

Link to comment
Share on other sites

26 minutes ago, Jasseji said:

yes, i use the WireSnare, it is working Perfectly. much more reliable than trying to dock the stuff together :D

And it's actually working much better with the physical connection instead of logical

Note that if you have saved the game, it will not work when it is reloaded. (WireSnare)

I mean, if i modify the Arm and add 2 Spheres between the LEE's and the 1st Joint, what do i need to do to keep the Arm working - it's just enough to make a dump from the GUI ?

Yes. I'm going to try it too.

Dump needs to be done in the "0" Position ?

Yes, that's the way it is. I'm going to try it too.

 

Link to comment
Share on other sites

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...