时间原因,简单记录。
KINOVA基本的控制方式有手柄控制,官方SDK控制。再就是代码控制了。
代码控制暂且分为两类:
一是基于官方底层C++ API的,其文档和例程在SDK安装的时候会一起安装,在Ubuntu系统下,我的路径是/opt/JACO-SDK。
这一类看看其提供的例程代码,基本能够简单使用。
二是基于kinova ROS包的,这里面相当于在底层C++ API上进行了进一步的封装,形成了一个个可执行文件(ROS中的节点)。既有python节点,也有C++节点。【利用这些节点,能够对机械臂以ROS命令行的形式进行控制,但不是我们想要的】
仿照ROS包中的代码,我们可以写出自己的控制代码。
官方给的demo是Python代码。(尚未细看)
想写C++的话,可以参考kinova_driver/目录下的代码,大概的逻辑如下(摘自官方readme.md):
kinova_driver
: most essential files to run kinova-ros stack.Under the include folder:
Kinova C++ API headers are defined in ../include/kinova;
ROS package header files are in kinova_driver folder.
kinova_api source file is a wrap of Kinova C++ API;
kinova_comm builds up the fundamental functions.
Some advanced accesses regarding to force/torque control are only provided in kinova_api. Most parameters and topics are created in kinova_arm.
A general architecture from low level up could be:
DSP --> communicate --> Kinova C++ API --> wrapped -->
kinova_api
-->
kinova_comm
--> {
kinova_arm
; kinova_fingers_action;
kinova_joint_angles_action
; ...} -->
kinova_arm_driver
.
It is not recommended to modify kinova_comm and any level below it.
总结就是要想自己写C++,看看kinova_arm_driver.cpp,想调用函数,看看kinova_arm.cpp