diff --git a/.gitignore b/.gitignore index 0dca950..772d980 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ build install log .vscode -deb_build -*.deb +deb_build \ No newline at end of file diff --git a/README.md b/README.md index 1041d1f..474c72b 100644 --- a/README.md +++ b/README.md @@ -81,12 +81,12 @@ sudo dpkg -r controller | 字段类型 | 字段名称 | 取值范围 / 说明 | 功能描述 | | -------- | ------------------------------- | ----------------------------------------------- | ------------------------------------------------------------ | -| uint8 | brake | 0(开)、1(关) | 电磁刹控制:0 表示解除电磁刹,1 表示激活电磁刹 | +| uint8 | brake | 0(不刹)、1(刹) | 电磁刹控制:0 表示解除电磁刹,1 表示激活电磁刹 | | uint8 | gear | 0(空挡)、1(后退)、2(前进)、3(保留) | 车辆挡位控制,3 为预留挡位暂未使用 | -| uint8 | rpm | 0-6000 | 电机转速指令,数值直接对应实际电机转速(rpm) | -| float32 | angle | \[-66.0, 66.0](分辨率 0.2°,建议适当缩减范围) | 轮端转向角度控制,单位为度(°) | +| uint8 | rpm | 0-4000 | 电机转速指令,数值直接对应实际电机转速(rpm) | +| float32 | angle | \[-40.0, 40.0] | 轮端转向角度控制,单位为度(°),[-左、+右] | | uint16 | angle\_speed | 120-1500 | 转向角速度控制,单位为 rpm | -| bool | sweep | true:清扫 false:不清扫 | 清扫 | +| bool | sweep | true(清扫)、false(不清扫) | 清扫 | #### 对应 Topic @@ -128,3 +128,5 @@ sudo dpkg -r controller | 版本 | 更新日期 | 更新内容 | 开发者 | | ---- | -------- | ------------------------------------------------------------ | ------------------ | | V1.0 | 2025-09-02 | 初始版本,定义`McCtrl.msg`和`Rtk.msg`结构,明确 Topic | \[zxwl] | +| V1.1 | 2025-09-16 | controller.deb的安装、启动与卸载 | \[zxwl] | + diff --git a/make_deb.sh b/make_deb.sh index e5b3a9a..8afee10 100755 --- a/make_deb.sh +++ b/make_deb.sh @@ -10,10 +10,12 @@ INSTALL_DIR="/opt/${PKG_NAME}" WORKDIR="$(pwd)/deb_build" INSTALL_SRC="$(pwd)/install" +# 清理工作目录 rm -rf "${WORKDIR}" mkdir -p "${WORKDIR}/${INSTALL_DIR}" mkdir -p "${WORKDIR}/DEBIAN" +# 复制 ROS2 install 文件 cp -a "${INSTALL_SRC}/." "${WORKDIR}/${INSTALL_DIR}/" # control 文件 @@ -29,7 +31,44 @@ Depends: ros-humble-ros-base, libc6 (>= 2.34) Description: ${DESCRIPTION} EOF -# 创建 start_all.sh +# ============================ +# 创建 can.sh (root 执行) +# ============================ +cat > "${WORKDIR}/${INSTALL_DIR}/can.sh" <<'EOF' +#!/bin/bash +# Script: can.sh +# Description: Configures CAN interface can0 on startup + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" + exit 1 +fi + +if ip link show can0 &> /dev/null; then + ip link set can0 down +fi + +modprobe can +modprobe can_raw +modprobe mttcan + +ip link set can0 type can bitrate 500000 +ip link set up can0 + +if [[ $? -ne 0 ]]; then + echo "Error configuring CAN interface can0" + exit 1 +fi + +echo "CAN interface can0 configured successfully" +exit 0 +EOF + +chmod +x "${WORKDIR}/${INSTALL_DIR}/can.sh" + +# ============================ +# 创建 start_all.sh (nvidia 用户执行) +# ============================ cat > "${WORKDIR}/${INSTALL_DIR}/start_all.sh" < "${WORKDIR}/etc/systemd/system/${PKG_NAME}.service" < "${WORKDIR}/etc/systemd/system/${PKG_NAME}-can.service" < "${WORKDIR}/etc/systemd/system/${PKG_NAME}.service" < "${WORKDIR}/DEBIAN/postinst" < "${WORKDIR}/DEBIAN/postrm" <