简介
简介
本文档主要展示的是节卡SDK支持的各语言(C/C++、C#、Python)在主流开发平台(Windows/Linux)下的环境搭建
C++在Microsoft Visual Studio(Windows)下环境搭建步骤
1.首先下载安装IDE:Microsoft Visual Studio (请读者自行查阅资源下载安装,配置,一下步骤默认读者已经安装好该IDE)
2.新建工程
如何创建工程
- 文件-->新建-->项目
- 点击空项目-->下一步,如下图所示:
- 填写项目名称-->选择项目工程存储位置-->创建
- 创建完成的空项目工程
如何添加头文件
- 右键点击 Piano-->在文件资源管理器中打开文件夹
- 将头文件复制到文件夹下 将 JAKA 二次开发资料包\JAKA_SDK 资料包\c++头文件里的三个头文件复制粘贴到 刚刚创建的工程文件夹下:
- 在解决方案资源管理器中添加头文件 右键点击头文件-->添加-->现有项
选中刚刚复制的三个头文件:
至此进行二次开发的头文件就添加完成了。
如何添加动态库
- 在项目属性中添加动态库路径 先点击一下项目名称 Piano-->项目-->属性
(链接器)常规-->附加库目录 然后添加动态库所在目录
添加完成如下图所示:
选择链接器-->输入-->附加依赖项,添加动态库名字
如何编写最小示例
选择 源文件-->添加-->新建项 创建一个新的 test.cpp 文件,如下图所示:
创建完成,在解决方案资源管理器中可以看到文件名称:
将以下代码复制粘贴到 test.cpp 中去:
#include <iostream>
#include "JAKAZuRobot.h"
#define PI 3.1415926
int main()
{
//实例 API 对象 demo
JAKAZuRobot demo;
//登陆控制器,需要将 192.168.2.229 替换为自己控制器的 IP
std::cout << demo.login_in("192.168.2.194") << std::endl;
//机器人上电
std::cout << demo.power_on() << std::endl;
//机器人上使能
std::cout << demo.enable_robot() << std::endl;
return 0;
}
如下图所示,因为我们选择的动态库是 64 位版本的,选择 x64,再按 F5 即可运行,给 机器人上电上使能。
C#在Microsoft Visual Studio(Windows)下环境搭建步骤
C# 配置步骤和C++基本相似,其中动态库的添加可能有所不同,C#需要将JAKA SDK动态库添加进C#项目生成主程序下面即可,即.exe文件同级目录下
C++在Linux下开发环境搭建(代码编辑器默认VScode)
此节主要目的是说明,如何通过CMake构建工具去搭建一个可以使用JAKA SDK的应用程序,推荐使用的操作系统为类Linux(包括Debian、Ubuntu等)。本示例使用的Debian 9,推荐使用的代码编辑器为MicroSoft 的 Visual Studio Code。
环境准备
首先下载安装Cmake工具
推荐到官网下载对应平台下的安装包Cmake官网, 本示例使用的Cmake版本为3.7.2,推荐使用此版本或以上版本。(具体安装操作请读着自行查阅网上资源,下载并安装)以下说明默认读者已经完成此操作。 下载完成后,在终端输入 cmake --version ,显示如下内容即代表安装成功。
jakauser@ZuCAB2001:~$ cmake --version
cmake version 3.7.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
下载安装VS Code
用户可前往Visual Studio Code官网(https://code.visualstudio.com/Download)查找软件安装包并下载安装。VS Code安装完成后,请在VS Code拓展中安装CMake拓展。
下载JAKA SDK包
JAKA SDK软件包可通过JAKA官网渠道下载获取。 中文官方请通过JAKA官网首页(资料中心 (jaka.com)),点击[服务与支持]-> [资料中心] -> [二次开发] -> [SDK],查看最新SDK以及历史版本信息。 英文版本可通过英文官网首页https://www.jakarobotics.com/,点击[Resources] -> [Download] -> [Technical Information] -> [Secondary Development]查看最新与历史版本。
开发配置步骤说明
编写入门hello world程序
在Linux下新建一个项目文件夹CmakeSDKDemo,创建以下文件,其中c&c++为节卡提供的SDK包里Linux下的资源文件,包括头文件inc及动态库文件。main.cpp为项目的主文件,CMakeLists.txt文件为Cmake配置文件,请注意大小写。 接下来用Cmake编写运行一个简单的hello world程序,首先在CMakeLists.txt下输入以下内容
cmake_minimum_required(VERSION 3.5)
project(JAKADemo)
add_executable(hello main.cpp)
● cmake_minimum_required: 指定CMake的最低版本要求。 ● project: 定义项目名称。 ● add_executable: 添加一个可执行目标,第一个参数是目标名称,第二个参数是源文件列表 注:此项目默认使用的是gcc编译器 ,如下,请读者自行配置好C++编译器。 编写main.cpp主程序,输入以下代码
#include <string>
#include <iostream>
int main(){
std::cout << "hello world" << std::endl;
}
Cmake配置构建项目 在终端输入cmake . 配置整个项目。之后会在项目文件下生成很多多余文件,请不要在意。 生成完成后,在终端输入make命令,构建编译可执行程序,会在当前目录下生成一个hello的可执行程序。
在终端输入 ./hello 命令。执行程序,结果如下
至此,用Cmake运行一个简单的helloworld程序就大功告成了。
链接JAKA SDK动态库
在CMakeLists.txt文件下输入以下内容,各行作用请见注释
cmake_minimum_required(VERSION 3.7.2) # Minimum CMake Version
project(sdk_test VERSION 1.0) # Project Definition
# C++ Standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED true)
# Source Directory Information
message(${CMAKE_SOURCE_DIR})
# Executable Creation
add_executable(demo main.cpp)
# Set the header file path of the SDK included in the project
target_include_directories(demo PUBLIC ${CMAKE_SOURCE_DIR}/c&c++/inc_of_c++)
# Set the SDK dynamic library link path
target_link_libraries(demo ${CMAKE_SOURCE_DIR}/c&c++/x86_64-linux-gnu/shared/libjakaAPI.so pthread)
编写main.cpp文件,实现通过SDK的控制示例代码如下:此实例实现的功能是打印SDK版本信息、获取当前tcp位姿、将机器人末端沿y轴移动一定距离。
#include <string>
#include <vector>
#include <iostream>
#include <chrono>
#include "JAKAZuRobot.h" // 确保包含此行
#include <thread>
int main(int argc, char** argv)
{
JAKAZuRobot demo;
demo.login_in("192.168.164.222");
//sleep(2);
demo.power_on();
//sleep(2)
demo.enable_robot();
//sleep(2);
CartesianPose tcp_pos;
int ret;
char ver[100];
demo.get_tcp_position(&tcp_pos);
demo.get_sdk_version(ver);
std::cout << "SDK version is :" << ver << std::endl;
std::cout << "tcp_pos is :\n x: " << tcp_pos.tran.x << "y: " << tcp_pos.tran.y << "z: " << tcp_pos.tran.z << std::endl;
std::cout << "tcp_pos is :\n rx: " << tcp_pos.rpy.rx << "ry: " << tcp_pos.rpy.ry << "rz: " << tcp_pos.rpy.rz << std::endl;
auto now = std::chrono::system_clock::now().time_since_epoch();
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now).count();
std::cout << "Current s: " << std::fixed << ((double)ms) / 1000.0f << std::endl;
tcp_pos.tran.y = tcp_pos.tran.y + 60.0;
ret = demo.linear_move(&tcp_pos, ABS, TRUE, 10, 10, 1, NULL);
std::cout << "ret==" << ret << std::endl;
std::cout << "linear_move finish! " << std::endl;
now = std::chrono::system_clock::now().time_since_epoch();
return 0;
}
以上都准备好之后,通过cmake配置并构建整个项目。 建议在项目根目录下新建build目录,用于存放构建生成的中间文件,避免导致文件内容复杂 之后 cd build 进入到build目录,然后运行命令 cmake .. ,构建整个项目,系统自动将生成的中间文件放到build目录下。(注意是cmake .. ,代表CMakeLists.txt所在目录的上一级目录)。
之后在终端输入 make 构建编译可执行程序
以上完成后,会在build目录下生成一个demo的可执行程序,读者可通过在终端运行 ./demo运行C++程序。
通过以上步骤,读者的C++程序便编写好了并可成功运行。