Ideal base frame placement given tool pose w.r.t. external frame kc144 Junior Member Posts: 2 Threads: 1 Joined: Nov 2020 Reputation: 0 11-13-2020, 03:47 PM Greetings! Here's my problem and I'm hoping the solution is easy to implement in RoboDK's python API. I'm not formally trained in robotics and have been working with them via RoboDK for about 6 months, so apologies if I'm poorly formulating the following question. I have a robot rigidly attached to an arbitrarily movable cart (3DoF). I have the desired tool pose with respect to an external reference frame (Frame A). I would like to determine where to place the robot's base such that the tool pose w.r.t the robot's base frame (Frame B) is centered as much as possible in its workspace envelope. Here's why. I have to coarsely position (i.e., drive) the robot base using the movable 2D platform. In the real world, I won't get the base placed perfectly, so I'd like to have the most "motion envelope" to adjust the tool pose and get it placed properly with respect to the external reference frame. Another way of looking at this: there is a 3DoF envelope of cart poses within which the robot can reach and place the tool in the desired pose w.r.t. Frame A. I'd like to determine where the center of this envelope is, given that I know Frame B in the cart's frame, and steer myself towards this optimal point. I hope this question makes sense. Thanks in advance for any hints, ideas, criticisms, etc.! Find Reply Jeremy Moderator Posts: 1,800 Threads: 2 Joined: Oct 2018 Reputation: 69 11-13-2020, 06:03 PM Hi Kc144,  I don't have a straight forward answer for you, but I don't see that being that hard.  First you need to figure out where is the center of that "workspace".The working envelop of a robot is all around it, so to center the work envelop with the position you have, you would need to match the base of the robot with the position, which is obviously not what you are trying to explain.  I feel like what you mean is "in front of the robot, mid-height, mid-range". You can simply manually move the robot to that position and look at the position. Let's call that "WorkCenter".  Then you will have something like this (it's pseudo code, do not simply copy and paste to your code, it won't work): Code:`CartPosition = Target * inv(WorkCenter)` This would work if FrameA and CartBase are at the same position, you may need to account for it if it's not the case.  Let me know what you think.  Jeremy Find useful information about RoboDK and its features by visiting our Online Documentation and by watching tutorials on our Youtube Channel.  Find Reply kc144 Junior Member Posts: 2 Threads: 1 Joined: Nov 2020 Reputation: 0 11-23-2020, 07:35 PM (11-13-2020, 06:03 PM)Jeremy Wrote: Hi Kc144,  I don't have a straight forward answer for you, but I don't see that being that hard.  First you need to figure out where is the center of that "workspace".The working envelop of a robot is all around it, so to center the work envelop with the position you have, you would need to match the base of the robot with the position, which is obviously not what you are trying to explain.  I feel like what you mean is "in front of the robot, mid-height, mid-range". You can simply manually move the robot to that position and look at the position. Let's call that "WorkCenter".  Then you will have something like this (it's pseudo code, do not simply copy and paste to your code, it won't work): Code:`CartPosition = Target * inv(WorkCenter)` This would work if FrameA and CartBase are at the same position, you may need to account for it if it's not the case.  Let me know what you think.  Jeremy This makes perfect sense. Thanks so much! (Sorry for the late reply. The email notification that a reply was posted went into my spam folder.) Find Reply