Files
ROS2_learn/build.sh
T
2026-08-03 18:09:35 +08:00

85 lines
3.4 KiB
Bash

#!/usr/bin/env bash
# =============================================================================
# build.sh —— 容器内一次性编译脚本。
#
# 注意:本脚本在 Docker 容器内跑,使用 ROS2 apt 安装的系统 Python (python3-rclpy)。
# 本机的 venv(.venv)是给 IDE / 本机测试用的,不污染系统 Python;
# 与容器内的构建是平行的两条线。详见 README.md 与 doc/01-virtualenv.md。
#
# 流程:
# 1) source /opt/ros/humble/setup.bash
# 这一句把 ROS2 CLI、消息库、ament 工具加进 PATH。
# 2) colcon build --symlink-install --packages-select <all packages>
# --symlink-install:对 Python/launch 文件做软链,改源码后无需重编;
# C++ 可执行仍按 build 路径硬编(避免运行时找不到)。
# --event-handlers console_direct+:把每个包的 build 输出直打到终端。
# 3) ls install/:确认产物目录存在。
# =============================================================================
# 出错即停,避免继续执行错误的结果。
set -euo pipefail
# 加载 ROS2 基础环境变量与 PATH / PYTHONPATH / LD_LIBRARY_PATH。
source /opt/ros/humble/setup.bash
# 切到挂载进来的工作空间根。
cd /root/ros2_ws
echo "[BUILD] ROS_DISTRO=$ROS_DISTRO"
echo "[BUILD] packages under src/:"
ls src/
echo "[BUILD] colcon build (symlink-install)..."
colcon build \
--symlink-install \
--packages-select py_pubsub cpp_pubsub py_srv py_action_demo cpp_robot_tf2 py_vision_demo bringup \
--event-handlers console_direct+
echo "[BUILD] done. install/:"
ls install/
cat <<'TXT'
已就绪的常用命令(在使用前需要 source install/setup.bash):
# Topic pub/sub
ros2 run py_pubsub talker # Python 发布者
ros2 run py_pubsub listener # Python 订阅者
ros2 run cpp_pubsub talker # C++ 发布者
ros2 run cpp_pubsub listener # C++ 订阅者
# Service
ros2 run py_srv add_two_ints_server # Python 服务端
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 12, b: 30}"
# Action
ros2 run py_action_demo fibonacci_server # Python Action 服务端
ros2 run py_action_demo fibonacci_client -- -o 8
# Robot (URDF + TF2 + JointState)
ros2 launch cpp_robot_tf2 robot_tf2_launch.py
# Vision (sensor_msgs/Image)
ros2 launch py_vision_demo vision_launch.py
# launch 文件
ros2 launch py_pubsub pubsub_launch.py
ros2 launch cpp_pubsub pubsub_launch.py topic:=hello
ros2 launch py_srv srv_launch.py
ros2 launch py_action_demo action_launch.py
ros2 launch cpp_robot_tf2 robot_tf2_launch.py
ros2 launch py_vision_demo vision_launch.py
ros2 launch bringup full_demo_launch.py
# 调试 / 观测
ros2 node list # 当前进程里的 ROS 节点
ros2 topic list # 当前所有 topic
ros2 topic info chatter -v # 看 pub/sub 端 + 消息类型
ros2 topic echo chatter # 实时打印 chatter 内容
ros2 topic hz chatter # 测量 chatter 频率(Hz)
ros2 param list # 看节点的参数
ros2 service list # 当前 service
ros2 action list # 当前 action
ros2 run tf2_tools view_frames # 可视化 TF 树
rqt_graph # 可视化节点/话题关系图
TXT