首先我们来讲一下机器人的坐标系
坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系,这些坐标系之间的位置关系该如何管理?
ROS给我们提供了一个坐标系的管理神器——TF。
机器人中的坐标系
机器人中都有哪些坐标系呢?
比如在机械臂形态的机器人中,机器人安装的位置叫做基坐标系Base Frame,机器人安装位置在外部环境下的参考系叫做世界坐标系World Frame,机器人末端夹爪的位置叫做工具坐标系,外部被操作物体的位置叫做工件坐标系,在机械臂抓取外部物体的过程中,这些坐标系之间的关系也在跟随变化。
接着我们来说下如何在ROS中实现大家最关心的问题:查看末端的位置坐标,这个不是很准确,学术的叫法是机械臂当前位姿:
在使用moveit的逆解来对机械臂进行运动规划时候,是给机械臂输入末端的位置和姿态,其中位置是用x,y,z坐标来表示,姿态是使用四元数来表示。但是有时候想要根据机械臂目前的状态得到当前位姿,可以使用moveit的命令行工具或者直接在Rviz中查看。
启动moveit_commander命令行接口:
rosrun moveit_commander moveit_commander_cmdline.py
与机械臂的move_group节点建立连接:
use <group name>
<group name>为自己程序中设置的,例如我的是manipulator
现在就可以在此节点上执行命令了,current命令将会返回运动组的当前状态。包括关节的状态(关节1, 2, 3, ……)和末端的状态(px, py, pz, ox, oy, oz, ow)
current
可以看出当前状态信息:
Rviz中查看
你也可以在Rviz中查看末端执行器的位置姿态。打开连接树:【MotionPlanning】->【Scene Robot】->【Links】,可以查看每个连杆的位置姿态。