add wust typr mpc and mutipule x

This commit is contained in:
cyy_mac
2026-03-27 03:41:42 +08:00
parent 2c64655fae
commit 7dcb53bb77
192 changed files with 29571 additions and 9 deletions

View 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

View 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}/"

View 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"

View 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

View 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

View 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