1、hilens虚拟docker中-ros程序编译说明

该文档主要用于在ubuntu机子上面编译ros库,当编译成功后,将整个文件夹的库拷贝至HiLens Kit 上面进行运行。
这里注意:

  1. 不能使用windows10的WSL 进行操作。
  2. 在执行如下指令前,请确保ubuntu上面的docker能够正常运行
    如果ROS是安装在与它匹配的架构的机子上面,你只需要执行”catkin_init”去初始化ROS catkin workspace 以及”catkin_make”去build workpsace。在每个workspace中都需要一个”src”文件夹存放你所需要编译的ROS packages 。
    但是, 现在ROS 没有安装在这个docker 镜像中,但是我们可以用aarch64的库来编译ROS。(ROS以及安装在HiLens上面了),这种方式叫做 isolated building.

下面已demo编译为例,讲解如何使用。
Demo文件存放在/demo_ws 中,进入到镜像之后可以查看。

步骤一:

下载docker 镜像文件,这个tar.gz 文件需要用docker import 来加载,然后进入之后,如图所示:
在这里插入图片描述

步骤二:

执行如下命令,能够激活所有需要的ROS和catkin相关东西,这个叫做hybrid build . runtime libraries 是aarch64,因为你需要在hilens kit上面去运行, 而build libraries是amd64,因为你是在这个镜像里面build。

$ source /ros_catkin_ws/devel_isolated/setup.bash  

步骤三:

编译demo文件 : 文件目录/demo_ws .
如果你进入到、demo_ws/src中,你可以看到我们已经提供了很多ROS相关的库(HiLens ROS driver, RPLIdar driver, Kineck driver, mBot driver 等等)

执行如下命令,编译demo。

$ cd /demo_ws

Build 这个workspace,你将用到catkin_make, 但是必须告诉它用aarch64 去编译。所以需要执行命令:

$ catkin_make -DCMAKE_TOOLCHAIN_FILE=/ros_catkin_ws/rostoolchain.cmake 

当demo 开始编译时,你将会遇到如下报错:

 /opt/aarch64-linux-gnu-gcc-7.3.0/aarch64-linux-gnu/include/c++/7.3.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
               ^~~~~~~~~~
compilation terminated.

出现如图所示的编译错误,是因为aarch64 和amd64 冲突. 所以执行指令:

sed -i 's/isystem/I/g' ./build/diagnostics/test_diagnostic_aggregator/CMakeFiles/test_diagnostic_aggregator.dir/flags.make

最后 再次执行命令:

catkin_make -DCMAKE_TOOLCHAIN_FILE=/ros_catkin_ws/rostoolchain.cmake 

你将看到如下所示内容,说明ros程序编译成功。

步骤四:

然后你可以将整个demo_ws 拷贝到HiLens Kit上面去进行,运行这些packages。 (docker中cp出来)

建议##

建议你将自己的packages 放入到demo_ws中,因为一些基础的ROS packages 已经build好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值