fix
This commit is contained in:
@@ -361,7 +361,7 @@ sudo apt install -y \
|
||||
ros-humble-sensor-msgs \
|
||||
ros-humble-geometry-msgs \
|
||||
ros-humble-rmw-fastrtps-cpp \
|
||||
ros-humble-ros2control \
|
||||
ros-humble-ros2-control \
|
||||
python3-colcon-common-extensions
|
||||
|
||||
# 检查内存
|
||||
@@ -376,13 +376,10 @@ ROS2 默认启动 `ros2 daemon` 加速 `ros2 ...` 命令调用,但每节点起
|
||||
```bash
|
||||
# 停 + 禁启 daemon
|
||||
pkill -9 -f ros2_daemon 2>/dev/null
|
||||
echo 'unset ROS_DAEMON_PYTHON_OR_EXECUTABLE' >> ~/.bashrc
|
||||
|
||||
# 或 alias,直接绕过 daemon
|
||||
cat >> ~/.bashrc <<'EOF'
|
||||
alias ros2='ros2 --no-daemon'
|
||||
EOF
|
||||
source ~/.bashrc
|
||||
# 注:`alias ros2='ros2 --no-daemon'` 写到 ~/.bashrc **不会传给子脚本**(脚本里 `ros2` 不展开 alias)。
|
||||
# Humble 里 `ros2 topic ... --no-daemon` 这个 flag 已被 deprecated,改用下面的方案:
|
||||
# 设 CYCLONE_DDS_URI / FASTRTPS_DEFAULT_PROFILES_FILE 走静态发现,从根本上不用 daemon
|
||||
|
||||
# 验证: 不再起 daemon
|
||||
ps aux | grep -v grep | grep -i daemon | head -3
|
||||
@@ -422,6 +419,8 @@ cat > ~/.ros/fastdds.xml <<'EOF'
|
||||
|
||||
<discovery_config>
|
||||
<discoveryProtocol>SIMPLE</discoveryProtocol>
|
||||
<!-- discoveryStrategy 决定 SIMPLE 的语义:STATIC(只连 initialPeersList)/ NONE(全不主动连)/ MULTICAST(默认)
|
||||
跟 <initialPeersList> 配合才能实现"单播静态发现" -->
|
||||
<discoveryStrategy>STATIC</discoveryStrategy>
|
||||
<leaseDuration>30</leaseDuration>
|
||||
</discovery_config>
|
||||
@@ -484,8 +483,8 @@ source /opt/ros/humble/setup.bash
|
||||
source ~/ros2_ws/install/setup.bash
|
||||
export ROS_DOMAIN_ID=0
|
||||
|
||||
# 跑 cpp_robot_tf2 的关节发布者
|
||||
ros2 run cpp_robot_tf2 joint_state_publisher
|
||||
# 跑 cpp_robot_tf2 的关节发布者(executable 名是 joint_state_publisher_cpp,不是 joint_state_publisher)
|
||||
ros2 run cpp_robot_tf2 joint_state_publisher_cpp
|
||||
|
||||
# 预期
|
||||
[joint_state_publisher_cpp]: joint_state_publisher_cpp started, joints: 3
|
||||
@@ -572,14 +571,14 @@ ros2 run py_vision_demo fake_camera # 或你写的 YOLO 节点
|
||||
ssh user@192.168.1.31
|
||||
source /opt/ros/humble/setup.bash
|
||||
source ~/ros2_ws/install/setup.bash
|
||||
ros2 run cpp_robot_tf2 joint_state_publisher
|
||||
ros2 run cpp_robot_tf2 joint_state_publisher_cpp
|
||||
# (后续:接真实电机时改读编码器)
|
||||
|
||||
# === 在 PC 上监控全部 ===
|
||||
docker exec ros2_dev bash -lc "ros2 node list --no-daemon"
|
||||
# 看到 /fake_camera_py (RDK X5), /joint_state_publisher_cpp (RK3506)
|
||||
docker exec ros2_dev bash -lc "ros2 node list"
|
||||
# 看到 /fake_camera (RDK X5), /joint_state_publisher (RK3506,launch 重命名去掉了 _cpp 后缀)
|
||||
|
||||
docker exec ros2_dev bash -lc "ros2 topic hz /image_raw /joint_states --no-daemon"
|
||||
docker exec ros2_dev bash -lc "ros2 topic hz /image_raw /joint_states"
|
||||
# /image_raw: ~10Hz
|
||||
# /joint_states: ~20Hz
|
||||
```
|
||||
@@ -597,11 +596,11 @@ ros2 run py_vision_demo fake_camera # 1 节点
|
||||
|
||||
# === RK3506 #1 ===
|
||||
ssh user@192.168.1.31
|
||||
ros2 run cpp_robot_tf2 joint_state_publisher # 1 节点
|
||||
ros2 run cpp_robot_tf2 joint_state_publisher_cpp # 1 节点
|
||||
|
||||
# === RK3506 #2 ===
|
||||
ssh user@192.168.1.32
|
||||
ros2 run cpp_robot_tf2 tf2_listener # 1 节点
|
||||
ros2 run cpp_robot_tf2 tf2_listener_cpp # 1 节点
|
||||
|
||||
# === 在任一设备看 ===
|
||||
ros2 node list --no-daemon
|
||||
@@ -793,7 +792,8 @@ echo $ROS_DOMAIN_ID # 三机都要一样
|
||||
|
||||
切单播 (4.5 节):
|
||||
```bash
|
||||
export ROS_STATIC_PEERS="192.168.1.10:7400;192.168.1.20:7400"
|
||||
# 分隔符是英文逗号 `,`,不是分号 `;`(FastDDS 默认)
|
||||
export ROS_STATIC_PEERS="192.168.1.10:7400,192.168.1.20:7400"
|
||||
```
|
||||
|
||||
### 9.3 RK3506 内存不足
|
||||
|
||||
Reference in New Issue
Block a user