ROS2 网卡白名单

Posted by shengliangd's blog on January 6, 2021

最近做实验用到 ROS2,需要限制通信时可用的网卡,解决方案不太好找,google 一番先大致确定了是要针对 DDS 设置(关于 ROS2 架构、DDS 等可参考这里),然后针对 ROS2 默认的 fastrtps 搜索。先是找到这里,然而并没有效果。后来在官方文档另一个页面 Advanced Functionalities 下发现还需要 <useBuiltinTransports>false</useBuiltinTransports>。完整的配置文件如下,把 IP1、IP2 等换成相应网卡的 IP 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8" ?>

<profiles>
        <transport_descriptors>
                <transport_descriptor>
                        <transport_id>my_transport</transport_id>
                        <type>UDPv4</type>
                        <interfaceWhiteList>
                                <address>IP1</address>
                                <address>IP2</address>
                        </interfaceWhiteList>
                </transport_descriptor>
        </transport_descriptors>
        <participant profile_name="participant_profile" is_default_profile="true">
                <rtps>
                        <userTransports>
                                <transport_id>my_transport</transport_id>
                        </userTransports>
                        <useBuiltinTransports>false</useBuiltinTransports>
                </rtps>
        </participant>
</profiles>