#!/usr/bin/env bash # 加载本工作区环境(conda + ROS + flexiv 库)。 # 用法:source scripts/env.sh ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" if [[ -f /opt/ros/humble/setup.bash ]]; then # shellcheck disable=SC1091 source /opt/ros/humble/setup.bash elif [[ -f /opt/ros/jazzy/setup.bash ]]; then # shellcheck disable=SC1091 source /opt/ros/jazzy/setup.bash fi if [[ -f "${HOME}/anaconda3/etc/profile.d/conda.sh" ]]; then # shellcheck disable=SC1091 source "${HOME}/anaconda3/etc/profile.d/conda.sh" # 干净切换:先把堆叠的激活退到 base,再激活真机环境。 # 同一 shell 里从仿真环境(ros_gz_sim)切过来时,不清干净会残留 PATH/PYTHONPATH, # 导致 python/pip 解析到另一个环境的包,构建报 "--editable not recognized" # 之类与真实原因无关的错。详见 scripts/lib/conda_switch.sh。 _env_helper="${ROOT}/scripts/lib/conda_switch.sh" if [[ -f "${_env_helper}" ]]; then # shellcheck disable=SC1090 source "${_env_helper}" conda_switch_clean "ros_flexiv" "${SIM_ENV_NAME:-ros_gz_sim}" || \ conda activate ros_flexiv 2>/dev/null || true else conda activate ros_flexiv 2>/dev/null || true fi unset _env_helper fi if [[ -f "${ROOT}/install/setup.bash" ]]; then # shellcheck disable=SC1091 source "${ROOT}/install/setup.bash" else echo "警告:${ROOT}/install 还没编译。工位窗口可以先开;真机栈要先在仓库根目录 colcon build(不要在中文路径下编)。" >&2 fi export LD_LIBRARY_PATH="${HOME}/flexiv_install/lib:${LD_LIBRARY_PATH:-}" # pip 版 TensorRT(tensorrt-cu12)—— 加载 YOLO `.engine` 需要它 _TRT_SITE="${CONDA_PREFIX:-${HOME}/anaconda3/envs/ros_flexiv}/lib/python3.11/site-packages" for _d in "${_TRT_SITE}/tensorrt" "${_TRT_SITE}/tensorrt_libs" "${_TRT_SITE}/nvidia/tensorrt/lib"; do if [[ -d "${_d}" ]]; then export LD_LIBRARY_PATH="${_d}:${LD_LIBRARY_PATH}" fi done unset _d _TRT_SITE export YOLO_AUTOINSTALL=false export ROS2_WS="${ROOT}" # 真机与仿真的 DDS 隔离(细节与踩坑见 lib/ros_domain.sh 的文件头)。 # shellcheck source=lib/ros_domain.sh source "${ROOT}/scripts/lib/ros_domain.sh" ros_domain_force_real # 主站点配置 → `SITE_*`(YOLO 权重、相机、机器人 SN……) # shellcheck disable=SC1091 source "${ROOT}/scripts/lib/load_site_config.sh" 2>/dev/null || true