trac-ik 的使用

安装

sudo apt install ros-kinetic-trac-ik(因为使用的是ubuntu 16.04)

大体上感觉和kdl库的使用方法差不多,所以可以先参考一下kdl库的用法,不过唯一感觉到神奇的是kdl的frame(就是用来描述座标系变换的矩阵),它说的从a到b的变换,实际是b在a座标系中的座标,和我之前学的相反。还有 KDL::JntArray这货虽然表现得像矩阵一样,不过它的colums一直为1,所以还是一个一维数组,求它的长度用rows()

具体的使用见它的例子。大体的流程就是

1. 先读入urdf文件地址
2. 配置chain(即开始link与结束link)
3. 然后就可以进行正逆运动学解了

如果想通过trac-ik计算机器人的重心,可以参考这个代码。它程序的原理就是利用segment.pose(jnt_p)这个函数去配置机器人关节位置,然后segment.getInertia().getCOG()。(pose的源码显示,他会乘tip的变换矩阵)。当然为了让代码更简单,你可以使用像153行那样,取获取当前segment的里面关节名字,来给关节赋值。

要注意chain最后一个segment的值,他可能是没有tip的变换矩阵的。。。