feat: add dedicated Fast DDS 164 profile

This commit is contained in:
2026-07-23 15:52:35 +08:00
parent c70f4921b7
commit edbe450b66
3 changed files with 158 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<transport_descriptors>
<transport_descriptor>
<transport_id>rdk_udp_164</transport_id>
<type>UDPv4</type>
<interfaceWhiteList>
<address>192.168.10.164</address>
</interfaceWhiteList>
</transport_descriptor>
<transport_descriptor>
<transport_id>rdk_shm</transport_id>
<type>SHM</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="rdk_dds_164" is_default_profile="true">
<rtps>
<builtin>
<initialPeersList>
<locator>
<udpv4>
<address>192.168.10.151</address>
</udpv4>
</locator>
</initialPeersList>
</builtin>
<userTransports>
<transport_id>rdk_udp_164</transport_id>
<transport_id>rdk_shm</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>

30
config/dds/use_rdk_dds_164.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
echo "ERROR: source this file instead of executing it" >&2
exit 64
fi
_rdk_dds_profile="/home/sunrise/yiliao_ws/config/dds/fastdds_rdk_164.xml"
if ! ip -4 addr show dev wlx200db0c3fca5 2>/dev/null | grep -q 'inet 192\.168\.10\.164/'; then
echo "ERROR: wlx200db0c3fca5 does not own 192.168.10.164" >&2
unset _rdk_dds_profile
return 1
fi
if [[ ! -r "${_rdk_dds_profile}" ]]; then
echo "ERROR: unreadable Fast DDS profile: ${_rdk_dds_profile}" >&2
unset _rdk_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="${_rdk_dds_profile}"
export FASTDDS_DEFAULT_PROFILES_FILE="${_rdk_dds_profile}"
printf 'DDS link enabled: domain=%s rmw=%s local=192.168.10.164 profile=%s\n' \
"${ROS_DOMAIN_ID}" "${RMW_IMPLEMENTATION}" "${_rdk_dds_profile}"
unset _rdk_dds_profile

View File

@@ -772,3 +772,96 @@ Expected新提交只涉及四个 DDS 配置文件和本 Markdown原有 dir
- 当前 RMW 为 `rmw_fastrtps_cpp` - 当前 RMW 为 `rmw_fastrtps_cpp`
- 实施开始时仓库已有用户内容:`.vscode/browse.vc.db*` 修改,以及 `.codex``resource/``src/navigation/``src/obstacle_scanner/``src/origincar_birdseye/``src/third_party/``tf_bag/` 等未跟踪路径。 - 实施开始时仓库已有用户内容:`.vscode/browse.vc.db*` 修改,以及 `.codex``resource/``src/navigation/``src/obstacle_scanner/``src/origincar_birdseye/``src/third_party/``tf_bag/` 等未跟踪路径。
- 本任务不会暂存、修改或清理上述已有用户内容。 - 本任务不会暂存、修改或清理上述已有用户内容。
### RDKx5 配置实施结果
- 新增目录:`/home/sunrise/yiliao_ws/config/dds/`
- `/home/sunrise/yiliao_ws/config/dds/fastdds_rdk_164.xml`
- 权限:`0644`
- SHA-256`f6714ed471930500bc42d5100113782fb585ce50d48326118a0d0a3c8903d1be`
- `/home/sunrise/yiliao_ws/config/dds/use_rdk_dds_164.sh`
- 权限:`0755`
- SHA-256`5b40b2d3c61bd9d7eedfdb11ef1bb43dd60b3cdbb67ddcb1e2da01ab79996059`
XML 完整内容:
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<transport_descriptors>
<transport_descriptor>
<transport_id>rdk_udp_164</transport_id>
<type>UDPv4</type>
<interfaceWhiteList>
<address>192.168.10.164</address>
</interfaceWhiteList>
</transport_descriptor>
<transport_descriptor>
<transport_id>rdk_shm</transport_id>
<type>SHM</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="rdk_dds_164" is_default_profile="true">
<rtps>
<builtin>
<initialPeersList>
<locator>
<udpv4>
<address>192.168.10.151</address>
</udpv4>
</locator>
</initialPeersList>
</builtin>
<userTransports>
<transport_id>rdk_udp_164</transport_id>
<transport_id>rdk_shm</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>
```
环境脚本完整内容:
```bash
#!/usr/bin/env bash
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
echo "ERROR: source this file instead of executing it" >&2
exit 64
fi
_rdk_dds_profile="/home/sunrise/yiliao_ws/config/dds/fastdds_rdk_164.xml"
if ! ip -4 addr show dev wlx200db0c3fca5 2>/dev/null | grep -q 'inet 192\.168\.10\.164/'; then
echo "ERROR: wlx200db0c3fca5 does not own 192.168.10.164" >&2
unset _rdk_dds_profile
return 1
fi
if [[ ! -r "${_rdk_dds_profile}" ]]; then
echo "ERROR: unreadable Fast DDS profile: ${_rdk_dds_profile}" >&2
unset _rdk_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="${_rdk_dds_profile}"
export FASTDDS_DEFAULT_PROFILES_FILE="${_rdk_dds_profile}"
printf 'DDS link enabled: domain=%s rmw=%s local=192.168.10.164 profile=%s\n' \
"${ROS_DOMAIN_ID}" "${RMW_IMPLEMENTATION}" "${_rdk_dds_profile}"
unset _rdk_dds_profile
```
验证结果:
- `bash -n`:通过。
- XML well-formed通过。
- Fast DDS/RMW participant 实际创建:通过,输出 `RMW participant created`
- 环境摘要Domain `22`、RMW `rmw_fastrtps_cpp`、本地 DDS 地址 `.164`
- 首次从 PowerShell 直接拼接远端 `python3 -c` 时,引号在 SSH 边界被破坏Python 在读取 XML 前即报 `SyntaxError`。该失败与 XML 内容无关,未修改配置;改为通过 WSL Bash 和 stdin 传入验证程序后,相同验证完整通过。