85 lines
3.4 KiB
Bash
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 |