Fast DDS环境搭建

目录

  • Docker环境
  • Fast DDS构建运行
    • 运行原有demo
    • 编译运行

本文主要记录Fast DDS docker环境搭建和examples代码运行

Docker环境

Fast DDS的docker环境可以直接在官网下载,如果自己要重新做一个,首先需要从Docker Hub上下载系统的docker镜像,由于众所周知的原因,普通方式是拿不到这个镜像的,所以推荐使用Fast DDS官方网站提供的docker镜像。
这是一个比较完整的Fast DDS Docker镜像,也可以在这里选择其他的。
下面以推荐的镜像搭建开发调试环境。

  1. 下载ubuntu-fastdds-suite_v2.14.0.tar镜像
  2. 加载镜像:docker load < ubuntu-fastdds-suite_v2.14.0.tar,通过这一步,镜像已经加载到系统中,如下所示
hello@gf:~/data/ilearning/docker/fastdds-suite$ docker images
REPOSITORY                              TAG                    IMAGE ID       CREATED        SIZE
fastdds_ilearning                       latest                 114c7bc7e4e4   2 days ago     1.94GB
ubuntu-fastdds-suite                    v2.14.0                79ac6f93292f   13 days ago    1.83GB
  1. 运行容器。一个镜像可以有多个容器,可以通过以下命令启动一个新的容器:
docker run -it -d --name sss ubuntu-fastdds-suite:v2.14.0 /bin/bash

其中,-d为后台运行,–name指定了容器的名称。后续可以通过这个名称操作该容器。完成后通过docker ps -a可以看到如下内容:

hello@gf:~/data/ilearning/docker/fastdds-suite$ docker ps -a
CONTAINER ID   IMAGE                                                        COMMAND                   CREATED         STATUS                    PORTS     NAMES
19c4527b0e3d   ubuntu-fastdds-suite:v2.14.0                                 "/bin/bash /root/ent…"   3 seconds ago   Up 3 seconds                        sss
  1. 进入docker容器,通过命令 docker exec -it sss /bin/bash。完成这一步操作后,可以进入容器中。此时可以发现,该镜像的容器中Fast DDS相关的so,头文件等都已经安装好:
root@19c4527b0e3d:/usr/local/eprosima# ls
COLCON_IGNORE             cpp_utils                 ddsrecorder_yaml  fastdds_python                    fastddsspy_tool          local_setup.zsh  setup.zsh
ShapesDemo                dds-suite.repos           ddsreplayer_tool  fastdds_python_examples           fastddsspy_yaml          plotjuggler
_local_setup_util_ps1.py  ddspipe_core              ddsrouter_core    fastdds_qos_profiles_manager_cli  fastrtps                 py_utils
_local_setup_util_sh.py   ddspipe_participants      ddsrouter_tool    fastdds_qos_profiles_manager_lib  foonathan_memory_vendor  resources
cmake_utils               ddspipe_yaml              ddsrouter_yaml    fastdds_statistics_backend        local_setup.bash         setup.bash
colcon.meta               ddsrecorder_participants  fastcdr           fastdds_visualizer_plugin         local_setup.ps1          setup.ps1
controller_tool           ddsrecorder_tool          fastdds_monitor   fastddsspy_participants           local_setup.sh           setup.sh

所以这里省了很多需要自己要搞的事情(如编译Fast CDR,asio,tinyXML等第三方库)
5. 修改镜像并导出为新的镜像:有时候镜像中的内容不满足我们的需要,比如缺少开发相关的软件如新建文件夹,安装开发工具等

  • 首先在docker容器中执行自己需要的操作如创建一个文件夹作为工作目录,如/FastDDS,还需要安装一些常用工具,如cmake,git,vim等,这些可以通过apt-get install xx来安装。
  • exit命令退出环境
  • 将这个容器提交为新容器:docker commit container_name/container_id new_image_name:tag,此时新的镜像也生成了
zee001-w@gf:~/data/ilearning/docker/fastdds-suite$ docker images
REPOSITORY                              TAG                    IMAGE ID       CREATED         SIZE
my_new_dds_docker                       0.0.0.1                19d885b3aaa3   3 minutes ago   1.83GB
ubuntu-fastdds-suite                    v2.14.0                79ac6f93292f   13 days ago     1.83GB
  • 保存这个新的镜像:docker save new-image-name:tag > new-image.tar。如 docker save my_new_dds_docker:0.0.0.1>my_new_dds.tar
  1. 虽然做了很多事,但要修改和调试Fast DDS代码,还需要和本地做同步,这时候需要将docker的容器和本地挂载。这在执行第三步时通过-v命令指定目录挂载:
    docker run -it -v /home/user/data/ilearning/fastdds:/FastDDS /bin/bash

通过以上步骤,就可以创建好一个完整的Fast DDS docker镜像环境。

Fast DDS构建运行

运行原有demo

以上步骤已经完成了Fast DDS编译环境的搭建,可以直接通过已存在的命令goToExamples进入demo运行:

root@1d4740174553:/# goToExamples
root@1d4740174553:/usr/local/eprosima/fastrtps/examples/cpp# tree
.
|-- dds
|   |-- AdvancedConfigurationExample
|   |   `-- bin
|   |       `-- AdvancedConfigurationExample
|   |-- BasicConfigurationExample
|   |   `-- bin
|   |       `-- BasicConfigurationExample
|   |-- Configurability
|   |   `-- bin
|   |       |-- DDSConfigurabilityPublisher
|   |       `-- DDSConfigurabilitySubscriber
|   |-- ContentFilteredTopicExample
|   |   `-- bin
|   |       `-- DDSContentFilteredTopicExample
|   |-- CustomListenerExample
...

编译运行

进入fastrtpscmake命令:

cmake -H. -Bbuild  # 创建build目录
cmkae --build ./build

编译后的二进制文件存放于build目录下,此时运行example会链接到已经安装好的dds的so,需要重新设置到自己编译的so:
export LD_LIBRARY_PATH=/FastDDS/fastrtps/build/src/cpp:$LD_LIBRARY_PATH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LAMMPS学习】八、基础知识(3.1)LAMMPS 的输出

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

maven引入外部jar包

将jar包放入文件夹lib包中 pom文件 <dependency><groupId>com.jyx</groupId><artifactId>Spring-xxl</artifactId><version>1.0-SNAPSHOT</version><scope>system</scope><systemPath>${project.basedir}/lib/Spr…

Android gdb调试

Android gdb调试 前置条件&#xff1a; 1.Linux环境&#xff0c;比如Ubutun 2.python工具&#xff1a;建议2,7&#xff0c; 安装命令 sudo apt-get install libpython2.7 3.Android完整codebase 4.开发板 操作步骤&#xff1a; adb root adb remount adb shell #4027为进程id g…

电商技术揭秘二十四:无人仓储与自动化技术

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

华媒舍:7种方式,打造出旅游媒体套餐

现如今&#xff0c;伴随着旅游业发展与繁荣&#xff0c;更多旅游业发展从业人员越来越重视产品营销品牌基本建设&#xff0c;希望可以将自己的度假旅游产品和服务营销推广给更多的潜在用户。而建立一个优秀的旅游业发展媒体套餐内容品牌是吸引目标客户的重要步骤。下面我们就详…

Golang | Leetcode Golang题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; func findSubstring(s string, words []string) (ans []int) {ls, m, n : len(s), len(words), len(words[0])for i : 0; i < n && im*n < ls; i {differ : map[string]int{}for j : 0; j < m; j {differ[s[ij*n:i(j1)*n]…

把握零碎时间,开启长期副业兼职之旅!在家也能轻松赚钱!

转眼间&#xff0c;2024年已悄然走过三分之一。这一年&#xff0c;外界环境似乎并不那么友好&#xff0c;但对我而言&#xff0c;我的月收入仍然相对稳定。我找到的副业让我每月能赚到3000元以上&#xff0c;这让我深感庆幸。 现实中&#xff0c;只依赖主业工资的日子确实艰辛…

【LeetCode热题100】【回溯】分割回文串

题目链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 要找出所有分割这个字符串的方案使得每个子串都是回文串&#xff0c;写一个判断回文串的函数&#xff0c;深度遍历回溯去找出所有分割方案&#xff0c;判断分割的子串是否是回文串 class Soluti…

c++编译成汇编以及对汇编学习笔记

1. 引言 为了深入理解c&#xff0c;决定学习一些简单的汇编语言。使用ubuntu系统下g很容易将一个c的文件编译成汇编语言。本文使用此方法&#xff0c;对一个简单的c文件编译成汇编语言进行理解。 2.示例 文件名&#xff1a;reorder_demo.cpp #include<stdio.h>typede…

Linux Ubuntu 网络异常

1.开发背景 ubuntu 虚拟机下开发程序时&#xff0c;出现网络 IP 地址找不到问题 2.开发需求 在 ubuntu 网络找不到的情况下重启网络 3.开发环境 ubuntu20.04 4.实现步骤 4.1 挂起虚拟机恢复后异常 解决方法&#xff1a;重启网络管理器 sudo /etc/init.d/network-manager …

更改ip地址的几种方式有哪些

在数字化时代&#xff0c;IP地址作为网络设备的标识&#xff0c;对于我们在网络世界中的活动至关重要。然而&#xff0c;出于多种原因&#xff0c;如保护隐私、访问特定网站或进行网络测试&#xff0c;我们可能需要更改IP地址。虎观代理将详细介绍IP地址的更改方法与步骤&#…

在Ubuntu 14.04上配置Redis集群的方法

简介 Redis 是一个开源的键值对数据存储&#xff0c;采用内存存储模型&#xff0c;并可选择磁盘写入以实现持久化。它具有事务、发布/订阅和自动故障转移等功能。推荐在生产环境中使用 Linux 来部署 Redis&#xff0c;但开发人员也提到 OS X 作为他们开发和测试的平台。Redis …

如何配置和使用网关(Gateway)

简介 在现代的微服务架构中,网关(Gateway)扮演着非常重要的角色。本文将介绍网关的基本概念以及如何配置和使用它。我们将以一个实际的示例来说明如何设置和使用网关。 什么是网关? 简要介绍网关在微服务架构中的作用,以及为什么我们需要它。选择网关 介绍当前流行的网关…

Spring Boot 学习(5)——组件注册

也是学得头晕眼花&#xff0c;终于知道学有多么难了&#xff0c;更知道教有多么难了…… 各位大神们出的教程终归和正规出版社还是差距的&#xff0c;我觉得是没有“审定”&#xff0c;这对于大多数做教程的人来说这应该通病&#xff1a;自己做&#xff08;讲&#xff09;的东西…

Java基础(一)--语法入门

文章目录 第一章、语法入门一、Java简介1、JVM2、Java程序执行过程3、JDK4、JRE5、JDK、JRE和JVM三者关系 二、Java常量与变量1、标识符2、关键字3、保留字4、变量5、数据类型6、常量 三、运算符1、算术运算符2、赋值运算符3、关系运算符4、逻辑运算符5、条件运算符6、运算符的…

DataX自动化生成配置json,创建ODS表,多线程调度脚本[mysql-->hive]

DataX自动生成json配置文件及多线程执行脚本(仅支持mysql-->hive),其他版本自行实现,修改json模版即可 执行Datax任务 datax_run.py # 指定项目下的所有的ods任务,如果不指定参数,默认执行dw下的prefix过滤后的所有抽取任务 # 使用方式:python3 datax_run.py -p 项目名 -…

反爬虫之代理IP封禁-协采云IP池

反爬虫之代理IP封禁-协采云IP池 1、目标网址2、IP封禁4033、协采云IP池 1、目标网址 aHR0cDovL3d3dy5jY2dwLXRpYW5qaW4uZ292LmNuLw 2、IP封禁403 这个网站对IP的要求很高&#xff0c;短时间请求十几次就会遭关进小黑屋。如下图&#xff1a; 明显是网站进行了反爬处理&…

【JVM】JVM的垃圾回收机制与垃圾回收器的选择

昨天说了JVM的工作流程&#xff0c;感兴趣的可以先去看一看。今天咱们接着来探讨JVM的垃圾回收机制&#xff0c;包括其工作原理、如何确定对象回收、可用的垃圾回收器以及如何进行垃圾回收器的选择与配置。 1.工作原理 JVM的垃圾回收机制主要依赖于垃圾回收器来自动管理内存的…

Cannot access ‘androidx.activity.FullyDrawnReporterOwner‘

Android Studio新建项目就报错&#xff1a; Cannot access ‘androidx.activity.FullyDrawnReporterOwner’ which is a supertype of ‘cn.dazhou.osddemo.MainActivity’. Check your module classpath for missing or conflicting dependencies 整个类都报错了。本来原来一直…

OpenCV-AMF算法(自适应中值滤波Adaptive Median Filtering)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 AMF&#xff08;Adaptive Median Filter&#xff0c;自适应中值滤波&#xff09;是一种用于图像处理和信号处理的滤波算…