ROS2/ROS1开发过程中的一些记录

网友投稿 864 2022-10-12

ROS2/ROS1开发过程中的一些记录

ROS2/ROS1开发过程中的一些记录

其实,在进行ROS2/ROS1程序编写的时候,通常需要启动很多节点,有时候大于60+节点也非常常见的。

那么,就需要调度这些节点。不同节点工作频率不同,有些是10Hz就可以,有些需要1000Hz。

基础概念:

tasksetisolcpus

taskset 用于在给定 pid 的情况下设置或检索正在运行的进程的 CPU 亲和性,或者启动具有给定 CPU 亲和性的新命令。 CPU 亲和性是一种调度程序属性,它将进程“绑定”到系统上的一组给定 CPU。 Linux 调度程序将遵循给定的 CPU 亲和性,并且该进程不会在任何其他 CPU 上运行。请注意,Linux 调度程序还支持自然 CPU 亲和性:出于性能原因,调度程序会尝试将进程保持在同一个 CPU 上,只要可行。因此,强制特定的 CPU 亲和性仅在某些应用程序中有用。

CPU 亲和性表示为位掩码,最低位对应于第一个逻辑 CPU,最高位对应于最后一个逻辑 CPU。并非所有 CPU 都可能存在于给定系统上,但掩码可能指定比现有更多的 CPU。检索到的掩码将仅反映与系统上物理 CPU 对应的位。如果给出了无效的掩码(即,对应于当前系统上没有有效 CPU 的掩码),则会返回错误。掩码通常以十六进制给出。例如,

0x00000001 是处理器#00x00000003 是处理器#0 和#10xFFFFFFFF 是所有处理器(#0 到 #31)

当任务集返回时,可以保证给定程序已被调度到合法的 CPU 上。

isolcpus需要注意amd和intel的差异性,如果是arm或nVidia……

极端情况下性能不稳定,或者CPU占满。

采用 "events executor",这个在ROS 2 Humble可以直接使用,其他之前版本需要对应源码编译。

回调函数或时间

FastDDS需要配置后再使用,这样更好一些。

否则,有时 FastDDS 在其他节点正在运行时重新启动节点后无法列出节点/主题。

具体查看discovery_server;或者切换到CycloneDDS

如果选择CycloneDDS,也需要进行配置,而非直接使用默认参数

ROS_DOMAIN_ID配置相同在大量网络需求或多机器人情况下会使得网络不堪重负……

colcon build 最好加一些参数否则不怎么好用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序开发可用到的Vue框架及工具梳理
下一篇:小程序容器提升移动研发效率的经验
相关文章

 发表评论

暂时没有评论,来抢沙发吧~