技术干货

ABB重定位运动怎么写?SearchL接搜索结果位姿那步老出错

宁哥
宁哥
2026/06/12 10:03

项目里用的IRB1200,夹具上有视觉,拍照后算出抓取点的相对位姿,想用重定位(SearchL + SearchC那套)让机器人从当前位置先Search找工件,再MoveJ到视觉给的目标位姿。

现在卡在SearchL搜索结束那帧、也就是Pos寄存器里塞进去的那个搜索结果点,后续MoveJ直接报警"目标超出关节范围"或者"起点和终点构型冲突"。手动把Search结果点往回退一两个毫米就正常了,感觉是搜索终点姿态太极限导致的。

想问下各位,ABB这个SearchL搜索完之后存进去的目标位姿,是不是需要在程序里手动做一次姿态修正或者RobHold啥的处理?你们一般怎么写比较稳?

13 4

全部回复 (4)

邓强
邓强#1

SearchL写完后直接调MoveJ到搜索结果点本来就是高危操作,ABB官方手册RAPID-Kernel里就明确说过,SearchL结束位姿是搜索过程中实际触发的那个点,这个点的姿态往往和你视觉给的理论位姿有偏差,尤其是来料有位姿误差的时候,搜到点再MoveJ过去,构型一冲突直接就报警了。

我们项目上通用的做法是:SearchL搜到点之后,先把Pos寄存器里的值读出来,用Offs或者RelTool做一个微调偏移(一般x方向退3~5mm,姿态不变),然后MoveJ到这个中间过渡点,姿态和构型都是安全的,再从这个中间点MoveL或者MoveJ过去到最终抓取位姿。你那个手动退一两个毫米能跑通也印证了这个问题,思路是对的。

2026/06/12 10:04
小波
小波#2

你视觉给出的那个位姿是不是没考虑机器人末端TCP的姿态?比如你只给了x y z,没给正确的rx ry rz,或者给的姿态在机器人当前构型下本身就快到奇异点了,这种情况下不管你SearchL搜不搜,结果点MoveJ都过不去。把视觉那边输出的完整四元数或者欧拉角发出来看看。

2026/06/12 10:04
蒋学军
蒋学军#3

我在现场碰到过类似的,直接没用SearchL,换成了先把视觉给的位姿写到robtarget,然后用MoveJSearchL 这个组合指令,搜索距离设个5~10mm,搜到点就直接触发中断或者di信号去抓,程序逻辑更简单,也没出现过构型冲突的报警。你可以试试这条。

2026/06/12 10:04
xu_bin
xu_bin#4

你这个工件每次来位置误差大概多少?如果来料位置重复性还行(±2mm以内),其实不用搞SearchL这么复杂,视觉给出位姿后直接MoveJ过去就行,ABB的绝对精度配合RobHold修正,重复性场景下完全够用。SearchL是给那种来料位置随机性很大、视觉抓不准的场景准备的。

2026/06/12 10:04