# Robots shake when they move

**URL:** <https://forum.universal-robots.com/t/robots-shake-when-they-move/17180>\
**Category:** Technical Questions\
**Created:** [October 21, 2021, 3:38am UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180 "2021-10-21T03:38:31Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ZiHang.Chu](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/zihang.chu/32/3190_2.png) [@ZiHang.Chu](https://forum.universal-robots.com/u/ZiHang.Chu)\
**Post date:** [October 21, 2021, 3:38am UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/1 "2021-10-21T03:38:31Z")

</div>

How to solve the jitter problem when you send ur robot multiple consecutive points?

And the instruction sent later overwrites the instruction sent earlier

I tried to wrap the points as a function, but the jitter problem was still unresolved.

Is there any good method?

I use TCP protocol, go robot 30003 port

The code sent is as follows：

pose = “def motions():\n”   
" movel(p[-0.18278,0.45842,0.71426,1.98535,-1.88042,1.00875],t=2)\n"  
" movel(p[-0.17838,0.45842,0.70993,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.17197,0.45842,0.70537,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.16479,0.46053,0.70272,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.15519,0.46369,0.70272,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.14654,0.46658,0.70272,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.13857,0.46901,0.70586,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.13196,0.46901,0.71113,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.12687,0.46901,0.71948,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.12426,0.46901,0.72943,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.12426,0.46596,0.74091,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.12426,0.46163,0.75307,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.12812,0.45616,0.76525,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.13383,0.44997,0.77717,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.14208,0.44269,0.78957,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.15131,0.43588,0.80023,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.16083,0.42967,0.80930,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.17246,0.42291,0.81830,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.18473,0.41674,0.82537,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.19833,0.41056,0.83022,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.21030,0.40556,0.83022,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.22156,0.40108,0.83022,1.98535,-1.88042,1.00875],t=0.3)\n"  
" movel(p[-0.23139,0.39726,0.82689,1.98535,-1.88042,1.00875],t=0.3)\n"  
“end\n”   
“motions()\n”

---

<div class="post-metadata">

**Author:** ![terryc](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/terryc/32/3006_2.png) [@terryc](https://forum.universal-robots.com/u/terryc)\
**Post date:** [October 21, 2021, 5:50pm UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/2 "2021-10-21T17:50:43Z")

</div>

Just a quick scan here, I notice you’re sending these commands with an expected completion time of around 0.3 seconds, but have specified no blend radius to have the motion continuous (as opposed to coming to a full stop after each move is complete).

Perhaps see the arguments here for the movel command?  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/c/ce9b4a5ecd39b11fa127039a8326f195ee7d088f.png)

Make sure you choose an **r** value small enough so the blend radii don’t overlap. This would depend on your point spacing.

---

<div class="post-metadata">

**Author:** ![krmi](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/krmi/32/1945_2.png) [@krmi](https://forum.universal-robots.com/u/krmi)\
**Post date:** [October 21, 2021, 7:09pm UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/3 "2021-10-21T19:09:00Z")

</div>

As terryc mentioned, you have no blend radius specified so for each move the robot will accelerate, cruise, and then decelerate before going to the next move. Since your time to complete is so short, this will make the robot appear as if it’s shaking. Perhaps you could also consider issuing a “servoj” command instead (note that paths are typically broken up into smaller chunks than what you have for this case).

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/4/4e89fc447bf7d5d53fff8172583c44b1243efcf9.png)

---

<div class="post-metadata">

**Author:** ![ZiHang.Chu](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/zihang.chu/32/3190_2.png) [@ZiHang.Chu](https://forum.universal-robots.com/u/ZiHang.Chu)\
**Post date:** [October 22, 2021, 3:08am UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/4 "2021-10-22T03:08:47Z")

</div>

Yes, the servoj I’m currently using can solve this problem, thank you, but I still have a problem. When I use servoj, THE joint values resolved by get\_inverse\_kin() may have singularity problems. In this case, the indicator will give an alarm at the last point ‘invalid waypoint’. Can I read this alarm in advance through TCP communication

---

<div class="post-metadata">

**Author:** ![krmi](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/krmi/32/1945_2.png) [@krmi](https://forum.universal-robots.com/u/krmi)\
**Post date:** [October 22, 2021, 12:42pm UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/5 "2021-10-22T12:42:27Z")

</div>

Yes, if your robot software is up to date you can run the function “get\_inverse\_kin\_has\_solutions()” which will return True or False depending if a solution exists.

---

<div class="post-metadata">

**Author:** ![ZiHang.Chu](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/zihang.chu/32/3190_2.png) [@ZiHang.Chu](https://forum.universal-robots.com/u/ZiHang.Chu)\
**Post date:** [October 25, 2021, 8:15am UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/6 "2021-10-25T08:15:49Z")

</div>

Can this return value be read over TCP communication?

---

<div class="post-metadata">

**Author:** ![bba](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/bba/32/555_2.png) [@bba](https://forum.universal-robots.com/u/bba)\
**Post date:** [October 25, 2021, 1:01pm UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/7 "2021-10-25T13:01:03Z")

</div>

Hi,  
Is this a UR3e or UR5e/10e ? If this is a UR3e and you just do simple moveJ moves and are still seeing vibrations then there might be something wrong (mechanically) with this robot.

---

<div class="post-metadata">

**Author:** ![krmi](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/krmi/32/1945_2.png) [@krmi](https://forum.universal-robots.com/u/krmi)\
**Post date:** [October 25, 2021, 2:20pm UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/8 "2021-10-25T14:20:17Z")

</div>

I suppose it could, but not directly as it’s just a script function the same as any other. You’ll probably need to write some code to store the values of your poses in float registers, run the kinematic solution check script function, and then store the result (True/False) in a separate register which you can then read via external interfaces.

---

<div class="post-metadata">

**Author:** ![anon41386329](https://avatars.discourse-cdn.com/v4/letter/a/e47c2d/32.png) [@anon41386329](https://forum.universal-robots.com/u/anon41386329)\
**Post date:** [November 20, 2021, 1:24pm UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/9 "2021-11-20T13:24:39Z")

</div>

> [@ZiHang.Chu](#):
>
> Yes, the servoj I’m currently using can solve this problem, thank you, but I still have a problem. When I use servoj, THE joint values resolved by get\_inverse\_kin() may have singularity [flikover](https://seotoolsgroupbuy.us/) problems. In this case, the indicator will give an alarm at the last point ‘invalid waypoint’. Can I read this alarm in advance through TCP communication

What is this mean? could you please explain?

---

<div class="post-metadata">

**Author:** ![ZiHang.Chu](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/zihang.chu/32/3190_2.png) [@ZiHang.Chu](https://forum.universal-robots.com/u/ZiHang.Chu)\
**Post date:** [February 24, 2022, 2:10am UTC](https://forum.universal-robots.com/t/robots-shake-when-they-move/17180/10 "2022-02-24T02:10:08Z")

</div>

> [@ZiHang.Chu](#):
>
> get\_inverse\_kin() 解析

Get\_inverse\_kin () is used to parse the value to the servoj.
