#!/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 # --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