# Define robot coordinate frame / base frame

**URL:** <https://forum.compas-framework.org/t/define-robot-coordinate-frame-base-frame/608>\
**Category:** compas\_fab\
**Created:** [July 8, 2022, 8:15am UTC](https://forum.compas-framework.org/t/define-robot-coordinate-frame-base-frame/608 "2022-07-08T08:15:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![grangeot](https://avatars.discourse-cdn.com/v4/letter/g/9e8a1a/32.png) [@grangeot](https://forum.compas-framework.org/u/grangeot)\
**Post date:** [July 8, 2022, 8:15am UTC](https://forum.compas-framework.org/t/define-robot-coordinate-frame-base-frame/608/1 "2022-07-08T08:15:35Z")

</div>

Hi,

We recently bolted a ABB CRB15000 GoFa on a custom table, and we are trying to change the robot coordinate frame in our grasshopper environment to build projects in the world coordinate of rhino/grasshopper, so that they directly match to our physical origin of the table. We have already measured a wobj (x,y,z,q1,q2,q3,q4) for it in the controller, so we have 2 questions :

- Is there a simple way to import back the wobj data into Grasshopper?
- How do you change the base frame / robot coordinate frame based on the measurement of this table work object?

Or is it even the correct procedure?

Thanks a lot in advance for your inputs.

---

<div class="post-metadata">

**Author:** ![grangeot](https://avatars.discourse-cdn.com/v4/letter/g/9e8a1a/32.png) [@grangeot](https://forum.compas-framework.org/u/grangeot)\
**Post date:** [July 29, 2022, 2:53pm UTC](https://forum.compas-framework.org/t/define-robot-coordinate-frame-base-frame/608/2 "2022-07-29T14:53:50Z")

</div>

For anyone interested, @gonzalocasas provided a solution which works in our case, so I will simply put it here and cite his words

> the “ROS” way of doing this is to update the fixed joint that connect the robot to the world, it can be done in a number of ways. […] The least complicated of them all is to create a new URDF that will simply relink the Robot to the specific location you want.  
> I prepared [this little example](https://files.slack.com/files-pri/T01KSSCADUJ-F03NU13FVL3/download/robot_cell.zip?origin_team=T01KSSCADUJ) [which] uses an additional URDF and MoveIt config package that is mounted on the docker image (instead of having to rebuild the image), and it showcases how you can do that.  
> To relocate the robot, simply update the `rcf_joint` joint in `robot_cell.xacro`, and restart docker

 ![image](https://us1.discourse-cdn.com/flex015/uploads/compas_framework1/original/1X/8480a9d3fec221698c1e81316f74d71ff7838bf4.png)

Since we might have robots that change of position quite frequently, we opted for another simple solution, working in Rhino : import the wobj back into grasshopper and use it to define a CPlane and build everything (or Orient it) on the CPlane. The robot stays at the world origin. Obviously, with 2 robots, this workaround is obsolete.
