fastdda+ubuntu20.04+vscode实现(实测最简单安装教程)

news/2024/7/16 7:28:08 标签: vscode, ide, ubuntu, dds

fastdda+ubuntu20.04+vscode实现及各种问题处理

ubuntu镜像安装包及vm+密钥,私信我给你网盘资源(单纯懒得这会挂连接)

fastdds虚拟机安装

Dds安装(ubuntu

打开终端

1.更新工具(建议使用要不可能会出现一堆问腿)

sudo apt update

sudo apt upgrade

2.安装构建Fast DDS所需的依赖项

sudo apt install -y cmake git gcc g++ libssl-dev

3.获取Fast DDS源代码

3.1克隆Fast DDS的GitHub仓库:

git clone --recursive https://github.com/eProsima/Fast-DDS.git

3.2进入Fast DDS目录:

cd Fast-DDS

4.构建和安装Fast DDS

4.1创建一个构建目录并进入:

mkdir build && cd build

4.2配置CMake项目:

cmake -DTHIRDPARTY=ON -DBUILD_SHARED_LIBS=ON ..

4.3开始构建过程(这个会有一点点久,建议使用下面的管理员权限安装):

cmake --build . --target install

如果报错使用

sudo cmake --build . --target install

5.验证是否成功

检查Fast DDS库文件是否已经正确安装在系统的库目录中,如/usr/local/lib。使用ls命令来查看这些文件:

ls /usr/local/lib | grep fastrtps

成功安装后显示类似

命令行$ ls /usr/local/lib | grep fastrtps
libfastrtps.so
libfastrtps.so.2.14
libfastrtps.so.2.14.0

6.安装vscode,直接软件商店直接安装

疑难问题报错

1.cmake -DTHIRDPARTY=ON -DBUILD_SHARED_LIBS=ON ..   报错

CMake无法找到foonathan_memory库的配置文件。foonathan_memory是Fast DDS依赖的一个库通常,foonathan_memory库可以和Fast DDS一起作为第三方库自动获取和编译。如果失败,需要手动获取和安装这个库:

1)克隆foonathan_memory库的仓库:

git clone https://github.com/foonathan/memory.git

2)进入克隆的目录:

cd memory

3)创建一个构建目录并进入:

mkdir build && cd build

4)运行CMake配置:

cmake ..

5)构建并安装库:

cmake --build . --target install

这里如果报错改用管理员权限

sudo cmake --build . --target install

2.无法连接git 即无法进行克隆

重启虚拟机,运行

sudo apt update

sudo apt upgrade

如果还是不行建议重启vm(重复上述)

vscode编写代码运行

在Ubuntu环境下,使用Fast DDS在VSCode中创建一个简单的DDS发布者(Publisher)和订阅者(Subscriber)实现dds通信。

1.配置VSCode环境

确保VSCode已经安装。

安装C/C++扩展

2.创建和配置项目

在VSCode中,创建一个新的工作空间并为项目创建一个文件夹,比如DDSExample。

在DDSExample文件夹中,创建两个源文件:Publisher.cpp和Subscriber.cpp。

创建CMakeLists.txt文件来定义项目、指定Fast DDS库依赖。

下面是相关代码

//简单的发布者逻辑模板

#include <fastdds/dds/domain/DomainParticipantFactory.hpp>

#include <fastdds/dds/publisher/DataWriter.hpp>

#include <fastdds/dds/publisher/Publisher.hpp>

#include <fastdds/dds/topic/Topic.hpp>

#include <fastrtps/attributes/ParticipantAttributes.h>

#include <fastrtps/attributes/PublisherAttributes.h>

#include <fastrtps/participant/Participant.h>

#include <fastrtps/publisher/Publisher.h>

using namespace eprosima::fastdds::dds;

int main() {

    DomainParticipant* participant = DomainParticipantFactory::get_instance()->create_participant(0);

    // 创建发布者逻辑...

    // 注意:实际代码中你需要添加更多的逻辑来定义数据类型、创建主题、创建发布者等。

    // 清理资源

    DomainParticipantFactory::get_instance()->delete_participant(participant);

  

    return 0;

}
//简单的订阅者逻辑模板

#include <fastdds/dds/domain/DomainParticipantFactory.hpp>

#include <fastdds/dds/subscriber/DataReader.hpp>

#include <fastdds/dds/subscriber/Subscriber.hpp>

#include <fastdds/dds/topic/Topic.hpp>

#include <fastrtps/attributes/ParticipantAttributes.h>

#include <fastrtps/attributes/SubscriberAttributes.h>

#include <fastrtps/participant/Participant.h>

#include <fastrtps/subscriber/Subscriber.h>

using namespace eprosima::fastdds::dds;

int main() {

    DomainParticipant* participant = DomainParticipantFactory::get_instance()->create_participant(0);

    // 创建订阅者逻辑...

    // 注意:实际代码中你需要添加更多的逻辑来定义数据类型、创建主题、创建订阅者等。

    // 清理资源

    DomainParticipantFactory::get_instance()->delete_participant(participant);

    return 0;

}
//CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(DDSExample)

find_package(fastrtps REQUIRED)

add_executable(Publisher Publisher.cpp)

target_link_libraries(Publisher fastrtps)

add_executable(Subscriber Subscriber.cpp)

target_link_libraries(Subscriber fastrtps)

3.在VSCode的终端中,运行以下命令来构建项目

mkdir build && cd build

cmake ..

make

4.在build目录中,运行生成的发布者和订阅者可执行文件来测试(make后会在build中生成相关文件,要有发布者与订阅者的可执行文件,主要是运行这俩个)

./Publisher

./Subscriber


http://www.niftyadmin.cn/n/5480567.html

相关文章

【java工具-灵活拉取数据库表结构和数据】

需求&#xff1a; 假设我们现在有一个需求&#xff0c;需要快速拉取数据库的某些表建表语句&#xff0c;和数据&#xff0c;平时做备份之类&#xff1b; 我这边自己写了个工具&#xff0c;不多废话&#xff0c;也不整虚的&#xff0c; 直接看代码&#xff1a; package com.…

call, call.call, call.call.call, 你也许还不懂这疯狂的call

前言 Function.prototype.call 我想大家都觉得自己很熟悉了&#xff0c;手写也没问题&#xff01;&#xff01; 你确认这个问题之前&#xff0c; 首先看看 三千文字&#xff0c;也没写好 Function.prototype.call, 看完&#xff0c;你感觉还OK&#xff0c;那么再看一道题&…

linux大文件IO

在Linux中处理大文件&#xff08;通常指大小超过2GB的文件&#xff09;时&#xff0c;需要使用特定的系统调用和标志&#xff0c;以确保程序能够正确地处理大文件的读写。这主要是因为在32位系统上&#xff0c;传统的文件偏移量和文件大小使用off_t类型表示&#xff0c;它通常是…

互联网产品经理必备知识详解

1. 前言 本文档全面探讨了产品经理在产品管理过程中的关键环节,包括市场调研、产品定义及设计、项目管理、产品宣介、产品市场以及产品生命周期。通过深入剖析这些方面,本文旨在帮助产品经理系统地理解和掌握产品管理的核心要素,从而提升产品开发的效率和成功率。在市场调研…

【Linux-运维】查看操作系统的指定端口占用情况确定端口是哪个服务占用

不同的查看端口占用的方法&#xff0c;应用场景有所不同 一、查询某个端口是否被占用&#xff1f;lsof -i:端口号lsof -i:协议 查看某个协议的占用情况netstat -tlnp|grep 端口号ss -tlnp|grep 端口号fuser 端口号/协议ls -l /proc/$(lsof -t -i:端口号)|grep exe 二、确认指定…

2024年土木工程与环境科学国际会议(ICCEES2024)

2024年土木工程与环境科学国际会议(ICCEES2024) 会议简介 土木工程与环境科学是国民经济中的基础性、先导性、战略性产业&#xff0c;本次会议主要围绕土木工程与环保科学等研究领域&#xff0c;旨在吸引土木工程与生态环境工程专家学者、科技人员、&#xff0c;为广大工程师…

4.2.4 理解路由器数据包过程

1、实验目的 通过本实验可以掌握&#xff1a; 了解IP路由原理了解数据包封装和解封装的概念了解路由器路由和交换过程 2、实验拓扑 观察路由器路由数据包过程的实验拓扑如图4-3所示&#xff0c;设备接口地址信息如表4-2所示。 图4-3 观察路由器路由数据包过程的实验拓扑 本…

idea工具使用Tomcat创建jsp 部署servlet到服务器

在tomcat官网中下载对应windows版本的tomcat文件 Apache Tomcat - Welcome! 解压到系统目录中&#xff0c;记得不要有中文路径 新建一个java项目 点击右上角 点击加号 找到Tomcat Service的 Local 点击右下角的Fix一下&#xff0c;然后ok关闭 再重新打开一次 点击deployment …