使用OpenHiva框架进行机器人应用开发前,需提前准备好开发和运行环境。
安装完成后,以运行用户(如HwHiAiUser)登录环境,执行如下命令设置环境变量。其中${install_path}为CANN软件安装后文件存储路径,请根据实际情况替换该路径。
source ${install_path}/set_env.sh
访问昇腾CANN社区版下载页面 ,下载对应版本的Ascend-cann-robotmiddleware_{software_version}_linux-aarch64.run包。
请根据自身实际需要,选择合适的模式安装:
/bin/sh ./Ascend-cann-robotmiddleware_{software_version}_linux-aarch64.run --install-username=HwHiAiUser --install-usergroup=HwHiAiUser --quiet --run
若操作系统是ubuntu,安装Robot Middleware包前需要先用dpkg-reconfigure dash命令设置Shell环境,此处使用bash解析。
重启后,执行ps -ef命令查看进程启动情况。若出现如下屏显进程信息(如cfgmgr、datamaster、timer_sever),则软件安装成功。
/bin/sh ./Ascend-cann-robotmiddleware_{software_version}_linux-aarch64.run --install-username=HwHiAiUser --install-usergroup=HwHiAiUser --quiet --devel
软件包成功安装后,可查看依赖的头文件、库文件,一般默认在SDK目录下:
其中${INSTALL_DIR}是Robot Middleware安装目录,请根据实际情况替换该路径。
若用户想用OpenHiva进行Pub/Sub通信,除了接口依赖的头文件,还需编译通信所需的消息头文件(*.h),一般借助header_generator工具生成,具体操作步骤如下。
数据格式 |
生成数据类型 |
---|---|
bool |
bool类型数据 |
byte |
char类型数据 |
char |
char类型数据 |
float32 |
float类型数据 |
int8 |
int8_t类型数据 |
uint8 |
uint8_t类型数据 |
float64 |
double类型数据 |
int16 |
int16_t类型数据 |
uint16 |
uint16_t类型数据 |
int32 |
int32_t类型数据 |
uint32 |
uint32_t类型数据 |
int64 |
int64_t类型数据 |
uint64 |
uint64_t类型数据 |
time |
Hiva::Time类型数据 |
duration |
Hiva::Duration类型数据 |
string |
std::string类型数据 |
头文件生成工具支持std::vector和std::array类型的数据,以int8为例:
int8[] int8_vec # 生成头文件会包含 std::vector<int8_t> int8_vec int8[10] int8_arr # 生成头文件会包含 std::array<int8_t,10> int8_arr
以上vector和array数据类型也可以是其它基础数据类型或用户自定义数据类型。
使用header_generator工具时,请在x86_64环境上使用,并确保GLIBC版本>=GLIBCXX_3.4.26(部署过程请参见GNU官网),操作系统建议为Ubuntu20.04及以上版本。
进入${INSTALL_DIR}/robotmiddleware/sdk/tools目录,执行如下命令,其中msg dir是用户指定的msg文件目录(相对路径)。
header_generator <msg dir> arm64 HIVA2
执行该命令后,消息的namespace与msg dir相同,生成的消息name与*.msg名相同。
以Hello.msg和World.msg为例,生成消息头文件的操作过程如下:
|---- header_generator //头文件生成工具 |---- kyber_msgs // 消息文件目录 | |---- Hello.msg | |---- World.msg
其中World.msg和Hello.msg文件内容如下,通过cat命令查看,Hello.msg依赖World.msg。
./header_generator kyber_msgs arm64 HIVA2
执行成功后,在*.msg所在目录下自动生成同名的*.h头文件,以Hello.h头文件为例: