本文主要是介绍Fast DDS环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- Docker环境
- Fast DDS构建运行
- 运行原有demo
- 编译运行
本文主要记录Fast DDS docker环境搭建和examples代码运行
Docker环境
Fast DDS的docker环境可以直接在官网下载,如果自己要重新做一个,首先需要从Docker Hub上下载系统的docker镜像,由于众所周知的原因,普通方式是拿不到这个镜像的,所以推荐使用Fast DDS官方网站提供的docker镜像。
这是一个比较完整的Fast DDS Docker镜像,也可以在这里选择其他的。
下面以推荐的镜像搭建开发调试环境。
- 下载ubuntu-fastdds-suite_v2.14.0.tar镜像
- 加载镜像:
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
- 运行容器。一个镜像可以有多个容器,可以通过以下命令启动一个新的容器:
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
- 进入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
- 虽然做了很多事,但要修改和调试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环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!