Workspace of Reachy


I’m working recently on Reachy and I found Reachy a great and interesting robot. Your site gives a lot of information about Reachy.

However, I’ve read the documentation on the website, but I did not find the information about its workspace. (Maybe I missed something)

Additionally, I am wondering if we will be warned if we ask Reachy to reach a point out of its workspace (or a point that may lead to a collision). I’ve tested with the simulation on your site, it seems that it will report an error but simply with the codes don’t.

Thanks in advance for your response!

Hello @VioletteC!

We do not give further information on Reachy’s workspace, so you couldn’t find it :wink:. You can have a better idea of it using the arms’ specification (, but you probably already had a look at it. The workspace is in fact a little tricky to give in an easy-to-understand and usable way. We can give you information on the reachable area for an horizontal plane under the robot if it can help you!

If you try to reach a point out of Reachy’s workspace, it will still try to find a solution and return what it found as the closest one. So you won’t have any error telling that the point is not reachable. Nevertheless you can print the distance between your target and the point reached by the robot if needed.
At the moment the robot doesn’t avoid collisions, so its right arm may collide with the left one depending on the target points you give.

Hope this will help!

1 Like

Hi Dear ;

I am a new user to leachy, it is really useful to do research on it.
I read that there is a simulation tool, and I do not know how to get that simulation tool environment.

May guide me please how to start to install the simulation 3d tool,

I would appreciate your cooperation

1 Like

Hi Marwan,

We made a post on the forum which explains everything for the simulation tool. You can find it here.


1 Like

Thanks for replying to me!

I got another problem while using the “forward_kinematics” code.

Noticed that each part of the motor has a limit of the degree of rotation, I tested with two matrices 1*8 by changing only the first parameter.

For example:
Test = np.round(reachy.right_arm.forward_kinematics(joints_position=[ 89, 10, -3.84, 0, -16.5, 45, -21.63, 0]),2)

Test = np.round(reachy.right_arm.forward_kinematics(joints_position=[ 150, 10, -3.84, 0, -16.5, 45, -21.63, 0]),2)

And surprisedly, I got two different 4*4 matrices.

I’m wondering why it returned me two different matrices since normally when motors attain their limits, they will stop and remain at the max degree.

Or there’s a problem with my comprehension.

Looking for your reply
Best regards

Hello @VioletteC,

There is a difference between the calculation you can do with the robot model and the real robot.

When you do :

Test = np.round(reachy.right_arm.forward_kinematics(joints_position=[ 150, 10, -3.84, 0, -16.5, 45, -21.63, 0]),2)

It calculates the target as if the first joint had actually a position of 150.
So your two tests give two different results because it returns theoretically what the result should be, without taking into account the robot’s motors limits.

These limits are visible when working with the robot.
If you define your two joints positions:

joints_position=[ 90, 10, -3.84, 0, -16.5, 45, -21.63, 0]
joints_position_2=[ 150, 10, -3.84, 0, -16.5, 45, -21.63, 0]

And make the robot go to these positions:

reachy.goto({ j
for j, m in zip(joints_position, reachy.right_arm.motors)
}, duration=1, wait=True)

reachy.goto({ j
for j, m in zip(joints_position_2, reachy.right_arm.motors)
}, duration=1, wait=True)

the results on the robot will be the same as it can in reality not reach your second target, due to its motors limit.

The real targets you reach are the same, but the theoretical targets you calculate with the forward_kinematics are different as they don’t take into account the motors limits.

Hello !

Thanks for replying me!

Still one question because I can’t find the answer on your website.

Is it possible to obtain positions of each part of arm ?

For example, at first Reachy is in this posture:
[-144.152345 -124.381344 75.650339 -97.08869 32.845588 -24.402332
19.908852 1.130196]

And then it goes to another point with a posture like this:
[-162.49259929 -125.27427109 72.30911795 -93.08019534 25.31561449
-19.99622056 20.03553347 1.00351453]

I want all the positions of each part of arm so that I can draw his first and second posture with just some lines.

Best regards :smile:

Hello @VioletteC ,

I am not sure to understand what you want. Is your goal to record and plot the intermediate positions for all joints during the movement between your two positions?

Exactly! The intermediate position in Cartesian coordinate.

Hello @VioletteC,
To have the joint positions in cartesian coordinates for each part, you can do partial forward kinematics on the arm.
For example, for your first posture, to have the cartesian coordinates of the elbow, you just have to send the positions of the joints from shoulder_pitch to elbow_pitch:

elbow_pos = reachy.right_arm.forward_kinematics([-144, -124, 75, -97])

Let me know if this answers correctly your question!

1 Like

Thank you sooo much @Gaelle

It’s exactly what I need :laughing:


Hi guys,

I met a problem when I was trying to install SDK.
The way that my computer connected to Reachy was by ssh through wifi.

I tried to update Python either. But it didn’t work.

Does anyone know how to solve this problem?

Thank you so much.

Hi @VioletteC,
We did not try to install reachy-sdk on a RaspberryPi. reachy-sdk was intended to be used on Linux/Mac/Windows.
If you want, you can try to install from source instead of using pip. To do that:

git clone
pip3 install -e reachy-sdk

However, to use reachy-sdk to control Reachy, you need to have reachy-sdk-server and other ROS packages that we developed for Reachy 2021 running on the robot.
So even if you install reachy-sdk, you will not be able to use it on your Reachy 2019.

1 Like