# Joint-Torque control

**URL:** <https://forum.universal-robots.com/t/joint-torque-control/7104>\
**Category:** URScript\
**Created:** [April 24, 2020, 10:19am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104 "2020-04-24T10:19:23Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon55870545](https://avatars.discourse-cdn.com/v4/letter/a/8e8cbc/32.png) [@anon55870545](https://forum.universal-robots.com/u/anon55870545)\
**Post date:** [April 24, 2020, 10:19am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/1 "2020-04-24T10:19:23Z")

</div>

Hi,

we are working in some research projects and would also like to use an existing UR10(e) as a demonstrator for control algorithms. Is there _any_ way (e.g. low level APIs, own UR-CAPs, etc) we can comand and control the joint torques / currents / voltages? Anything more low level than joint speed?

-Klaus

---

<div class="post-metadata">

**Author:** ![Ebbe](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/ebbe/32/1413_2.png) [@Ebbe](https://forum.universal-robots.com/u/Ebbe)\
**Post date:** [April 27, 2020, 8:11am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/2 "2020-04-27T08:11:32Z")

</div>

Hi @anon55870545,

There is no method for setting the joint torques. The script function “force\_mode()” is what get closest. Maybe with the DH-parameters you can do the dynamics calculation from joint torques into tool force/torques  
[https://www.universal-robots.com/articles/ur-articles/parameters-for-calculations-of-kinematics-and-dynamics/](https://www.universal-robots.com/articles/ur-articles/parameters-for-calculations-of-kinematics-and-dynamics/)

---

<div class="post-metadata">

**Author:** ![anon55870545](https://avatars.discourse-cdn.com/v4/letter/a/8e8cbc/32.png) [@anon55870545](https://forum.universal-robots.com/u/anon55870545)\
**Post date:** [April 27, 2020, 11:00am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/3 "2020-04-27T11:00:34Z")

</div>

Hi Ebbe,

thanks for the answer. This sounds like a suboptimal and computation intensive route. I will have a look though.  
Any chance the “servoj” “a”-parameter" might be useable in the future? Or to provide a low level “research-interface” ?

-Klaus

---

<div class="post-metadata">

**Author:** ![Ebbe](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/ebbe/32/1413_2.png) [@Ebbe](https://forum.universal-robots.com/u/Ebbe)\
**Post date:** [April 28, 2020, 6:16am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/4 "2020-04-28T06:16:52Z")

</div>

Hi @anon55870545,

I completely agree. I think if the [ROS community](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver) is having the same need. Then the likelihood is much higher.

---

<div class="post-metadata">

**Author:** ![hannes.gamper](https://avatars.discourse-cdn.com/v4/letter/h/c57346/32.png) [@hannes.gamper](https://forum.universal-robots.com/u/hannes.gamper)\
**Post date:** [May 23, 2024, 3:05pm UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/5 "2024-05-23T15:05:45Z")

</div>

Hi @Ebbe,

are there any updates on this?

We would like to use the UR10e on top of 3 additional axes (6+3=9DoF) for a teleoperation application. Our workaround would is to command the torques of the first 3 joints directly to the motor drivers and then mapping the last 6 torques (corresponding to the UR10e) to the UR10e end effector and using forcemode(). This is computationally not great however.

Thank you!

---

<div class="post-metadata">

**Author:** ![Ebbe](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/ebbe/32/1413_2.png) [@Ebbe](https://forum.universal-robots.com/u/Ebbe)\
**Post date:** [June 4, 2024, 6:10am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/6 "2024-06-04T06:10:44Z")

</div>

Hi @hannes.gamper,

Unfortunately there is still no way to do this directly. But thank you for sharing your wish.

You might take a look here: [URScript\_Examples/admittance-control at main · UniversalRobots/URScript\_Examples · GitHub](https://github.com/UniversalRobots/URScript_Examples/tree/main/admittance-control). It is in the cartesian space. If it is required to be in joint space maybe you can get inspired and utilize _get\_joint\_torques()_ and _speedj()_

Ebbe

---

<div class="post-metadata">

**Author:** ![vitalram.r](https://avatars.discourse-cdn.com/v4/letter/v/13edae/32.png) [@vitalram.r](https://forum.universal-robots.com/u/vitalram.r)\
**Post date:** [February 21, 2025, 7:20am UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/7 "2025-02-21T07:20:04Z")

</div>

You could try the torque control through current control, as torque and current are linearly related. Joint current control is possible. Ref: [https://pure.au.dk/ws/files/197603831/Phd\_Thesis\_Emil\_Madsen.pdf](https://pure.au.dk/ws/files/197603831/Phd_Thesis_Emil_Madsen.pdf)

---

<div class="post-metadata">

**Author:** ![hannes.gamper](https://avatars.discourse-cdn.com/v4/letter/h/c57346/32.png) [@hannes.gamper](https://forum.universal-robots.com/u/hannes.gamper)\
**Post date:** [February 25, 2025, 4:05pm UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/8 "2025-02-25T16:05:40Z")

</div>

Thank you very much for the reply. We are still interested in a solution.

Can you let me know what the RTDE call would be to set the motor current? I cant find it in the documentation or in the PhD thesis you cited.

Thanks!

---

<div class="post-metadata">

**Author:** ![vitalram.r](https://avatars.discourse-cdn.com/v4/letter/v/13edae/32.png) [@vitalram.r](https://forum.universal-robots.com/u/vitalram.r)\
**Post date:** [February 25, 2025, 11:32pm UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/9 "2025-02-25T23:32:50Z")

</div>

In fact, I too don’t know how to write RTDE. I am new to Universal robot.  
Also, to apply torque/current control we need to put real time joint position and velocities in the control equation, this is real hurdle I feel.

---

<div class="post-metadata">

**Author:** ![Ebbe](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/ebbe/32/1413_2.png) [@Ebbe](https://forum.universal-robots.com/u/Ebbe)\
**Post date:** [March 2, 2026, 7:58pm UTC](https://forum.universal-robots.com/t/joint-torque-control/7104/10 "2026-03-02T19:58:42Z")

</div>

From PolyScope 10.11 and 5.24 there is a builtin script function that is able to do it:  
_direct\_torque(torques, friction\_comp=True)_

> **[direct\_torque(torques, friction\_comp=True)](https://www.universal-robots.com/manuals/EN/HTML/SW10_11/Content/prod-scriptmanual/all_scripts/direct_torque.htm?Highlight=direct%20torque)**
