外贸soho怎么建网站建设网站的方法

当前位置: 首页 > news >正文

外贸soho怎么建网站,建设网站的方法,男孩子和男孩子在一起怎么做网站,哈尔滨模板网站建设目录 一、什么是AimRT二、AimRT与ROS22.1 定位与设计2.2 组成与通信方式对比 三、AimRT基本概念3.1 Node、Pkg 和 Module3.2 Protocol、Channel、Rpc 和 Filter3.3 App模式 和 Pkg模式3.4 Executor3.5 Plugin 一、什么是AimRT AimRT 是智元机器人公司自主研发的一款机器人通信… 目录 一、什么是AimRT二、AimRT与ROS22.1 定位与设计2.2 组成与通信方式对比 三、AimRT基本概念3.1 Node、Pkg 和 Module3.2 Protocol、Channel、Rpc 和 Filter3.3 App模式 和 Pkg模式3.4 Executor3.5 Plugin 一、什么是AimRT AimRT 是智元机器人公司自主研发的一款机器人通信中间件。 AimRT 是一个面向现代机器人领域的运行时开发框架。 它基于 C20 开发轻量且易于部署在资源管控、异步编程、部署配置等方面具有更现代的设计。旨在为开发者提供一个轻量化的 ROS2 替代中间件 AimRT 致力于整合机器人端侧、边缘端、云端等各种部署场景的研发。 它服务于现代基于人工智能和云的机器人应用提供完善的调试和性能分析工具链以及良好的可观测性支持。 AimRT 还提供了全面的插件开发接口具有高度可扩展性。 它与 ROS2、HTTP、Grpc 等传统机器人生态系统或云服务生态系统兼容并支持对现有系统的逐步升级。 AimRT架构 二、AimRT与ROS2 AimRT 相对于 ROS 并不是取代的关系而是互补的AimRT目前没有像ROS一样庞大的社区支持同样ROS也没有对现代机器人RobotAI、RobotCloud的良好支持官方对AimRT的定位是对标ROS的通信层组件。官方提供了强大的兼容性加载了 AimRT 官方提供的 ROS2 Humble插件的 AimRT 节点可以被认为就是一个 ROS2 节点可以使用大部分 ROS2 Humble的生态例如 rviz 或 plotjuggler 等。 2.1 定位与设计 AimRT AimRT 是一个更现代、轻量易用且高效稳定的通信开发框架致力于整合机器人端侧、边缘端、云端等多种部署场合的研发更适用于现代基于AI与云的机器人应用。基于 C20 开发轻量易部署在资源管控、异步编程、部署配置等方面都有更现代化的设计。 ROS2 ROS2 是为了传统机器人控制领域设计的可以较好地支持运动控制、Slam等领域。旨在构建一个统一的机器人开发生态系统为机器人开发者提供一个开放、可扩展的平台用于构建、部署和管理机器人应用程序。广泛应用于工业自动化、服务机器人、智能交通、医疗保健以及农业机器人等多个领域。其强大的生态系统和丰富的工具链使得它成为这些领域的首选开发平台。
2.2 组成与通信方式对比 基本特点对比 ROS2AimRT开发语言C/PythonC/Python使用的C标准C17C20构建工具colconCMake核心组件节点管理器、消息中间件、参数服务器等配置管理器、插件管理器、执行器、日志管理器等生态系统庞大的算法包、功能包和工具链插件化设计提供插接点和查询API支持二次开发默认通信中间件快速数据分发Fast DDS插件化通信层ROS2、Zenoh、Http、Grpc、Mqtt等多种通信插件通信方式Topic主题、Service服务、Parameter Server参数服务器、Actionlib动作库支持ROS2、Zenoh、Http、Grpc、Mqtt等多种通信插件无缝接入多套通信方式分布式架构支持允许节点在多个物理机器上运行通过网络进行通信支持通过多种通信插件实现在不同的物理位置或逻辑分区上进行通信对云和AI的支持-从上层通信接口、底层通信方式上都对云和AI领域有较好的支持适用场景适用于大规模和复杂的机器人系统适用于现代基于AI与云的机器人应用提供高性能的通信中间件 通信方式对比 ROS2AimRT发布订阅机制Topic话题Channel数据通道请求应答机制Service服务Rpc远程过程调用 三、AimRT基本概念 AimRT的官方文档讲的很详细了官方解释见 AimRT 中的基本概念 这里只讲一下自己的理解有不同理解可以交流。 架构相关概念Node、Pkg、Module 通信相关概念Protocol、Channel、Rpc、Filter 两种业务逻辑集成方式App模式 和 Pkg模式 其他Executor、Plugin 3.1 Node、Pkg 和 Module Node 是一个运行示例类似于 ROS 的 Node是一个进程可以部署到不同的物理位置。 Module 是一些逻辑功能内聚的源码类似在模块化编程中的模块Module 之间不是通过引用头文件调用接口来通信而是使用 Channel 与 Rpc 来通信降低了 Module 间的耦合性。 Pkg 本质是一个动态库他可以包含多个 Module同时一个Node也可以链接多个动态库。 他们的关系大致如下 3.2 Protocol、Channel、Rpc 和 Filter Protocol 即通信数据格式类似 ROS 的消息msg/srv目前支持 Protobuf 和 ROS2 msg/srv Channel 即发布订阅通信机制类似 ROS 的 Topic。 发布接口端广播 Protocol 格式的消息数据数据通过发布后端转化为相应协议的数据格式Mqtt是TCP/IP协议ROS2则是DDS协议订阅后端接收到数据后再转回 Protocol 格式通过订阅接口输出。 由于多了一层后端的处理使得 AimRT 即将各业务模块解耦又可以适配多种通信协议。 Rpc 是请求应答通信机制类似 ROS 的 Service。 客户接口端发出请求的 Protocol 格式消息数据数据通过客户后端转化为相应协议的数据格式Mqtt是TCP/IP协议ROS2则是DDS协议服务后端接收到数据后再转回 Protocol 格式传给服务接口待请求数据处理完应答数据再原路返回。 Filter 可以理解为 AimRT 通信数据管道中的过滤器分为框架侧 FilterFramework Filter和用户侧 FilterUser Filter。用户可以通过自定义该过滤器的行为查看数据信息。 3.3 App模式 和 Pkg模式 AimRT 发布程序的两种方式App模式可以理解为免安装方式它的编译结果只生成一个可执行文件一般用于小工具、小型 Demo 场景没有太大的模块解耦需求 Pkg模式发布一个动态库一般用于中大型项目对模块解耦、二进制发布等有较强烈需求时。 3.4 Executor Executor 执行器表示一个可以执行逻辑代码的抽象概念一个执行器可以是一个线程池、可以是一个协程/纤程可以是 CPU、GPU、甚至是远端的一个服务器。执行器的作用是对并发任务的管理和调度我们平常写的最简单的代码也有一个默认的执行器主线程。 开发者使用 AimRT 的执行器功能时在业务层将任务打包成一个闭包然后调用接口层的 API将任务投递到具体的执行器内而执行器会根据自己的调度策略在一定时机执行投递过来的任务。具体逻辑流程如下图所示 对于闭包我们经常用到的 lambda表达式、std::function、std::bind等都可以创建闭包。 比如下面例子 #include iostream #include thread #include mutex #include condition_variable #include chronostd::mutex mtx; std::condition_variable cv; bool ready false;void print_id(int id) {std::unique_lockstd::mutex lck(mtx);// 使用 lambda 表达式作为谓词while (!cv.wait_for(lck, std::chrono::seconds(1), []{return ready;})) {std::cout Thread id waiting for condition variable to be notified…\n;}std::cout Thread id proceeding after condition variable was notified.\n; }void go() {std::unique_lockstd::mutex lck(mtx);ready true;cv.notify_all(); // 通知所有等待的线程 }int main() {std::thread threads[10];// 创建并启动10个线程for (int i 0; i 10; i)threads[i] std::thread(print_id, i);std::cout 10 threads ready to race…\n;std::this_thread::sleep_for(std::chrono::seconds(2)); // 主线程等待2秒go(); // 设置条件变量并通知所有线程for (auto th : threads) th.join(); // 等待所有线程完成return 0; }std::wait_for 函数通过处理 lambda 表达式是否需要继续等待其中std::wait_for就是一个执行器 lambda 表达式就是一个任务闭包。 3.5 Plugin Plugin 是AimRT 与 ROS 最不同的地方了正因为 AimRT 提供了大量的插件接口使得它有很强的兼容性与扩展性。 Plugin 本质上就是一个可以向 AimRT 框架注册各种自定义功能的动态库开发者也可以定制开发自己的插件插件开发方式。 欢迎加QQ群一起讨论学习894013891