前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Apollo】CyberRT(CMake)环境配置与使用示例

【Apollo】CyberRT(CMake)环境配置与使用示例

作者头像
DevFrank
发布2024-07-24 16:05:16
10
发布2024-07-24 16:05:16
举报
文章被收录于专栏:C++开发学习交流

😏1. 项目介绍

我们学习Apollo时可能会面临两个难点:1.项目是基于Docker部署的 2.项目时基于Bazel编译的

为了便于学习,我们一般还是在本地源码编译好,可方便的调试,另外,大多数人应该对CMake更熟悉一点,因此,在Github上找到了这样一个基于CMake编译的CyberRT开发框架

项目Github地址:https://github.com/minhanghuang/CyberRT

CyberRT介绍:https://developer.apollo.auto/cyber_cn.html CyberRT教程:https://cyber-rt.readthedocs.io/en/latest/

CyberRT 是一款开源、高性能的运行时框架,专门为自动驾驶场景设计。它由百度 Apollo 项目开发和维护。CyberRT 旨在解决自动驾驶系统中固有的高并发、低延迟和高吞吐量等挑战。

CyberRT 的主要特点:

1.面向组件的架构: CyberRT 采用面向组件的架构,每个组件封装一个特定的功能,并通过定义良好的接口与其他组件进行通信。这种模块化方法促进了代码的重用性、可维护性和可扩展性。

2.数据驱动通信: CyberRT 利用数据驱动通信范式,实现了组件之间的高效数据交换。数据通过通道发布和订阅,确保只有感兴趣的组件才能接收相关信息。

3.资源管理: CyberRT 提供高效的资源管理能力,确保计算资源得到有效分配,以满足不同组件的需求。这有助于优化性能并防止资源瓶颈。

4.确定性执行: CyberRT 提供确定性执行机制,保证任务以可预测的顺序并在指定的时间约束内执行。这对于像自动驾驶这样的实时应用至关重要。

使用 CyberRT 的优势:

1.增强性能: CyberRT 优化的通信和资源管理机制有助于提高整体系统性能,实现更快的速度数据处理和任务执行。

2.降低延迟: 数据驱动通信方法和确定性执行功能最大限度地降低了延迟,确保对传感器数据和关键事件的及时响应。

3.提高可扩展性: 面向组件的架构和资源管理功能促进了可扩展性,使框架能够处理自动驾驶系统不断增长的复杂性和计算需求。

CyberRT 主要用于自动驾驶应用,作为管理和协调各种软件组件的基础运行时框架。它支持高效的数据交换、任务执行和资源管理,确保自动驾驶系统的平稳运行。除了自动驾驶,CyberRT 还可以潜在应用于其他需要高性能、低延迟和实时通信的领域,例如机器人、分布式系统和工业自动化。

😊2. 环境配置

如果系统访问Github正常的话,直接按照项目里的README安装就可以。

代码语言:javascript
复制
# 安装依赖
sudo apt update
sudo apt install -y libpoco-dev uuid-dev libncurses5-dev python3-dev python3-pip
python3 -m pip install protobuf==3.14.0
# 下载项目并编译
git clone --single-branch --branch v9.0.0 https://github.com/minhanghuang/CyberRT.git
cd CyberRT
sudo python3 install.py
source install/setup.bash
mkdir build && cd build
cmake ..
make -j$(nproc)

如果有问题的话,也可以看我fork后的这个项目:https://github.com/frankwang98/CyberRT

这里我没有指定protobuf的版本,在ubuntu直接apt安装即可:sudo apt-get install libprotobuf-dev protobuf-compiler

在这里插入图片描述
在这里插入图片描述

安装第三方库install.py这里,将一些github库加了代理,便于下载安装。

😆3. 使用说明

安装完成后,可以运行自带的示例验证安装。

发布和订阅示例:

代码语言:javascript
复制
# talker
source setup.bash
./cyber/examples/cyber_example_talker
# listener
source setup.bash
./cyber/examples/cyber_example_listener

组件示例:

代码语言:javascript
复制
source setup.bash
cyber_launch start share/examples/common_component_example/common.launch
./cyber/examples/common_component_example/channel_prediction_writer
./cyber/examples/common_component_example/channel_test_writer

此外,CyberRT也也有一些类似ROS的工具,如:

代码语言:javascript
复制
# cyber_channel list echo等
source setup.bash
cyber_channel list

source setup.bash
cyber_channel echo /apollo/test

# cyber_node
cyber_node list
cyber_node info

# cyber_service
cyber_service list
cyber_service info

# cyber_launch
cyber_launch start share/examples/common_component_example/common.launch

# monitor
cyber_monitor

# recorder
cyber_recorder info
cyber_recorder play
cyber_recorder record
cyber_recorder split
cyber_recorder recover
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. 项目介绍
  • 😊2. 环境配置
  • 😆3. 使用说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档