ROS-学习笔记-04-( Ubuntu20.04编译ecto,boost1.7环境)

2023-05-16

目录

  • Ubuntu20.04编译ecto(boost1.7环境)
    • 编译ecto
        • 简介
        • 1、下载源码安装依赖
        • 2、修改源码
        • Build
        • Install
      • 参考

Ubuntu20.04编译ecto(boost1.7环境)

编译ecto

简介

Ecto is a hybrid C++/Python development framework for constructing and maintaining pipelines. In Ecto, pipelines are constructed in terms of processing units, Cells, connected by data paths, Tendrils, that form Directed Acyclic Graphs, Plasms. Cells are typically written in C++, tendrils may be any type, and the plasm may be executed in a variety of clever ways. Python is uses as a the graph DSL.

Ecto may be found useful in domains such as perception, audio, or robotics.

To get started see the online docs at http://plasmodic.github.io/ecto/

1、下载源码安装依赖

前提是已经安装了boost和catkin,安装boost见后文,catkin按理说应该在安装ros时就装好了sudo apt install catkin 如果有依赖冲突可以用aptitude解决。
下载源直接从github拉取。1

mkdir catkin_workspace/ catkin_workspace/src
cd catkin_workspace/src
git clone http://github.com/plasmodic/ecto.git

其他依赖:

sudo apt-get install libboost-python-dev libboost-filesystem-dev libboost-system-dev \
    libboost-thread-dev python-setuptools python-gobject python-gtk2 graphviz doxygen \
    python-sphinx
# For catkin and it’s tools :
sudo apt-get install python-catkin-pkg ros-noetic-catkin

2、修改源码

由于编译时会报错

fatal error: boost/tr1/unordered_map.hpp: 没有那个文件或目录
32 | #include <boost/tr1/unordered_map.hpp>

需要修改源码,出错文件分别是:ecto/src/lib/util.cppecto/src/lib/plasm/impl.hpp,更改时去掉目录中的tr1,改为:#include <boost/unordered_map.hpp>
同时还要修改util.cpp中对应命名空间也要改掉:2

typedef std::tr1::unordered_map<std::string, std::string> dict_t; // 修改前
typedef boost::unordered_map<std::string, std::string> dict_t; // 修改后

以上问题其实再melodic版本也会遇到,除了这个错误以外, 还需要修改ecto/src/lib/strand.cpp,否则会报出如下错误:

error: ‘class boost::asio::io_context::strand’ has no member named ‘get_io_service’

修改第95行的代码:

 boost::asio::io_service& serv_inside_strand = thestrand->get_io_service(); //改前
 boost::asio::io_context& serv_inside_strand = thestrand->context() ;  //改后

The previously deprecated get_io_context and get_io_service member functions have now been removed.3
也就是需要把‘io_service’改为‘io_context’,然后‘get_io_service’改为‘context’

最后是这个错误,参考:https://github.com/opencog/opencog/issues/48#issuecomment-19075662
https://github.com/nvdla/hw/issues/185

/ecto/include/ecto/python/streambuf.hpp:297:11: error: ‘PyString_AsStringAndSize’ was not declared in this scope; did you mean ‘PyBytes_AsStringAndSize’?

PyString_AsStringAndSize改为PyBytes_AsStringAndSize

如果还有其他问题,有可能是在虚拟机挂载时,在windows挂在目录下编译,这是不可行的。但也可以参考这篇解决方案 : failed to create symbolic link ‘libavutil.so’:

如果还是有连接问题如下:

libecto.so.0.6.12: undefined reference to `boost::re_detail_107400::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()' /usr/bin/ld: /home/jillian/ROS/cat/devel/lib/libecto.so.0.6.12: undefined reference to `boost::re_detail_107400::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<c

则有可能是boost版本问题,有可能一台机器上安装多个boost版本,卸载删除其中一个即可。

如果你使用的是1.74而非1.71的boost,还可能遇到如下问题:

/home/jillian/ROS/cat/src/ecto/samples/experimental/necto.cpp: In
constructor ‘ecto_X::server::server(boost::asio::io_service&, short
unsigned int)’:
/home/jillian/ROS/cat/src/ecto/samples/experimental/necto.cpp:247:56:
error: ‘boost::asio::ip::tcp::acceptor’ {aka ‘class
boost::asio::basic_socket_acceptorboost::asio::ip::tcp’} has no
member named ‘get_io_service’ 247 | connection_ptr
new_conn(new connection(acceptor_.get_io_service()));
|
^~~~~~~~~~~~~~

和上方相似,·修改文件/ecto/samples/experimental/necto.cpp第265行。

connection_ptr new_conn(new connection(acceptor_.get_io_service()));
connection_ptr new_conn(new connection(acceptor_.context()));

Build

catkin_make
catkin_install

还有就是catkin_make无法编译的话,可以选择用cmake:

cd ecto
mkdir -p build
cd build
cmake ..
make

Install

catkin编译的话可以将install目录下的文件复制,或者连接到系统中。
如果是cmake编译:

cd ecto/build
make install

参考


  1. plasmodic/ecto ↩︎

  2. ROS-Melodic版编译安装ecto ↩︎

  3. github:issues/4636 和 boost Revision History ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS-学习笔记-04-( Ubuntu20.04编译ecto,boost1.7环境) 的相关文章

  • ArduPilot——AP_NavEKF3针对AP_NavEKF2做了哪些改进/变动?

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 本篇博文主要针对Paul Riseborough大神为ArduPilot做的导航EKF3算法 xff0c 相
  • QuadPlane (VTOL)——ArduPilot——流程梳理

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接
  • 进程的几种状态

    进程 xff1a 进程 xff08 Process xff09 是计算机中的程序关于某数据集合上的一次运行活动 xff0c 是系统进行资源分配和调度的基本单位 进程状态 xff1a 一个进程的生命周期可以划分为一组状态 xff0c 这些状态
  • 超声波纳米材料乳化分散震动棒设计

    超声波纳米材料乳化分散震动棒利用超声波的超声空化作用来分散团聚的颗粒 它是将所需处理的颗粒悬浮液 xff08 液态 xff09 放入超强声场中 xff0c 用适当的超声振幅和作用时间加以处理 由于粉体颗粒团聚的固有特征 xff0c 对于一些
  • noVNC+VNCserver实现远程访问Docker容器桌面

    一 实验环境 主机 xff1a Ubuntu16 04 目标机 xff1a docker容器 说明 xff1a 在主机Ubuntu16 04中安装docker xff0c 并虚拟出一台Ubuntu容器 xff0c 将该容器作为要远程访问的目
  • 本地项目(vscode)和码云建立连接,及常用git命令

    本地Git和线上关联 xff1a 权限设置 G码云 设置 SSH公钥 公钥管理电脑桌面点击右键进入Git Bash Here对照链接输入指令绑定邮箱 xff1a https gitee com help articles 4181 arti
  • 解决android studio 控制台乱码

    双击shift键 xff0c 输入vmoption xff0c 选择Edit Custom CM Options 如果没有配置过 xff0c 就会弹出窗口问是否创建配置文件 xff0c 点击Create xff0c 输入 Dfile enc
  • 无人机学习笔记

    硬件 首先从硬件开始说起把 xff0c 气压计 陀螺仪 磁力计 xff0c 这三个不用说肯定是必备的 xff0c 后面由于开发的需要还添加了激光测距 xff0c 以及光流 但是在开发过程中遇到了很多问题 xff0c 一个一个来说 气压计 气
  • 解决KEIL中ARM编译器不能编译的问题

    keil编译器出现问题 xff0c 根据提示意思就是ARM编译器选择不对的问题 Target 39 Printf 39 uses ARM Compiler 39 V5 06 update 6 build 750 39 which is no
  • linux 内核中strstr函数 功能

    在内核代码中看到strstr函数 xff1a mode 61 strstr boot command line 34 D 34 应该是一个字符串处理函数 xff0c 使用man命令查看下给出如下解释 xff1a SYNOPSIS inclu
  • KPI异常检测资料汇总

    文章目录 0 综述类1 KPI异常检测1 1 经典模型1 1 1 Donut 基于VAE的周期性无监督KPI异常检测1 1 1 1 论文解读1 1 1 2 源码分析 1 12 MAD 基于GANs的时间序列数据多元异常检测 1 2 行业落地
  • jupyter notebook:使用argparse包存在的问题及解决

    argparse模块 argparse是python用于解析命令行参数和选项的标准模块 导入argparse包 span class hljs keyword import span argparse 遇到的问题 parser 61 arg
  • Qt C++和Java相互调用

    Qt C 43 43 和Java相互调用 1 C 43 43 调用Java Test h span class token keyword class span span class token class name Test span s
  • 单片机HAL库使用HAL_UART_Receive_IT

    前言 由于本人第一次尝试开发单片机 xff0c 要实现的功能是信息转发 xff0c 需要调用HAL库方法 xff0c 中断接受信息转发给FPGA xff0c 这里没有用到DMA方式所以不做赘述 xff0c 特此记录分享希望帮到你们 发送信息
  • VLC播放gstreamer pipeline rtp流

    一 xff1a Gstreamer 下载gstreamer 编译等自行百度 pipeline命令 硬编码输出rtp gst launch 1 0 e videotestsrc 34 video x raw format 61 I420 wi
  • 【unity】Multiple plugins with the same name '...'解决方案

    Multiple plugins with the same name 39 ulua 39 found at 39 Assets Plugins uLua 1 22 x86 64 ulua dll 39 and 39 Assets Plu
  • CMAKE 环境变量

    CMAKE CXX FLAGS CMAKE C FLAGS 在cmake脚本中 xff0c 设置编译选项有两种方式 xff1a 1 1 add compile options命令 add compile options命令添加的编译选项是针
  • Gstreamer常见pipeline命令 - 持续更新中

    解码 xff1a xff08 根据码流类型自适应创建相应解码器 xff09 gst launch 1 0 filesrc location 61 home user DCIM Camera VID 20201001 103749 mov q
  • ubuntu18.04 安装包提示没有可安装候选

    sudo apt get install gcc 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 没有可用的软件包 gcc xff0c 但是它被其它的软件包引用了 这可能意味着这个缺失的软件包可能已被废弃 xf
  • D435在ROS下的使用

    本人电脑Ubuntu16 04 Ros 为kinetic D435可以用的ros源码下载地址 https github com intel ros realsense releases一定要仔细查看每一个版本基于的sdk的版本号 D435的

随机推荐

  • 在ros下使用D435出现问题ResourceNotFound: realsense2_camera

    在launch的文件内运行roslaunch rs rgbd launch出现错误 xff1a ResourceNotFound realsense2 camera 或运行 roslaunch realsense2 camera rs rg
  • 在ROS中发布IMU数据

    本文主要是来发布sensor msgs Imu类型的消息 xff0c 其中 xff29 xff2d xff55 的数据为虚拟的 xff11 xff0e 在自己的工作空间中创建ros程序包 这个包依靠std msgs roscpp rospy
  • 控制理论学习资料

    DR CAN 傅里叶分析之掐死教程 xff08 完整版 xff09 更新于2014 06 06
  • 卡尔曼滤波原理二:扩展卡尔曼

    1 理论部分 上一篇介绍了线性卡尔曼滤波器 xff0c 当系统为线性高斯模型时 xff0c 滤波器能给出最优的估计 xff0c 但是实际系统总是存在不同程度的非线性 xff0c 如平方 三角关系 开方等 对于非线性系统 xff0c 可以采用
  • PIXHAWK添加自定义消息存储到SD卡

    四旋翼调试阶段总会出现很多难以预见的现象 xff0c 这时为了找到所出问题的原因 xff0c 就需要获得原始相关数据进行分析 xff0c pixhawk代码提供了记录飞行日志的功能 xff0c 能够将飞行中的重要数据存入SD卡中 xff0c
  • reStructuredText介绍

    文档格式编辑 xff0c 目前主流最强大的要是latex xff0c 但是语法太复杂 xff0c 环境要求也多 xff0c 有的时候也是写文档往往选择markdown xff0c 常常怀疑文档编辑的markdown不是亲生的 xff0c 很
  • ROS2—自定义话题及服务消息类型

    1 source ROS 2 环境 source ROS 2的基础工作空间可以使用下面的命令 xff1a source opt ros foxy setup bash 2 创建一个新的文件夹 执行类似下面的命令 xff1a mkdir p
  • 用VSCode编译运行C++(2022最新教程)以及会遇到的两个问题

    这玩意我弄了一下午 xff0c 发现网上很多教程都过时了 xff0c 现在自己整理一下造福后人 目录 第一步 xff0c 下载和配置mingw64 xff0c 即C C 43 43 编译器GCC的Windows版本 第二步 xff0c 下载
  • 从零开始学USB(一、基础知识1)

    1 什么是USB USB是Universal Serial Bus的缩写 xff0c 中文译为通用串行总线 正如USB的第一个单词表述的那样 xff0c 为了通用 那么我们看一下 xff0c 还有哪些总线不是串行的 xff0c 哪些是不通用
  • 5,树莓派3B+ 使用 Frp 实现内网穿透,公网访问web服务器,设置自动启动,后台运行。 (新人向)

    内网穿透 就是让没有固定公网 ip 的内网的服务器 xff0c 暴露在公网之上 xff0c 从而在外网可以访问 基于这个工具 xff0c 不但可以让外部网络访问内网的web服务器 xff0c 也可以访问我们自建的NAS服务器 xff08 私
  • 关于编程学习上的一些感悟——不忘初心

    序 今天无意中看到以前一起开发过的同学写的技术文章 xff0c 了解到了更多在blog和github以及一些技术交流论坛上面非常活跃 回过头来看看自己 xff0c 好像依然停留在以前的样子 xff0c 似乎与真正在踏实学技术差距好像很大了
  • uORB笔记整理

    其实是对自己看过的文章中讲uORB的部分进行了记录 uORB Micro Object Request Broker 微对象请求代理器 是PX4 Pixhawk系统中非常重要且关键的一个模块 xff0c 它肩负了整个系统的数据传输任务 xf
  • 因子图-gtsam

    闲着写下关于gtsam的内容 更新中
  • 1+11+111+1111+11111+……+11……11(2009个1)的和有多少个1?

    直接贴代码了 lt span style 61 34 font family Courier New 34 gt include lt stdio h gt define SIZE 10 int main void int i int co
  • uC/OS-ii 学习步骤及书籍推荐

    第一步 嵌入式实时操作系统 COS II原理及应用 任哲编著 首选任哲的这本书 我建议先把这本书看一遍 xff0c 弄清楚ucos是怎么回事 xff0c 至于操作系统里面的具体代码实现 xff0c 大概了解就行 xff0c 可以暂且不去细究
  • 利用 Docker 编译 OpenWrt

    原文链接 xff1a 利用 Docker 编译 OpenWrt 五十风的个人博客 由于网络原因编译openwrt时经常下载失败 xff0c 搭建编译环境也很复杂 xff0c 因此想到利用阿里云 Github action等远程构建docke
  • Ubuntu20.04安装ROS Neotic修复依赖问题过程记录

    出现的问题 xff1a 下列软件包有未满足的依赖关系 xff1a ros noetic desktop full 依赖 ros noetic desktop 但是它将不会被安装 依赖 ros noetic perception 但是它将不会
  • ROS-学习笔记-03-(Ubuntu20.04 Noetic运行Web上位机和Nav2d)

    Ubuntu20 04 ROS Noetic 编译运行Nav2d 前言 Ubuntu20 04 Noetic 下的利用rosbridge roslib和ros2d等库实现的网页端Js Widget xff0c 以及运行PR2 Navigat
  • STL的确很好用

    STL的确很好用 以前只听过没用过 用了几次后 xff0c 发现的确方便 现在会自觉不自觉地用到 边用边学吧 map insert 返回 pair multimap insert 返回 iterator 来自 ITPUB博客 xff0c 链
  • ROS-学习笔记-04-( Ubuntu20.04编译ecto,boost1.7环境)

    目录 Ubuntu20 04编译ecto xff08 boost1 7环境 xff09 编译ecto简介1 下载源码安装依赖2 修改源码BuildInstall 参考 Ubuntu20 04编译ecto xff08 boost1 7环境 x