[关闭]
@Pigmon 2021-08-09T08:38:11.000000Z 字数 2982 阅读 566

NOX 授权与安装操作手册_V1.1

NOX


版本 日期 修改人 修改内容
V1.0 2020年2月4日 袁胜 初版
V1.1 2020年2月16日 袁胜 增加源码工程缺失目录的内容(0章)
V1.1 2020年2月16日 袁胜 增加修改build-dev.sh内容(3.3节)

注意:目前要求安装和运行环境为 ubuntu 18.04。

0. 截至2020年2月15日源码工程缺失的目录

bin目录和.nox目录没有提交到源码工程的github仓库,因此在所有操作之前确保将这两个目录解压放在源码根目录。

0.1 bin 目录

bin 目录为存储所有nox命令的执行脚本的目录,解压后放在源码工程根目录,例如:

  1. /home/pigmon/nox_framework/bin/

0.2 .nox 目录

.nox 为隐藏的配置目录,解压后也放在源码工程根目录,例如:

  1. /home/pigmon/nox_framework/.nox/

1. 常见错误

1.1 运行 source authorization.sh 报错

报错内容:

  1. authorization: some error occurs

目前遇到的问题是因为程序内所需的 brctl 命令没有安装,在命令行执行:

  1. sudo apt install bridge-utils

安装成功后重新执行脚本。

1.2 运行 manager 报错

报错内容:

  1. terminate called after throwing an instance of 'std::logic_error'
  2. what(): basic_string::_M_construct null not valid
  3. 已放弃

目前遇到的原因是 Painter.cpp 中调用:

  1. std::getenv("NOX_ROOT");

用这个值去初始化一个std::string。因为目前命令行中没有NOX_ROOT这个环境变量,因此返回NULL,而std::string不允许用NULL初始化。
在该命令行执行 nox_framework 根目录的 setup.bash 就可以。

  1. cd ~/nox_framework
  2. source setup.bash

1.3 修改部分程序后,编译产生Invalidate string offset错误

在nox源代码部分文件中修改,如果输入了如空格,回车等内容,就会发生异常字符错误(编译错误)。
这个居然是vscode的问题,遇到这样的程序拿到gedit里改就可以了,原因不明。

2. 流程简单描述

预备安装NOX的机器以下称为[目标机器];
管理员使用的装有nox源代码的机器以下称为[管理员机器];

步骤简要说明如下:

3. 操作流程

3.1 在[目标机器]上生成密钥

在[目标机器]上打开一个新的命令行窗口,并进入nox_framework根目录

  1. source setup.bash

然后,进入noxauth目录

  1. nox_framework/src/nox_authorization/noxauth

执行

  1. source authorization.sh

按提示输入nox管理员的用户名和密码,则会生成密钥。密钥是长度384的字符串。

3.2 在[管理员机器]上注入机器信息

在[管理员机器]上打开一个新的命令行窗口,并进入nox_framework根目录并执行

  1. source setup.bash

然后运行manager:

  1. rosrun nox_authorization manager

会输出操作提示:

  1. usages:
  2. user list : list all users
  3. user add <name> : add a new user
  4. user delete <name> : delete a user
  5. machine list : list all machines
  6. machine add <name> <code> : add a new machine
  7. machine delete <name> : delete a machine
  8. machine show <name> : show information
  9. dump : refresh authorization
  10. track <code> : track code's information
  11. exit : exit the manager

之后在manager命令行内使用machine add命令加入机器信息,例如:

  1. machine add yuansheng_dev 8BB29BF15310B69A30C03260EA6C5953AD9AA75D0CA19C2E5989E36D2E7A4EF13789A32902EE8232C8EA6D3DE4B8DAB72F714EBD38022C50B734C5B213D12ACDA5C9E7264FD559DEF5C239BBE5FB8F2188AB834E9CE50F3C7776CDB9E328931F7F689E0A7F4F0CCC96DDA1629A3E907575EE31E2068BAB08CA221CC66DDF29E43B3A268553F5FB59E0C5AE06791A17475306ED250683E920B29B8996B26A228750F78AB0FBA936AB110BAF2F143E53C1A47A84F67A3B88C9D3BD519042099221

执行后应看到信息:

  1. add new machine: [你新增的机器名]

可以使用 machine list 命令查看是否添加成功。如果成功,输入:

  1. dump

如果看到:

  1. refresh authorization information ...
  2. done.

说明新机器的信息已经注入成功。

3.3 编译安装包

在[管理员机器]上,找到由nox-dev.zip解压的目录,用文本编辑器打开build-dev.sh,找到 NOXSRC 的定义部分,将它的值修改为[管理员机器]上的NOX源代码工程根目录,例如:

  1. NOXSRC=/home/pigmon/nox_framework

修改好后保存。
然后在命令行执行:

  1. ./build-dev.sh

进入nox_framework编译的过程。完成后,同目录下会生成:

  1. nox-dev-amd64.deb

3.4 安装

将刚刚编译好的 nox-dev-amd64.deb 拷贝至 [目标机器],然后执行安装:

  1. sudo dpkg -i nox-dev-amd64.deb

中途如果提示依赖不满足按照提示安装其依赖项目,结束后,会输出提示:

  1. please run the following commands to complete the installation:
  2. rosdep update
  3. echo 'source /opt/ros/melodic/setup.bash' >> ~/.bashrc
  4. echo 'source /opt/nox/setup.bash' >> ~/.bashrc
  5. source ~/.bashrc

按提示依次执行。

3.5 验证安装

在[目标机器]上,开启roscore,然后新打开一个命令行。然后新建一个临时测试目录,如nox_test,建好后进入nox_test目录,输入:

  1. noxcreate setup

执行完成后,输入:

  1. ls -a

结构应该是:

  1. . .. build .catkin_workspace devel .nox src

如果这些目录不是空的,那应该就是安装好了吧。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注