CS机器人获取用户坐标下当前位姿
1.简介
由于🌸CS系列没有直接获取用【huò qǔ yòng】户坐标下当前位姿的【wèi zī de】🗿指令,故根据所需求🏈编写对🉑应获取【yīng huò qǔ】程序,方便用【fāng biàn yòng】🛅户后续使用【shǐ yòng】。
2.操作流程
根据位姿变换【zī biàn huàn】指令【zhǐ lìng】,将【jiāng】base坐标系【zuò biāo xì】🎤下的位【xià de wèi】😂姿(下方示🍾例中🎎get_actual_tcp_pose())转换成user坐标系【zuò biāo xì】🎤(下方示🍾例中🎎坐标系【zuò biāo xì】🎤_1)下的位【xià de wèi】😂姿(var_1)
var_1:= pose_trans(pose_inv(坐标系【zuò biāo xì】🤷_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿
2.1获取用户坐标系下的位姿
这里用到的是【dào de shì】🥄赋值指令将转🤴换完成的值赋值到🚨var_1,也可以【yě kě yǐ】直接使【zhí jiē shǐ】用脚本指令赋🌜值转换【zhí zhuǎn huàn】。


程序解析
var_1:= pose_trans(pose_inv(坐标系【zuò biāo xì】🥨_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿
var_1:= [var_1[0]*1000,var_1[1]*1000,var_1[2]*1000,r2d(var_1[3]),r2d(var_1[4]),r2d(var_1[5])]
# 视情况【shì qíng kuàng】将M单位转🔕换为mm,弧度转【hú dù zhuǎn】角度🗳,以供后【yǐ gòng hòu】🏾续使用
2.2用户坐🌁标系下【biāo xì xià】的位姿【de wèi zī】转换为🕎基座下的位姿【de wèi zī】
根据位姿【zī】变换指令,将🔺user坐标系【zuò biāo xì】🍰(坐标系【zuò biāo xì】🍰_1)下的位【xià de wèi】🍋姿【zī】(下方示【xià fāng shì】例中⛷var_1)转换成【zhuǎn huàn chéng】base坐标系【zuò biāo xì】🍰下的位【xià de wèi】🍋姿【zī】(var_2)


程序解析
var_1:= pose_trans(pose_inv(坐标系【zuò biāo xì】🔽_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿var_1
var_2:= pose_trans(坐标系【zuò biāo xì】🚚_1,var_1)
# 转换为基座标系下的位姿var_2
3. 常见问题解答
3.1数据单位转换
机器人【jī qì rén】🕒中获取的位姿【de wèi zī】🎊数据单【shù jù dān】🕶位,X Y Z是M米为【mǐ wéi】🕘单位【dān wèi】🍕,RX RY RZ是以💾rad弧度为🕘单位【dān wèi】🍕;所以在运行点位数据时也同样需要【yàng xū yào】注意将【zhù yì jiāng】计量单位【dān wèi】🍕转换为🕘M米和🍷rad弧度。
例:
var_1:= [var_1[0]*1000,var_1[1]*1000,var_1[2]*1000,r2d(var_1[3]),r2d(var_1[4]),r2d(var_1[5])]
# 视情况将【jiāng】M单位转🌎换为mm,弧度转【hú dù zhuǎn】角度【jiǎo dù】🐨,以供后🔈续使用
3.2指令如何获取
上述指令脚本🗃内容可查看【chá kàn】CS脚本手册【cè】,具体参【jù tǐ cān】💡数手册【cè】🔉都有详【dōu yǒu xiáng】🔥细解析,指令编辑框内有一些【yǒu yī xiē】常用的指令函【zhǐ lìng hán】数,例如位姿变换⛷获取当【huò qǔ dāng】前位姿等等可直接插👐入使用🏂。

4.示例
示例内容:获取用【huò qǔ yòng】😥户坐标系位姿后✈,运行至【yùn háng zhì】该点的【gāi diǎn de】Z方向20mm处🏂。
获取到🕯用户坐标下位姿之后🥦,可更改【kě gèng gǎi】该数据【gāi shù jù】,插入🔼moveL指令【zhǐ lìng】🐋(位姿数【wèi zī shù】据用【jù yòng】movel指令【zhǐ lìng】🐋,关节数⚡据用【jù yòng】movej指令【zhǐ lìng】🐋)路点【lù diǎn】类型选择🏖为可变路点【lù diǎn】。


程序解析
var_1:= pose_trans(pose_inv(坐标系【zuò biāo xì】☕_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿var_1
var_1:= [var_1[0],var_1[1],var_1[2]+0.02,var_1[3],var_1[4],var_1[5]]
# Z方向增加20mm
MoveL
var_1
#直线移动指令
#移动的路点