docs: record Fast DDS validation findings
This commit is contained in:
@@ -979,3 +979,69 @@ unset _wsl_dds_profile
|
|||||||
- 修正:在 RDKx5 和 WSL profile 的 `<builtin>` 中加入 `<avoid_builtin_multicast>true</avoid_builtin_multicast>`,保留双端 initial peer 进行单播发现。
|
- 修正:在 RDKx5 和 WSL profile 的 `<builtin>` 中加入 `<avoid_builtin_multicast>true</avoid_builtin_multicast>`,保留双端 initial peer 进行单播发现。
|
||||||
- 范围:只修改两个已批准的 Fast DDS XML;不修改系统网卡的多播设置、路由、防火墙或 ROS package。
|
- 范围:只修改两个已批准的 Fast DDS XML;不修改系统网卡的多播设置、路由、防火墙或 ROS package。
|
||||||
- 修正后的必要验收:双向消息仍成功,`.164` Domain 22 抓包大于零,`.210` Domain 22 抓包为零。
|
- 修正后的必要验收:双向消息仍成功,`.164` Domain 22 抓包大于零,`.210` Domain 22 抓包为零。
|
||||||
|
|
||||||
|
### WSL 接口名修正结果
|
||||||
|
|
||||||
|
- 修正提交:`9349f53cbc78851d9d053799af26f8055f58f9d3`
|
||||||
|
- 修正后脚本 SHA-256:`4dd272d34bbc480e7f5d112348fad7bb59532f155cdabbdc7e7b98dda7ff6155`
|
||||||
|
- 当前 WSL 接口为 `eth3`、地址仍为 `.151` 时,脚本加载通过。
|
||||||
|
- 实际 participant socket 为 `.151:12900`、`.151:12910`、`.151:12911` 及 `.151` 上的自定义 UDP socket,没有绑定 WSL 的其他地址。
|
||||||
|
|
||||||
|
修正后脚本完整内容:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
|
||||||
|
echo "ERROR: source this file instead of executing it" >&2
|
||||||
|
exit 64
|
||||||
|
fi
|
||||||
|
|
||||||
|
_wsl_dds_profile="/home/hikos/Yiliao2026/config/dds/fastdds_wsl_151.xml"
|
||||||
|
|
||||||
|
if ! ip -o -4 addr show 2>/dev/null | grep -q 'inet 192\.168\.10\.151/'; then
|
||||||
|
echo "ERROR: no local IPv4 interface owns 192.168.10.151" >&2
|
||||||
|
unset _wsl_dds_profile
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -r "${_wsl_dds_profile}" ]]; then
|
||||||
|
echo "ERROR: unreadable Fast DDS profile: ${_wsl_dds_profile}" >&2
|
||||||
|
unset _wsl_dds_profile
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ROS_DOMAIN_ID=22
|
||||||
|
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
|
||||||
|
export ROS_LOCALHOST_ONLY=0
|
||||||
|
export FASTRTPS_DEFAULT_PROFILES_FILE="${_wsl_dds_profile}"
|
||||||
|
export FASTDDS_DEFAULT_PROFILES_FILE="${_wsl_dds_profile}"
|
||||||
|
|
||||||
|
printf 'DDS link enabled: domain=%s rmw=%s local=192.168.10.151 peer=192.168.10.164 profile=%s\n' \
|
||||||
|
"${ROS_DOMAIN_ID}" "${RMW_IMPLEMENTATION}" "${_wsl_dds_profile}"
|
||||||
|
unset _wsl_dds_profile
|
||||||
|
```
|
||||||
|
|
||||||
|
### 关闭发现多播的文件结果
|
||||||
|
|
||||||
|
- RDKx5 XML:
|
||||||
|
- 新 SHA-256:`9c7acb168af9eacd93b41e03e02f8554570c94853ab5cd485782ba9483b72be8`
|
||||||
|
- commit:`e7c3fe9`
|
||||||
|
- WSL XML:
|
||||||
|
- 新 SHA-256:`990904e92ff54c76e04b70a7aa27fc9331484b2292635f1c22dddaeb0b16d52d`
|
||||||
|
- commit:`4b11f35`
|
||||||
|
- 两个 XML 均只在 `<builtin>` 下新增:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<avoid_builtin_multicast>true</avoid_builtin_multicast>
|
||||||
|
```
|
||||||
|
|
||||||
|
- 两端 XML well-formed 检查通过,Fast DDS/RMW participant 实际创建通过,没有 profile 或 transport 解析错误。
|
||||||
|
|
||||||
|
### 双向与网卡验证过程
|
||||||
|
|
||||||
|
1. 首次使用 `ros2 topic` CLI 测试时,既有 Domain 0 daemon 干扰等待逻辑,改用不依赖 CLI daemon 的临时 `rclpy` 发布/订阅节点。
|
||||||
|
2. 关闭发现多播前的受控测试:双向消息成功,`.164` 捕获 189 个 Domain 22 包,`.210` 只捕获 3 个 SPDP 多播包,没有 `.210` 单播。
|
||||||
|
3. 关闭发现多播后的首次重测开始前,RDKx5 上出现一套由其他终端启动的未配置 `obstacle_nav2`,其 Domain 22 socket 绑定 `0.0.0.0`,破坏了“无其他 participant”的受控前提。该次消息超时不作为 XML 结论。
|
||||||
|
4. 当前运行命令确认为 `ros2 launch obstacle_nav2 obstacle_nav2.launch.py enable_motion:=true`,来源终端 `pts/3`;进程环境只有 `ROS_DOMAIN_ID=22`、`ROS_LOCALHOST_ONLY=0`,没有 Fast DDS profile 变量。
|
||||||
|
5. 因该 launch 已启用真实运动,实施者未擅自终止。最终双向和双网卡验证等待该 launch 停止,或获得明确授权后用专用 DDS 环境重新启动。
|
||||||
|
|||||||
Reference in New Issue
Block a user