Skip to main content
Version: 1.0.2

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.

info

Registry access may require a Cloudsmith API key provided by Lemvos.

  1. Add the AutomatePro package repository:

    curl -1sLf 'https://dl.cloudsmith.io/API_KEY/lemvos/automatepro/setup.deb.sh' | sudo -E bash
  2. 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.

PromptSelect or enterResult
automatepro-installer/override_cfgtrue 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_overrideA 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.
Important

Do not override configuration on a tuned field system unless you have backed up /opt/automatepro/config.

Service Overview

The main services are:

ServicePurpose
automatepro-gmsl2.serviceInitializes GMSL2 camera kernel modules and camera hardware.
automatepro-gmsl2-ipc.pathWatches the camera recovery IPC path for restart requests.
automatepro-gmsl2-reactor.serviceRestarts GMSL2 hardware after the IPC path is triggered.
automatepro-io-agent.serviceStarts the micro-ROS Agent container for the IO controller MCU.
automatepro-core-driver.serviceStarts the core ROS 2 driver container for GNSS, IMU, cameras, RTK correction clients, and the driver manager.
automatepro-foxglove-bridge.serviceStarts the host-side Foxglove Bridge on the configured bridge port.
automatepro-ros-utils.serviceOptional 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.

PathPurpose
/opt/automatepro/.envEnables or disables drivers and sets ROS 2 environment values.
/opt/automatepro/config/ros/camera_params.yamlCamera driver parameters.
/opt/automatepro/config/ros/gnss_position_params.yamlGNSS position receiver parameters.
/opt/automatepro/config/ros/gnss_heading_params.yamlGNSS heading receiver parameters.
/opt/automatepro/config/ros/imu_params.yamlIMU driver parameters.
/opt/automatepro/config/ros/ntrip_params.yamlNTRIP correction client parameters.
/opt/automatepro/config/ros/spartn_params.yamlSPARTN correction client parameters.
/opt/automatepro/config/ros/foxglove_bridge_launch.xmlFoxglove 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:

VariablePackaged defaultSet to 1 to enable
ROS_DRIVER_GNSS_POSITION1GNSS position driver
ROS_DRIVER_GNSS_HEADING1GNSS heading driver
ROS_DRIVER_GNSS_RTK_CORRECTION_SPARTN0SPARTN correction client
ROS_DRIVER_GNSS_RTK_CORRECTION_NTRIP0NTRIP correction client
ROS_DRIVER_IMU1IMU driver
ROS_DRIVER_CAM_11Camera 1 driver
ROS_DRIVER_CAM_21Camera 2 driver
ROS_DRIVER_MANAGER1Driver 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:

ArgumentDefault
enable_gnss_positiontrue
enable_gnss_headingtrue
enable_imutrue
enable_cam1true
enable_cam2true
enable_ntrip_clienttrue
enable_spartn_clienttrue
enable_driver_managertrue

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.