Fast DDS环境搭建

2024-04-16 06:44
文章标签 搭建 环境 dds fast

本文主要是介绍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

这篇关于Fast DDS环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908057

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom