Software Services
AutomatePro software is managed with Debian packages, systemd services, Docker Compose stacks, and ROS 2 configuration files under /opt/automatepro.
Use this page when you need to install or update the AutomatePro stack, check whether the drivers are running, inspect logs, or change which hardware drivers start at boot.
Install or Update AutomatePro
AutomatePro systems are normally installed from the Lemvos AutomatePro package registry.
Registry access may require a Cloudsmith API key provided by Lemvos.
-
Add the AutomatePro package repository:
curl -1sLf 'https://dl.cloudsmith.io/API_KEY/lemvos/automatepro/setup.deb.sh' | sudo -E bash -
Install or update the base package:
sudo apt update
sudo apt install automatepro-installer
The base automatepro-installer package depends on automatepro-installer-wwan, which installs the Quectel 5G connection manager.
Installation Prompts
During installation, the package may ask configuration questions.
| Prompt | Select or enter | Result |
|---|---|---|
automatepro-installer/override_cfg | true only for a fresh installation or when you intentionally want packaged defaults. | Replaces /opt/automatepro/config with files from /opt/automatepro/defconfig. When false, only missing config files are copied into the existing config directory. |
automatepro-installer/domain_id_override | A ROS 2 domain ID from 0 to 254. | Updates both ROS_DOMAIN_ID and XRCE_DOMAIN_ID_OVERRIDE in /opt/automatepro/.env. Invalid values leave the existing .env unchanged. |
Do not override configuration on a tuned field system unless you have backed up /opt/automatepro/config.
Service Overview
The main services are:
| Service | Purpose |
|---|---|
automatepro-gmsl2.service | Initializes GMSL2 camera kernel modules and camera hardware. |
automatepro-gmsl2-ipc.path | Watches the camera recovery IPC path for restart requests. |
automatepro-gmsl2-reactor.service | Restarts GMSL2 hardware after the IPC path is triggered. |
automatepro-io-agent.service | Starts the micro-ROS Agent container for the IO controller MCU. |
automatepro-core-driver.service | Starts the core ROS 2 driver container for GNSS, IMU, cameras, RTK correction clients, and the driver manager. |
automatepro-foxglove-bridge.service | Starts the host-side Foxglove Bridge on the configured bridge port. |
automatepro-ros-utils.service | Optional visualization container for ROS 2 utilities. This service is installed but is not enabled by the base package post-install script. |
For IO controller diagnostic topics, message fields, and firmware fault-code decoding, see IO Controller.
Check the current status:
systemctl status automatepro-gmsl2 automatepro-io-agent automatepro-core-driver automatepro-foxglove-bridge
Healthy services show active (running) or, for oneshot setup services such as automatepro-gmsl2.service, active (exited).
Start, Stop, and Restart Services
Restart a single service after changing its configuration:
sudo systemctl restart automatepro-core-driver
Restart the IO Agent:
sudo systemctl restart automatepro-io-agent
Restart Foxglove Bridge after changing the bridge launch XML:
sudo systemctl restart automatepro-foxglove-bridge
Restart camera hardware and the core driver:
sudo systemctl restart automatepro-gmsl2
sudo systemctl restart automatepro-core-driver
Stop all AutomatePro services during maintenance:
sudo systemctl stop automatepro-core-driver automatepro-foxglove-bridge automatepro-io-agent
Logs
View recent logs for the core driver:
sudo journalctl -u automatepro-core-driver -n 100 --no-pager
Follow logs while reproducing an issue:
sudo journalctl -f -u automatepro-core-driver
Useful service logs include:
sudo journalctl -u automatepro-gmsl2 -n 100 --no-pager
sudo journalctl -u automatepro-io-agent -n 100 --no-pager
sudo journalctl -u automatepro-foxglove-bridge -n 100 --no-pager
Docker Containers
The core driver and IO Agent services start Docker containers. Foxglove Bridge runs as a host ROS 2 service by default.
Check the running AutomatePro containers:
docker ps --filter name=automatepro
Expected containers can include:
automatepro-core-driver
automatepro-io-agent
View container logs when systemd status is not enough:
docker logs automatepro-core-driver
docker logs automatepro-io-agent
If you intentionally enable automatepro-ros-utils.service, automatepro-ros-utils also appears in docker ps.
Configuration Files
Runtime configuration lives under /opt/automatepro/config. Packaged defaults live under /opt/automatepro/defconfig.
| Path | Purpose |
|---|---|
/opt/automatepro/.env | Enables or disables drivers and sets ROS 2 environment values. |
/opt/automatepro/config/ros/camera_params.yaml | Camera driver parameters. |
/opt/automatepro/config/ros/gnss_position_params.yaml | GNSS position receiver parameters. |
/opt/automatepro/config/ros/gnss_heading_params.yaml | GNSS heading receiver parameters. |
/opt/automatepro/config/ros/imu_params.yaml | IMU driver parameters. |
/opt/automatepro/config/ros/ntrip_params.yaml | NTRIP correction client parameters. |
/opt/automatepro/config/ros/spartn_params.yaml | SPARTN correction client parameters. |
/opt/automatepro/config/ros/foxglove_bridge_launch.xml | Foxglove Bridge launch configuration used by automatepro-foxglove-bridge.service. |
/opt/automatepro/defconfig/ros/ | Default copies installed by the package. |
After changing files in /opt/automatepro/config/ros, restart the service that uses them. For sensor driver changes, restart automatepro-core-driver.
Enable or Disable Drivers
Edit /opt/automatepro/.env to control which core drivers start:
sudo nano /opt/automatepro/.env
Common flags:
| Variable | Packaged default | Set to 1 to enable |
|---|---|---|
ROS_DRIVER_GNSS_POSITION | 1 | GNSS position driver |
ROS_DRIVER_GNSS_HEADING | 1 | GNSS heading driver |
ROS_DRIVER_GNSS_RTK_CORRECTION_SPARTN | 0 | SPARTN correction client |
ROS_DRIVER_GNSS_RTK_CORRECTION_NTRIP | 0 | NTRIP correction client |
ROS_DRIVER_IMU | 1 | IMU driver |
ROS_DRIVER_CAM_1 | 1 | Camera 1 driver |
ROS_DRIVER_CAM_2 | 1 | Camera 2 driver |
ROS_DRIVER_MANAGER | 1 | Driver manager and camera recovery monitor |
Apply changes:
sudo systemctl restart automatepro-core-driver
Verify ROS 2 After Changes
Source ROS 2 and inspect nodes:
source /opt/ros/humble/setup.bash
ros2 node list
Check topics:
ros2 topic list
For a quick live-data check:
ros2 topic echo /sensor/imu/data --once --qos-reliability best_effort
ros2 topic echo /sensor/gnss/position/fix --once
Optional hardware only publishes when installed and enabled.
Developer Notes: core driver launch
The core driver container launches automatepro_bringup with core_driver.launch.py. The launch file accepts these boolean arguments:
| Argument | Default |
|---|---|
enable_gnss_position | true |
enable_gnss_heading | true |
enable_imu | true |
enable_cam1 | true |
enable_cam2 | true |
enable_ntrip_client | true |
enable_spartn_client | true |
enable_driver_manager | true |
The config_dir argument points the launch file at /automatepro/config inside the container, which is mounted from /opt/automatepro/config/ros on the host.