feat : 打包.deb
This commit is contained in:
parent
023039ed44
commit
649eab6b77
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,3 +2,5 @@ build
|
|||||||
install
|
install
|
||||||
log
|
log
|
||||||
.vscode
|
.vscode
|
||||||
|
deb_build
|
||||||
|
*.deb
|
||||||
|
|||||||
70
README.md
70
README.md
@ -6,12 +6,69 @@
|
|||||||
|
|
||||||
## 2. 依赖环境
|
## 2. 依赖环境
|
||||||
|
|
||||||
|
### 2.1 系统环境
|
||||||
|
|
||||||
* **ROS2 版本**:Humble
|
* **ROS2 版本**:Humble
|
||||||
* **Ubuntu 版本**:2204
|
* **Ubuntu 版本**:2204
|
||||||
|
|
||||||
|
### 2.2 .deb的安装、启动与卸载
|
||||||
|
|
||||||
|
在目标机器上执行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dpkg -i controller_XXXX_arm64.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
如果提示依赖缺失(比如 ros-humble-ros-base 没装),可以让 apt 自动补全:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get -f install
|
||||||
|
```
|
||||||
|
|
||||||
|
安装完成后,文件会放到:
|
||||||
|
|
||||||
|
工作空间:/opt/controller/
|
||||||
|
|
||||||
|
启动脚本:/opt/controller/start_all.sh
|
||||||
|
|
||||||
|
systemd 服务:/etc/systemd/system/controller.service
|
||||||
|
|
||||||
|
驱动会开机自启, 如果要手动启动/重启:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl start controller.service
|
||||||
|
sudo systemctl restart controller.service
|
||||||
|
```
|
||||||
|
|
||||||
|
查看运行状态(是否正常启动节点):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl status controller.service
|
||||||
|
```
|
||||||
|
|
||||||
|
查看日志 : systemd 管理的服务日志可以通过 journalctl 查看:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo journalctl -u controller.service -f
|
||||||
|
```
|
||||||
|
|
||||||
|
停止
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl stop controller.service
|
||||||
|
```
|
||||||
|
|
||||||
|
禁用开机启动:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl disable controller.service
|
||||||
|
```
|
||||||
|
|
||||||
|
卸载 deb 包:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dpkg -r controller
|
||||||
|
```
|
||||||
|
|
||||||
## 3. 消息(msg)文件详情
|
## 3. 消息(msg)文件详情
|
||||||
|
|
||||||
@ -25,17 +82,12 @@
|
|||||||
| 字段类型 | 字段名称 | 取值范围 / 说明 | 功能描述 |
|
| 字段类型 | 字段名称 | 取值范围 / 说明 | 功能描述 |
|
||||||
| -------- | ------------------------------- | ----------------------------------------------- | ------------------------------------------------------------ |
|
| -------- | ------------------------------- | ----------------------------------------------- | ------------------------------------------------------------ |
|
||||||
| uint8 | brake | 0(开)、1(关) | 电磁刹控制:0 表示解除电磁刹,1 表示激活电磁刹 |
|
| uint8 | brake | 0(开)、1(关) | 电磁刹控制:0 表示解除电磁刹,1 表示激活电磁刹 |
|
||||||
| uint8 | gear | 0(空挡)、1(前进)、2(后退)、3(保留) | 车辆挡位控制,3 为预留挡位暂未使用 |
|
| uint8 | gear | 0(空挡)、1(后退)、2(前进)、3(保留) | 车辆挡位控制,3 为预留挡位暂未使用 |
|
||||||
| uint8 | rpm | 0-6000 | 电机转速指令,数值直接对应实际电机转速(rpm) |
|
| uint8 | rpm | 0-6000 | 电机转速指令,数值直接对应实际电机转速(rpm) |
|
||||||
| float32 | angle | \[-66.0, 66.0](分辨率 0.2°,建议适当缩减范围) | 轮端转向角度控制,单位为度(°) |
|
| float32 | angle | \[-66.0, 66.0](分辨率 0.2°,建议适当缩减范围) | 轮端转向角度控制,单位为度(°) |
|
||||||
| uint16 | angle\_speed | 120-1500 | 转向角速度控制,单位为 rpm |
|
| uint16 | angle\_speed | 120-1500 | 转向角速度控制,单位为 rpm |
|
||||||
| uint8 | roll\_brush\_suction\_direction | 0(不转动)、1(正转)、2(反转) | 滚刷 & 吸风电机的转动方向控制 |
|
| bool | sweep | true:清扫 false:不清扫 | 清扫 |
|
||||||
| uint8 | roll\_brush\_suction | 0-100 | 滚刷 & 吸风电机的功率 / 转速占空比(0 为停止,100 为最大) |
|
|
||||||
| int8 | side\_brush | 0-100 | 边刷电机的功率 / 转速占空比(0 为停止,100 为最大) |
|
|
||||||
| int8 | dust\_shake | 0-100 | 振尘电机的功率 / 转速占空比(0 为停止,100 为最大) |
|
|
||||||
| int8 | brush\_deck\_pusher | -100-100 | 刷盘推杆电机控制:正数为推杆伸出,负数为推杆收回,0 为停止 |
|
|
||||||
| int8 | suction\_squeeqee\_pusher | -100-100 | 吸扒推杆电机控制:正数为推杆伸出,负数为推杆收回,0 为停止 |
|
|
||||||
| int8 | water\_spray | -100-100 | 喷水电机控制:正数为喷水(数值越大水量越大),负数为反向(如排水,需根据硬件支持调整),0 为停止 |
|
|
||||||
|
|
||||||
#### 对应 Topic
|
#### 对应 Topic
|
||||||
|
|
||||||
|
|||||||
102
make_deb.sh
Executable file
102
make_deb.sh
Executable file
@ -0,0 +1,102 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PKG_NAME="controller"
|
||||||
|
PKG_VERSION="$(date +%Y%m%d%H%M)"
|
||||||
|
ARCH="arm64"
|
||||||
|
MAINTAINER="LYQ<liyq@ntiov.com>"
|
||||||
|
DESCRIPTION="Binary package of remote controller nodes for robot (ROS2 Humble)."
|
||||||
|
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"
|
||||||
|
|
||||||
|
cp -a "${INSTALL_SRC}/." "${WORKDIR}/${INSTALL_DIR}/"
|
||||||
|
|
||||||
|
# control 文件
|
||||||
|
cat > "${WORKDIR}/DEBIAN/control" <<EOF
|
||||||
|
Package: ${PKG_NAME}
|
||||||
|
Version: ${PKG_VERSION}
|
||||||
|
Section: misc
|
||||||
|
Priority: optional
|
||||||
|
Architecture: ${ARCH}
|
||||||
|
Essential: no
|
||||||
|
Maintainer: ${MAINTAINER}
|
||||||
|
Depends: ros-humble-ros-base, libc6 (>= 2.34)
|
||||||
|
Description: ${DESCRIPTION}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建 start_all.sh
|
||||||
|
cat > "${WORKDIR}/${INSTALL_DIR}/start_all.sh" <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 加载 ROS2 系统环境
|
||||||
|
source /opt/ros/humble/setup.bash
|
||||||
|
|
||||||
|
# 加载打包的工作空间环境
|
||||||
|
source ${INSTALL_DIR}/local_setup.bash
|
||||||
|
|
||||||
|
# 启动多个节点
|
||||||
|
ros2 run radio_ctrl radio_ctrl_node &
|
||||||
|
ros2 run mc mc_node &
|
||||||
|
ros2 run ctrl_arbiter ctrl_arbiter_node &
|
||||||
|
ros2 run mqtt_report mqtt_report_node &
|
||||||
|
ros2 run rtk rtk_node &
|
||||||
|
ros2 run pub_gps pub_gps_node &
|
||||||
|
|
||||||
|
wait
|
||||||
|
EOF
|
||||||
|
chmod +x "${WORKDIR}/${INSTALL_DIR}/start_all.sh"
|
||||||
|
|
||||||
|
# systemd 服务文件
|
||||||
|
mkdir -p "${WORKDIR}/etc/systemd/system"
|
||||||
|
cat > "${WORKDIR}/etc/systemd/system/${PKG_NAME}.service" <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Remote Controller Nodes
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
Environment="ROS_DISTRO=humble"
|
||||||
|
ExecStart=${INSTALL_DIR}/start_all.sh
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=2
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# postinst 脚本(安装后执行)
|
||||||
|
cat > "${WORKDIR}/DEBIAN/postinst" <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable ${PKG_NAME}.service
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
chmod 755 "${WORKDIR}/DEBIAN/postinst"
|
||||||
|
|
||||||
|
# postrm 脚本(卸载时执行)
|
||||||
|
cat > "${WORKDIR}/DEBIAN/postrm" <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
systemctl stop ${PKG_NAME}.service || true
|
||||||
|
systemctl disable ${PKG_NAME}.service || true
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
chmod 755 "${WORKDIR}/DEBIAN/postrm"
|
||||||
|
|
||||||
|
# 打包
|
||||||
|
dpkg-deb --build "${WORKDIR}" "${PKG_NAME}_${PKG_VERSION}_${ARCH}.deb"
|
||||||
|
|
||||||
|
echo "生成 ${PKG_NAME}_${PKG_VERSION}_${ARCH}.deb"
|
||||||
18
start_all.sh
Normal file
18
start_all.sh
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 加载 ROS2 系统环境
|
||||||
|
source /opt/ros/humble/setup.bash
|
||||||
|
|
||||||
|
# 加载你的工作空间环境
|
||||||
|
source /home/lyq/project/minibus/install/setup.bash
|
||||||
|
|
||||||
|
# 启动节点
|
||||||
|
ros2 run radio_ctrl radio_ctrl_node &
|
||||||
|
ros2 run mc mc_node &
|
||||||
|
ros2 run ctrl_arbiter ctrl_arbiter_node &
|
||||||
|
ros2 run mqtt_report mqtt_report_node &
|
||||||
|
ros2 run rtk rtk_node &
|
||||||
|
ros2 run pub_gps pub_gps_node &
|
||||||
|
|
||||||
|
wait
|
||||||
Loading…
Reference in New Issue
Block a user