Skip to main content
Version: 1.0.2

Software Management

AutomatePro software is managed with Debian packages, systemd services, Docker Compose stacks, and ROS 2 configuration files under /opt/automatepro.

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 when you intentionally want packaged defaults.Replaces this package's files in /opt/automatepro/config with files from /opt/automatepro/defconfig and keeps the previous versions in /opt/automatepro/config.dpkg-old. When false, only missing config files are copied into the existing config directory.
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-gmsl2-reload.serviceReloads the GMSL2 sensor module so connected cameras are detected. Runs once at boot, on a camera recovery request, or when you restart it; skipped while a camera is streaming.
automatepro-io-agent.serviceStarts the micro-ROS Agent container for the IO controller MCU. Each start resets the MCU and releases the E-STOP.
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-viz.serviceRuns the AutomatePro model and IMU transform publishers on the host for visualization. The base package enables and starts it.
automatepro-start-can0.serviceBrings the can0 interface up at boot at 500 kbps. Stopping it takes can0 down.
automatepro-wwan.serviceRuns the Quectel connection manager for the optional 5G modem. The automatepro-installer-wwan package enables and starts it; see 5G.

For IO controller diagnostic topics and message fields, see IO Controller.

Check the current status of all AutomatePro services:

systemctl list-units --all 'automatepro-*'

Healthy services show active and running. The one-shot setup services automatepro-gmsl2, automatepro-gmsl2-reload, and automatepro-start-can0 show exited, automatepro-gmsl2-ipc.path shows waiting, and automatepro-gmsl2-reactor stays inactive until a camera recovery request.

Logs​

The services and their containers log to the system journal. Read a service's log with sudo journalctl -u <service>, for example sudo journalctl -u automatepro-core-driver.

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/driver_manager_params.yamlDriver manager parameters, including camera recovery.
/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

Other values in /opt/automatepro/.env:

VariablePackaged defaultPurpose
ROS_DOMAIN_ID0ROS 2 domain ID of the AutomatePro services.
XRCE_DOMAIN_ID_OVERRIDE0ROS 2 domain ID the IO Agent uses for the IO controller topics. Keep it equal to ROS_DOMAIN_ID.
GMSL2_CAM_TYPESG3S-ISX031C-GMSL2FGMSL2 camera type. SG3S-ISX031C-GMSL2F uses the 3 Gbps link rate; SG3S-ISX031C-GMSL2 does not.
NTRIP_USERNAME, NTRIP_PASSWORDnot setCredentials for the NTRIP correction client.

Change the ROS Domain ID​

Set the same domain ID for ROS_DOMAIN_ID and XRCE_DOMAIN_ID_OVERRIDE. Nothing derives one from the other, so changing only ROS_DOMAIN_ID leaves the IO Agent on the old domain and the IO controller topics do not appear. This example sets domain 7:

sudo sed -i -e "s/^ROS_DOMAIN_ID=.*/ROS_DOMAIN_ID=7/" \
-e "s/^XRCE_DOMAIN_ID_OVERRIDE=.*/XRCE_DOMAIN_ID_OVERRIDE=7/" \
/opt/automatepro/.env

Restart the services that read the value:

sudo systemctl restart automatepro-io-agent automatepro-core-driver automatepro-foxglove-bridge automatepro-viz

The services read the domain ID from /opt/automatepro/.env, but ros2 commands in your terminal use ROS_DOMAIN_ID from your shell, which AutomatePro sets in ~/.bashrc. Change it there to the same value, or those commands do not see the AutomatePro topics:

sed -i "s/^export ROS_DOMAIN_ID=.*/export ROS_DOMAIN_ID=7/" ~/.bashrc
source ~/.bashrc

Check the new value:

grep ROS_DOMAIN_ID ~/.bashrc

Other open terminals keep the old value until you run source ~/.bashrc in them or open a new one.

/opt/automatepro/.env keeps your edits across package upgrades.

Verify ROS 2 After Changes​

To check the drivers after a change, follow Verify the System in the Quick Start Guide.