add wust typr mpc and mutipule x
This commit is contained in:
6
wust_vision-main/script/install_depences.sh
Executable file
6
wust_vision-main/script/install_depences.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
sudo apt update && sudo apt install -y \
|
||||
rsync ninja-build \
|
||||
libfmt-dev libceres-dev libeigen3-dev \
|
||||
nlohmann-json3-dev libyaml-cpp-dev
|
||||
28
wust_vision-main/script/rsync.sh
Executable file
28
wust_vision-main/script/rsync.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
WORK_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
echo "脚本目录: $SCRIPT_DIR"
|
||||
echo "wust_vision目录: $WORK_DIR"
|
||||
# 用法说明
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Usage: $0 <remote_user> <remote_ip>"
|
||||
echo "Example:"
|
||||
echo " $0 nvidiaa 192.168.10.100"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
REMOTE_USER="$1"
|
||||
REMOTE_IP="$2"
|
||||
TARGET_PATH="/home/${REMOTE_USER}/wust_vision"
|
||||
rsync -avz \
|
||||
--exclude='.cache/' \
|
||||
--exclude='.vscode/' \
|
||||
--exclude='.git/' \
|
||||
--exclude='bin/' \
|
||||
--exclude='build/' \
|
||||
--exclude='model/' \
|
||||
--exclude='config/' \
|
||||
--exclude='CMakeLists.txt' \
|
||||
"${WORK_DIR}/" \
|
||||
"${REMOTE_USER}@${REMOTE_IP}:${TARGET_PATH}/"
|
||||
65
wust_vision-main/script/setup_devenv.sh
Executable file
65
wust_vision-main/script/setup_devenv.sh
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
BASHRC="$HOME/.bashrc"
|
||||
MARKER_START="# >>> wust_vision dev >>>"
|
||||
MARKER_END="# <<< wust_vision dev <<<"
|
||||
BACKUP="$BASHRC.bak.$(date +%Y%m%d_%H%M%S)"
|
||||
|
||||
# 备份
|
||||
cp "$BASHRC" "$BACKUP"
|
||||
echo "💾 已备份 $BASHRC 到 $BACKUP"
|
||||
|
||||
# 临时文件
|
||||
TMP=$(mktemp)
|
||||
|
||||
# 写入 bashrc 除去旧 block
|
||||
awk -v start="$MARKER_START" -v end="$MARKER_END" '
|
||||
$0 == start {inside=1; next}
|
||||
inside && $0 == end {inside=0; next}
|
||||
!inside {print}
|
||||
' "$BASHRC" > "$TMP"
|
||||
|
||||
# 使用 cat <<EOF 方式追加 block,保证特殊字符安全
|
||||
cat <<'EOF' >> "$TMP"
|
||||
# >>> wust_vision dev >>>
|
||||
py() {
|
||||
source ~/anaconda3/etc/profile.d/conda.sh
|
||||
echo "已激活 conda, conda activate激活环境,conda deactivate退出环境, conda info --envs查看环境"
|
||||
}
|
||||
|
||||
buildme() {
|
||||
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
|
||||
}
|
||||
|
||||
builddebug() {
|
||||
colcon build --packages-select "$1" --cmake-args -DCMAKE_BUILD_TYPE=Debug
|
||||
}
|
||||
|
||||
killros() {
|
||||
pkill -f ros && ros2 daemon stop && ros2 daemon start
|
||||
}
|
||||
|
||||
format() {
|
||||
find . -path ./build -prune -o \
|
||||
-type f \( -name '*.h' -o -name '*.hpp' -o -name '*.c' -o -name '*.cu' -o -name '*.cpp' \) \
|
||||
-exec clang-format -i {} +
|
||||
}
|
||||
|
||||
s() {
|
||||
source install/setup.bash
|
||||
}
|
||||
|
||||
hik() {
|
||||
export MVCAM_SDK_PATH=/opt/MVS
|
||||
export MVCAM_COMMON_RUNENV=/opt/MVS/lib
|
||||
export MVCAM_GENICAM_CLPROTOCOL=/opt/MVS/lib/CLProtocol
|
||||
export ALLUSERSPROFILE=/opt/MVS/MVFG
|
||||
export LD_LIBRARY_PATH=/opt/MVS/lib/64:/opt/MVS/lib/32:$LD_LIBRARY_PATH
|
||||
}
|
||||
# <<< wust_vision dev <<<
|
||||
EOF
|
||||
|
||||
# 原子替换
|
||||
mv "$TMP" "$BASHRC"
|
||||
echo "✅ 已安全替换或追加 block 到 $BASHRC"
|
||||
109
wust_vision-main/script/setup_service.sh
Executable file
109
wust_vision-main/script/setup_service.sh
Executable file
@@ -0,0 +1,109 @@
|
||||
#!/usr/bin/env bash
|
||||
# 自动管理 systemd service 文件
|
||||
# 工作目录 = 脚本所在路径的上一级目录
|
||||
|
||||
SERVICE_NAME="wust_vision"
|
||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
WORK_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
ACTION=$1
|
||||
echo "正在操作: standard"
|
||||
echo "📂 脚本路径: $SCRIPT_DIR"
|
||||
echo "🏗 工作区路径: $WORK_DIR"
|
||||
echo "🧾 目标 Service 文件: $SERVICE_FILE"
|
||||
echo
|
||||
|
||||
uninstall_service() {
|
||||
if [[ ! -f "$SERVICE_FILE" ]]; then
|
||||
echo "⚠️ Service 文件不存在,无需卸载。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "🛑 停止并卸载 Service..."
|
||||
sudo systemctl stop "${SERVICE_NAME}.service" 2>/dev/null || true
|
||||
sudo systemctl disable "${SERVICE_NAME}.service" 2>/dev/null || true
|
||||
sudo rm -f "$SERVICE_FILE"
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
echo "✅ Service 已成功卸载。"
|
||||
exit 0
|
||||
}
|
||||
|
||||
install_service() {
|
||||
if [[ -f "$SERVICE_FILE" ]]; then
|
||||
echo "⚠️ 检测到已存在的 Service 文件:$SERVICE_FILE"
|
||||
read -p "是否覆盖?(y/N): " confirm
|
||||
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
||||
echo "🚫 已取消安装。"
|
||||
exit 0
|
||||
else
|
||||
echo "🧹 删除旧版本 Service..."
|
||||
sudo systemctl stop ${SERVICE_NAME}.service 2>/dev/null || true
|
||||
sudo systemctl disable ${SERVICE_NAME}.service 2>/dev/null || true
|
||||
sudo rm -f "$SERVICE_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✏️ 正在生成新的 Service 文件..."
|
||||
sudo tee "$SERVICE_FILE" > /dev/null <<EOF
|
||||
[Unit]
|
||||
Description=Wust Vision Standard Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=${WORK_DIR}
|
||||
ExecStart=${WORK_DIR}/run.sh run standard false
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo chmod 644 "$SERVICE_FILE"
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable "${SERVICE_NAME}.service"
|
||||
sudo systemctl restart "${SERVICE_NAME}.service"
|
||||
|
||||
echo
|
||||
echo "✅ Service 已生成并启动成功!"
|
||||
echo "🔍 查看状态:sudo systemctl status ${SERVICE_NAME}.service"
|
||||
echo "📜 实时日志:journalctl -u ${SERVICE_NAME}.service -f"
|
||||
}
|
||||
|
||||
if [[ -z "$ACTION" ]]; then
|
||||
echo "❌ 请输入要执行的操作:$0 [install|uninstall|start|stop|restart|status|journal]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$ACTION" in
|
||||
install) install_service ;;
|
||||
uninstall) uninstall_service ;;
|
||||
start)
|
||||
sudo systemctl start "${SERVICE_NAME}.service"
|
||||
echo "✅ Service 已启动"
|
||||
;;
|
||||
stop)
|
||||
sudo systemctl stop "${SERVICE_NAME}.service"
|
||||
echo "🛑 Service 已停止"
|
||||
;;
|
||||
restart)
|
||||
sudo systemctl restart "${SERVICE_NAME}.service"
|
||||
echo "🔄 Service 已重启"
|
||||
;;
|
||||
status)
|
||||
sudo systemctl status "${SERVICE_NAME}.service"
|
||||
;;
|
||||
journal)
|
||||
sudo journalctl -u "${SERVICE_NAME}.service" -f
|
||||
;;
|
||||
*)
|
||||
echo "❌ 参数错误: $0 [install|uninstall|start|stop|restart|status|journal]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
109
wust_vision-main/script/setup_service_sentry.sh
Executable file
109
wust_vision-main/script/setup_service_sentry.sh
Executable file
@@ -0,0 +1,109 @@
|
||||
#!/usr/bin/env bash
|
||||
# 自动管理 systemd service 文件
|
||||
# 工作目录 = 脚本所在路径的上一级目录
|
||||
|
||||
SERVICE_NAME="wust_vision"
|
||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
WORK_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
ACTION=$1
|
||||
echo "正在操作: sentry"
|
||||
echo "📂 脚本路径: $SCRIPT_DIR"
|
||||
echo "🏗 工作区路径: $WORK_DIR"
|
||||
echo "🧾 目标 Service 文件: $SERVICE_FILE"
|
||||
echo
|
||||
|
||||
uninstall_service() {
|
||||
if [[ ! -f "$SERVICE_FILE" ]]; then
|
||||
echo "⚠️ Service 文件不存在,无需卸载。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "🛑 停止并卸载 Service..."
|
||||
sudo systemctl stop "${SERVICE_NAME}.service" 2>/dev/null || true
|
||||
sudo systemctl disable "${SERVICE_NAME}.service" 2>/dev/null || true
|
||||
sudo rm -f "$SERVICE_FILE"
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
echo "✅ Service 已成功卸载。"
|
||||
exit 0
|
||||
}
|
||||
|
||||
install_service() {
|
||||
if [[ -f "$SERVICE_FILE" ]]; then
|
||||
echo "⚠️ 检测到已存在的 Service 文件:$SERVICE_FILE"
|
||||
read -p "是否覆盖?(y/N): " confirm
|
||||
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
||||
echo "🚫 已取消安装。"
|
||||
exit 0
|
||||
else
|
||||
echo "🧹 删除旧版本 Service..."
|
||||
sudo systemctl stop ${SERVICE_NAME}.service 2>/dev/null || true
|
||||
sudo systemctl disable ${SERVICE_NAME}.service 2>/dev/null || true
|
||||
sudo rm -f "$SERVICE_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✏️ 正在生成新的 Service 文件..."
|
||||
sudo tee "$SERVICE_FILE" > /dev/null <<EOF
|
||||
[Unit]
|
||||
Description=Wust Vision Standard Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=${WORK_DIR}
|
||||
ExecStart=${WORK_DIR}/run.sh run sentry false
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo chmod 644 "$SERVICE_FILE"
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable "${SERVICE_NAME}.service"
|
||||
sudo systemctl restart "${SERVICE_NAME}.service"
|
||||
|
||||
echo
|
||||
echo "✅ Service 已生成并启动成功!"
|
||||
echo "🔍 查看状态:sudo systemctl status ${SERVICE_NAME}.service"
|
||||
echo "📜 实时日志:journalctl -u ${SERVICE_NAME}.service -f"
|
||||
}
|
||||
|
||||
if [[ -z "$ACTION" ]]; then
|
||||
echo "❌ 请输入要执行的操作:$0 [install|uninstall|start|stop|restart|status|journal]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$ACTION" in
|
||||
install) install_service ;;
|
||||
uninstall) uninstall_service ;;
|
||||
start)
|
||||
sudo systemctl start "${SERVICE_NAME}.service"
|
||||
echo "✅ Service 已启动"
|
||||
;;
|
||||
stop)
|
||||
sudo systemctl stop "${SERVICE_NAME}.service"
|
||||
echo "🛑 Service 已停止"
|
||||
;;
|
||||
restart)
|
||||
sudo systemctl restart "${SERVICE_NAME}.service"
|
||||
echo "🔄 Service 已重启"
|
||||
;;
|
||||
status)
|
||||
sudo systemctl status "${SERVICE_NAME}.service"
|
||||
;;
|
||||
journal)
|
||||
sudo journalctl -u "${SERVICE_NAME}.service" -f
|
||||
;;
|
||||
*)
|
||||
echo "❌ 参数错误: $0 [install|uninstall|start|stop|restart|status|journal]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
8
wust_vision-main/script/setup_udev.sh
Executable file
8
wust_vision-main/script/setup_udev.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
sudo tee /etc/udev/rules.d/99-stm32-acm.rules > /dev/null <<EOF
|
||||
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ATTRS{serial}=="2069398C464D", SYMLINK+="stm32_acm"
|
||||
EOF
|
||||
sudo udevadm control --reload-rules
|
||||
sudo udevadm trigger
|
||||
Reference in New Issue
Block a user