sl-jetson d79e38eb5b feat: OTA firmware update (Issue #492)
Complete over-the-air (OTA) firmware update system with:

Features:
- Downloads releases from Gitea (seb/saltylab-firmware)
- Automatic colcon build in staging directory
- Symlink-based atomic deployment
- ROS2 service restart via systemd
- Automatic rollback on build failure
- Version tracking in ~/.saltybot-data/versions.json
- Update history with timestamps

Safety:
- Blocks updates if robot velocity > 0.05 m/s
- Velocity monitoring via odometry subscription
- Backup before update for recovery

Triggers:
- MQTT /saltybot/ota_command: 'check', 'update:<version>', 'rollback'
- /saltybot/ota_status: JSON status updates
- Dashboard integration ready

Configuration:
- Gitea API base, repo info, directories
- Build timeout: 3600s (1 hour)
- Service restart automation
- Backup retention policy

ROS2 package structure complete with launch files and config.
2026-03-05 17:04:35 -05:00

23 lines
681 B
Python

from setuptools import setup, find_packages
setup(
name='saltybot_ota_updater',
version='0.1.0',
packages=find_packages(),
data_files=[
('share/ament_index/resource_index/packages', ['resource/saltybot_ota_updater']),
('share/saltybot_ota_updater', ['package.xml']),
],
install_requires=['setuptools', 'requests'],
zip_safe=True,
author='seb',
author_email='seb@vayrette.com',
description='OTA firmware update with Gitea release download and rollback',
license='Apache-2.0',
entry_points={
'console_scripts': [
'ota_updater_node = saltybot_ota_updater.ota_updater_node:main',
],
},
)