3c86441fb0
Co-authored-by: Cursor <cursoragent@cursor.com>
59 lines
2.4 KiB
Bash
Executable File
59 lines
2.4 KiB
Bash
Executable File
#!/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
|