起因
当使用位姿控制Kinova机械臂时,移动速度远远慢于使用关节角控制kinova机械臂。在IROS比赛中着实有点浪费时间,而且徐博的后续实验也需要用到kinova机械臂进行速度与轨迹跟随。
设置方式
在纠结了很多天未果,从茫然无从下手的状态,到豁然开朗,对kinova-ros整个包的结构有了更深层次的理解了。
刚开始想着是找到一个参数设置速度,最后是在kinova_driver 文件夹下的kinova_comm.cpp找到下面这个函数,感觉找到点希望了。
可是在哪儿调用这个函数呢?找了半天也没找到。于是乎又想着从执行pose的函数中一步步追根溯源到设置函数,无奈在pose action中也没有找到对应的。
又只能从roslaunch kinova_bringup kinova_robot.launch 中,从启动机械臂开始找出点猫腻来, 发现机械臂启动的时候,主要是启动了kinova_arm_driver这个节点。这个节点在kinova_driver的包下面。
结合上面函数说的ClientConfigurations这个结构体定义是在KinovaTypes.h下面,(具体在kinova_driver/include/kinova)。由于在kinova_arm_driver.cpp(位置在/kinova_driver/src/nodes)这个节点文件中有setMaxTranslationVelocity函数的原型类的定义。在这个节点文件中,加入设置速度函数,就可以调整机械臂的移动速度快慢了。具体设置两个函数为下图中的comm.setMaxTranslationVelocity(0.05);
comm.setMaxOrientationVelocity(0.2); 分别将位置跟姿态的速度设置为0.05m/s与0.2rad/second。这样设置后就大功告成把,享受从龟速挣脱出来的快感吧
PS:在用上面两个函数设置参数的时候,具体参数输入貌似有大小的要求,当设置为0时,速度设置无效,还是为设置之前的速度。总之给的参数不能过小,但也不建议过大,避免出现意外。