# 在线算法文件说明
仿真算法支持ROS、源码以及可执行文件三种算法类型。不同类型算法支持的开发语言请参考下表。在进行算法开发时,Octopus平台对算法有一定的要求,请仔细阅读本章节内容,有助您快速完成算法开发及上传。
表 1 仿真算法支持的文件类型
# ROS算法类型基本要求
Octopus平台支持您对ROS类型文件进行在线开发以及编译运行等操作。进行算法开发时算法文件需满足以下几点要求。
所有算法文件需包含在一个根目录下,目录结构可参考:
. ├─ xxx #根目录(名称可自定义) ├─ src #src目录(必选,名称固定) ├─ CMakeLists.txt # 对workspaces初始化(必选,名称固定) ... └─ ... #其他工程文件(可选)
注意: 上传的文件夹中只能包含src目录和必要的算法文件,不可包含编译后生成的二进制文件。如ROS算法文件在本地编译后,会生成“build”和“devel”目录,包含编译后的全部文件,若将全部文件打包上传,将导致在线编译失败。
ROS算法开发要符合正常的ROS代码开发结构,即在根目录下必须有一个src目录,用来存放初始化后的CMakeLists文件;
CMakeLiset.list内容为CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake中的内容
配置编译命令时,需编写"catkin_make"命令,否则会导致编译不成功;
配置运行命令时有三种方法:
推荐使用roslaunch方式启动运行命令。
roslaunch ros_package_name xxxxx.launch
使用ROS官方推荐的运行命令方法:将当前的工程加载到环境中,使rosrun识别到算法包。
source ./devel/setup.sh;rosrun 包名 可执行程序名
例:
source ./devel/setup.sh;rosrun vtd_gateway vtd_gateway
运行多条命令时,可以用如下命令:
bash -c "cmd A; cmd B; cmd C"
直接访问可执行程序:
./devel/lib/包名/可执行程序名
例:
./devel/lib/vtd_gateway/vtd_gateway
# 源码算法类型基本要求
与ROS算法类型相似,您可以在平台对源码类型算法进行在线编辑、编译运行等操作,但需满足一定要求。目前源码类型算法只支持用C++语言开发。在进行源码形式的算法开发时,需满足以下几点要求:
源代码类型算法开发也须在一个根目录下进行,根目录的名字可以与算法名称相同也可自定义;
配置编译命令
源代码在构建输出目录时,不要指向项目的上层目录,应直接指向当前目录,否则在运行时会出现找不到可执行程序的错误。因为有且仅有工程下的目录会被打包生成镜像。例:
g++ -o sampleClientRDBDriverCtrl Communication/Common/RDBHandler.cc Communication/RDBClientSample/ExampleConsoleDriverCtrl.cpp -ICommunication/Common/
# 可执行文件算法类型基本要求
可执行文件是已编译成功,等待运行的二进制命令,因此Octopus平台不支持对可执行文件类型的算法进行编辑编译。上传可执行文件需以压缩包的形式上传,压缩格式为.zip,本地上传可执行文件压缩包大小小于5M,OBS上传压缩包大小不超过200M。
说明: 算法文件压缩步骤:
- 进入到项目工程的根目录。
- 使用zip方式打包根目录下所有的文件及文件夹。
- windows系统:选中当前目录下所有的文件及文件夹,以zip形式打包
- Linux系统:zip -r xx.zip ./
- 上传压缩包