- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在做了一些研究之后,我发现没有一种单一的“行之有效”的方法可以为 RaspberryPi 交叉编译 ROS。我能想到的最好办法是从目标设备下载 /usr
、/lib
和 /opt
到我的开发机器上(安装在$HOME/Projects/TargetResources
),制作一个 CMake 工具链文件,并调用 catkin_make_isolated -DCMAKE_TOOLCHAIN_FILE=...
。虽然构建过程开始了,但我立即遇到了一个错误:
$ catkin_make_isolated -DCMAKE_TOOLCHAIN_FILE=${HOME}/Projects/${MY_PROJ}/RPI3+_Melodic_Toolchain.cmake
CMake Error at ${HOME}/Projects/TargetResources/opt/ros/melodic/share/catkin/cmake/assert.cmake:17 (message):
Assertion failed: check for file existence, but filename
(RT_LIBRARY-NOTFOUND) unset. Message: RT Library
Call Stack (most recent call first):
${HOME}/Projects/TargetResources/opt/ros/melodic/share/catkin/cmake/tools/rt.cmake:42 (assert_file_exists)
${HOME}/Projects/TargetResources/opt/ros/melodic/share/catkin/cmake/all.cmake:159 (include)
${HOME}/Projects/TargetResources/opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:20 (include)
CMakeLists.txt:10 (find_package)
经过一些挖掘,目标设备(即 RaspberryPi 3+)没有 librt.so
。有趣的是,如果我只是为设备上的项目运行 catkin_make
,一切都会成功构建。所以我不认为尝试安装它真的有必要(或正确的解决方案)。
此外,我应该注意到目标安装了 ROS Melodic Base,而我的开发机器安装了 ROS Melodic Desktop。我不确定这是否会导致我遇到的问题,但我不想过早地排除它。
那么,我的问题是我应该如何进行?我在设置工具链时是否忽略了一些东西,或者我是否假设了一些关于 ROS/Catkin 的错误信息?
预先感谢您的所有帮助和考虑。
编辑/附录
根据要求,这里是工具链文件:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER $ENV{HOME}/Projects/RpiDevTools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/Projects/RpiDevTools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/Projects/RpiDevTools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/arm-linux-gnueabihf/sysroot/)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
在 sysroot
中,我复制了 RaspberryPi 的 /opt
目录,因为这是安装 ROS Melodic 库的地方。我发现这些库可能具有在 RaspberryPi/Tools sysroot/usr/include
目录中找不到的依赖项(例如 log4cxx/level.h
)。同样,解决共享对象依赖关系同样麻烦。
最佳答案
问题似乎源于交叉编译工具本身:使用 arm-linux-gnueabihf-gcc
& arm-linux-gnueabihf-g++
from https://github.com/raspberrypi/tools 意味着编译器在预先知道的配置中配置了 libc 库。例如,math.h
包括bits/math-vector.h
;在 GitHub 的 RaspberryPi 工具中,它位于 .../sysroot/usr/include/bits
而直接从 RaspberryPi 3B+ 本身复制位于 /usr/include/arm- linux-gnueabf/位
。各自的编译器( native 和交叉编译)是使用它们各自的配置构建的,而不是其他的,并且不会(很好地)搜索通用路径。
关于ubuntu - 交叉编译ROS Melodic on RaspberryPi 3B+问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081522/
我正在实现一个基于 ROS 的机器人系统。我有不同的节点,每秒发送多次数据。但是,我不需要那个。我只想在机器人处于新位置时发送它的状态。您建议使用哪种 ROS 技术? 最佳答案 根据您的要求,您可以使
我希望我的 ROS 包中的特定节点在 DEBUG 详细级别显示输出,而其他节点在 INFO 级别显示。我知道 rosconsole configuration file ,并且能够为包设置详细程度:
我正在使用 ros indigo。当我做映射然后通过以下方式保存它: map_server map_server -f 'location' 它给了我一个警告... Using deprecated
我正在使用 ros indigo。当我做映射然后通过以下方式保存它: map_server map_server -f 'location' 它给了我一个警告... Using deprecated
我有一个用 Python 编写的 ROS 节点,它捕获消息并将它们写入磁盘(例如使用 pickle)。我想稍后在 ROS 之外的另一个 Python 脚本中使用这些文件,但我需要导入消息类。 这可能吗
ROS 和网络新手。在这里需要一些帮助来理解我应该采取的最佳方法。我正在尝试将 Ros 消息从 ROS PC 发送到另一台非 ROS PC。我研究了几种方法可以做到这一点。 在非 ROS 机器上安装
我可以在ROS的catkin工作区中编译安装ROS包。如何将 catkin 工作区中的包导出到 .deb 文件,以便我可以在其他机器上安装和使用它? 我的 ROS 版本是 ROS Indigo,操作系
我一直在尝试安装 ROS 旋律。我需要它来运行一些启动文件。目前,当我通过运行以下命令检查 ros 版本(在运行 Ubuntu 20.04 的树莓派 4 上)时: rosversion -d 它输出:
我正在尝试使用以下公式将 Twist 转换为左右轮的速度: float speed_wish_right = (cmd_vel.angle*WHEEL_DIST)/2 + cmd_vel.speed;
我已经在 Ubuntu 18.04 上安装了带有 ROS melodic 的 Gazebo 9。我不断遇到以下问题: 启动 Gazebo 向世界添加一些对象 文件 -> 另存为... 程序卡住,保存窗
我使用什么程序来使用 ROS 框架进行编程,我可以使用 Visual Studio 吗? 我是 ROS 的新手,任何教程或教程程序将不胜感激。 谢谢。 最佳答案 用于 ROS 开发的最常见 IDE 是
我的问题是如何将一个值从一个订阅者的回调函数传递给另一个订阅者。 这有意义吗? import rospy from sensor_msgs.msg import LaserScan, Int32 fr
我正在关注有关如何创建 ROS 自定义消息的“WS Newman”教程。编译时出现以下错误“消息/服务'example_msg/Num'的依赖关系已更改。请重新运行cmake” Num.msg 有 H
我想在catkin工作区之外创建一个ROS发布者节点。可以创建吗? 最佳答案 当然可以。像对待任何其他 cpp 库或 python 包一样对待 ROS。 在Python中,你必须保持PYTHONPAT
PointCloud2的内容在ROS中是什么意思? fields.offset? fields.datatype? fields.count? point_step? row_step? 它的 d
PointCloud2的内容在ROS中是什么意思? fields.offset? fields.datatype? fields.count? point_step? row_step? 它的 d
我实现了一个依赖于其他包的ros包。 这些包依赖于更多的包等等...... 在我的包中构建和运行节点时,如何找出实际使用了哪些包? (除了手动查看所有 package.xml 文件,因为有多种情况,其
我正在做一个关于 ROS 的类(class)项目,并且被困在相当简单的任务上。 我的机器人模型有一个激光扫描仪,我在凉亭中使用我的机器人模型生成了一个包文件 我被要求像在 SLAM 中一样生成占用网格
在做 roslaunch .launch 时我希望在该文件中启动的所有节点仅在它们尚未运行时启动。我该怎么做呢?如果不可能,是否至少可以为每个节点单独执行此操作?如果有人有想法,那么如果您将该代码添
有没有办法获得从Realsense获得的点云中的点到深度图中的像素的映射?点云是从深度图中获得的,但是没有有效深度数据的像素被排除在外。 Realsense API 仅提供将点映射到 RGB 像素的例
我是一名优秀的程序员,十分优秀!