Skip to content

User Manual

Patrol and inspection with the ZSBot Genisom L1W and the Pashupati Controller

Version 1.6 · 2026-11-15

For operators of a Genisom L1W running Pashupati. No robotics knowledge needed.

The robot's own hardware (battery, charging, power switch, the ZSBot remote) is described in the ZSBot Genisom L1W manual. This manual covers what Pashupati adds: driving from the Pashupati Controller, teaching routes, patrols, and AI inspection. Parameters and tuning are in the Pashupati Tuning Guide.

Download: the printable PDF, A5 for the phone.

Safety first ​

The Genisom L1W is a strong, fast machine with legs and wheels. It weighs as much as a large dog and can hurt people or break things when it is handled carelessly. Read this chapter before you use the robot for the first time.

Before every run ​

  • Walk the route. The floor must be dry, even and free of loose cables.
  • Keep routes away from places where the floor ends: stairs going down, escalator openings, platform edges, holes. The robot does not see drops.
  • Glass walls, mirrors and very thin objects can be invisible to the robot's laser scanner (LiDAR). Low objects in front of the robot, such as a box or a bag, are seen by the camera: keep its window clean. Objects lower than about 12 cm, such as a 10 cm step, a cable taped to the floor or a flat bag, are not treated as obstacles: the robot walks over them. Keep what it must not step on off the route.
  • Charge the robot battery and the handheld. Start a patrol with at least 30 % battery.
  • Keep the ZSBot remote nearby as a backup. It can take control of the robot at any time.

While the robot moves ​

  • Stay at least 1 m away from a moving robot. Keep children and pets away from it.
  • Never touch the legs or wheels while the robot is standing, and never lift or push it then.
  • In REMOTE (driving by hand) you are responsible for every movement. The robot does not slow down for obstacles when you drive it.
  • In AUTO the robot slows down and stops for obstacles in any direction. Still, stay close enough to stop it, and keep the handheld in your hand.

Emergency stop ​

If anything goes wrong, press STOP

The red STOP button on the main screen, or the B button on any page of the app, stops the robot at once. The robot then stands still and ignores every movement command until you release the stop.

  • To release the stop, hold Hold to release for one second. A patrol stays paused after a release: tap Resume when it is safe.
  • Motor stop in the robot actions is the robot's own emergency stop. Use it only if STOP does not hold the robot. The ZSBot manual describes what the robot does then.
  • NETRA (the command center) can also stop the robot from the office.

The system at a glance ​

What Pashupati does ​

Pashupati is the software that turns the Genisom L1W into a patrol robot. You drive a route once while the robot learns it. From then on the robot walks that route on its own, again and again. It stops at the points you marked, looks at the floor with a camera and an AI model, and reports what it finds, such as trash or a spill, to the handheld and to NETRA. Along the way it counts the people it sees and keeps clear of people and obstacles.

The parts ​

The parts of the system and how they talk to each other
The parts of the system and how they talk to each other
PartWhat it is
Genisom L1Wthe robot: walks and rolls on four legs with wheels
Robot computeran NVIDIA Jetson on the robot that runs Pashupati
LiDARthe laser scanner on top: tells the robot where it is and what is around it
CameraIntel RealSense: video for you, AprilTags, the AI inspection, and low obstacles in front
Pashupati Controllerthe app on the Retroid Pocket handheld you hold
NETRAthe command center in the office: schedules, findings, reports

How a patrol works ​

Teach once, then patrol
Teach once, then patrol

Words you will see ​

WordMeaning
AUTOthe robot drives itself along the loaded route
REMOTEyou drive the robot with the handheld's sticks
Routea path you recorded once; the robot repeats it
Stop pointa place on the route where the robot stops and inspects
AprilTaga printed black-and-white square on a wall; the robot uses it to know where it is
Localizethe robot works out where it is on the map, usually from an AprilTag
Inspectionthe AI looks at the floor in the camera image
Findingsomething the AI reported, for example Trash
E-stopthe emergency stop (STOP button)

Getting ready ​

Power on ​

  1. Insert a charged battery and switch the robot on, as described in the ZSBot manual. The robot stays down while it starts.
  2. Wait about two minutes. The robot computer starts Pashupati by itself.

INFO

Right after power-on the robot computer waits up to one minute for its clock to be set over the network. Give it that time before you start a patrol.

Connect the handheld ​

  1. Switch on the Retroid Pocket and connect it to the robot's Wi-Fi network. Your technician tells you its name and password.
  2. Open the Pashupati app. The start screen looks for robots on the network.
  3. Tap Main robot, or the robot's name in the list once it is found.
  4. The main screen opens (chapter 4).
The start screen
The start screen
The app saysWhat to do
The robot does not answercheck that the handheld is on the robot's Wi-Fi; wait until two minutes after power-on; check the robot address (next section)
The robot rejected the tokenthe token in the app differs from the robot's: see the next section
Another handheld is driving this robotclose the app on the other handheld

First-time setup ​

You only do this once per handheld, or when your technician gives you new details.

  1. On the start screen, tap the version text at the bottom left three times quickly.
  2. Enter the Robot address (192.168.234.234 unless your technician says otherwise), the Port (9870) and the Token.
  3. Give the handheld a name, for example Retroid Security 1, so others can see who drives.
  4. Tap Save, then go back.
Connection settings, opened by tapping the version three times
Connection settings, opened by tapping the version three times

Stand the robot up ​

  1. Make sure there is at least 1 m of free space around the robot.
  2. Tap Stand up in the robot actions on the right, or hold L1 and press A.
  3. Wait until the robot stands still.

The robot ignores the handheld

After someone used the ZSBot remote, the robot may listen only to that remote. Tap Take control in the robot actions to give control back to the handheld.

The Pashupati Controller ​

The main screen ​

The main screen during a patrol
The main screen during a patrol
PartWhat it shows or does
1Disconnectleaves the robot and goes back to the start screen
2Linkrobot name, signal bars and delay; red when the Wi-Fi link is weak
3AUTO / REMOTEwho drives: the robot (AUTO) or you (REMOTE)
4Localizationhow the robot knows where it is: Tag, Start pose, Pose, or No loc in red
5Protective fieldgreen shield: path clear; yellow: slowed for an obstacle; red: blocked or no scan
6Batteryrobot battery level
7Settingsspeed level, video, language and more (section 4.4)
8STOPthe emergency stop (section 1.3)
9Robot actionsstand up, sit down, balance, walk mode, gears, take control, motor stop
10Small viewthe camera or the map; tap it to swap the two views
11View buttonsswap views, follow the robot, show the whole route, turn the map with the robot
12At a glancelast AI result, frames waiting, people in view, the robot computer's load; the trip meter under it (section 4.5)
13Patrol statuswhat the robot is doing now (section 7.5)
14Mapthe route in teal, stop points in yellow, the robot as an arrow
15Toolbarteach (Record, Point, Tags), patrol (Localize, Routes, Start, End), Inspect

The map can be moved with your fingers: pinch to zoom, drag to look around, twist with two fingers to turn it. Double-tap to follow the robot again.

Status chips ​

ChipShowsMeans
LocalizationTag base_mapthe robot found itself from that AprilTag
Start posethe robot uses its start position as the map origin
Posesomeone set the position by hand on a computer
No loc (red)the robot does not know where it is: tap Localize
Protective fieldPath clearnothing in the way
Slowedthe robot slows down for something near its path
Blockedsomething is too close: the robot holds still
No scanthe laser scanner is not reporting: the robot will not drive itself
HealthNeeds attentionsomething is wrong on the robot: tell your technician

Gamepad buttons ​

ButtonAction
Left stickdrive forward, back and sideways (REMOTE)
Right stickturn (REMOTE)
BSTOP, on every page
Startswitch AUTO / REMOTE
Selectswap camera and map
D-pad up / downspeed level up / down
L1 + Astand up
L1 + Ysit down
R1 (held)drive, only when Hold R1 to drive is on in the settings

Settings ​

Tap the gear at the top right. Changes apply at once.

Settings, with the gamepad buttons on the right
Settings, with the gamepad buttons on the right
SettingWhat it changes
Speed1 Slow, 2 Normal, 3 Fast: 30, 60 or 100 % of the robot's top speed when you drive
Hold R1 to drivethe sticks only drive while R1 is held (a dead-man switch)
Camera videovideo from the robot camera on or off
Lidar points on the mapshows the walls and objects the scanner sees
Robot CPU, GPU and RAM on screenthe load lines in the At a glance panel
Distance and speed on screenthe trip meter under the At a glance panel (section 4.5)
LanguageEnglish or Indonesian
Inspection at a stop pointhow long the robot waits at a point you mark with Point

Trip meter ​

Under the At a glance panel the trip meter shows how far the robot walked since it was last reset and for how long it was moving, its speed now, its average speed while moving and its top speed. The robot counts by itself, also while no handheld is connected, and keeps the numbers when it restarts. To start again from zero, hold the trip meter for a second. Turn it off with Distance and speed on screen in the settings.

LineExampleMeans
Distance1.24 km · moving 52:10walked since the last reset, and the time spent walking
NowNow 0.38 m/sthe speed over the last second
AverageAvg 0.36 · top 0.52 m/sthe average while walking, and the top speed

Driving by hand (REMOTE) ​

  1. Make sure the robot stands and the area around it is clear.
  2. Tap REMOTE at the top, or press Start.
  3. Drive with the left stick (forward, back, sideways) and turn with the right stick.
  4. Change the speed level with the D-pad, up for faster and down for slower.
  5. To hand the robot back to the patrol, tap AUTO or press Start again.

WARNING

In REMOTE the robot does not slow down for obstacles. It goes exactly where you steer it. Drive slowly near people and start with speed level 1.

INFO

In AUTO the sticks do nothing. The app reminds you: AUTO mode: switch to REMOTE to drive.

Teaching a route ​

Plan the route ​

  • Walk the route first and decide where the robot should stop and inspect.
  • For a patrol that repeats on its own, end the route within 1 m of where it started. The robot then loops it.
  • Fix AprilTags on walls along the route, at about the camera's height, and note their places. Your technician sets which tag numbers the robot uses.
  • Avoid passages narrower than about 1.2 m (the robot fits through about 0.7 m, but has no room there to pass obstacles), glass walls, and every drop (section 1.1).

Record the route ​

A route belongs to a site: the map of one place with its AprilTags and its routes. Your technician creates the site once by starting the robot in teach mode and driving it through the place; after that, routes are recorded on it at any time. The robot records only while it knows where it is (localized).

  1. Stand the robot at the start of the route and switch to REMOTE.
  2. Tap Record. The app shows Recording a route and the button changes to Finish.
  3. Drive the route slowly and smoothly. The robot remembers its path.
  4. At each place where it should inspect, stop and tap Point. The app shows Stop point, inspect 10 s (the time comes from the settings).
  5. At the end of the route, tap Finish. The app shows Route saved. The route is also sent to NETRA.
Teaching: Finish ends the recording, Point marks a stop
Teaching: Finish ends the recording, Point marks a stop

TIP

Do not worry about small wobbles while driving. The robot smooths the route by itself, and stop points always stay exactly where you marked them.

Record the AprilTags ​

Do this in the same session as the route, so the tags and the route share one map.

  1. Drive the robot to where its camera sees an AprilTag well, about 1 to 2 m from it.
  2. Hold still and tap Tags. The app shows Tags recorded.
  3. Repeat for every tag along the route.

Running a patrol (AUTO) ​

Localize ​

The robot must know where it is before it may drive itself. Look at the localization chip at the top.

  • Tag ... or Start pose: the robot knows where it is.
  • No loc in red: turn the robot so its camera sees an AprilTag and tap Localize.

The robot also localizes by itself when it sees a known tag after start-up.

Load a route ​

  1. Tap Routes. The list shows every recorded route by date and time.
  2. Tap the route to patrol. The app goes back to the main screen and shows the route on the map.
Routes, newest first
Routes, newest first

Start, pause, resume and end ​

  1. Check that the robot stands, is localized, and is near the route (closer than 3 m).
  2. Tap AUTO, or press Start.
  3. Tap Start. The status shows Patrolling. If the robot was beside the route, it first walks onto it (Walking onto the route).
  4. Pause holds the robot where it is. Resume continues.
  5. End finishes the patrol. The robot stops and stands.

INFO

You can also tap Start in REMOTE. The patrol then begins as soon as you switch to AUTO.

What the robot does on its own ​

  • Follows the route at the patrol speed (section 8.7), slower in tight bends.
  • Stops at each stop point, turns to the recorded direction, waits for the AI to inspect, stays for the stop time, then walks on.
  • Passes obstacles by sliding sideways, at most 0.8 m away from the route, through gaps from about 0.7 m wide. When there is no gap, it stops about 0.4 m before the obstacle and waits.
  • Slows down and stops for anything in its path, in every direction (the protective field).
  • Backs up when it is stuck: when it gets no further for 30 seconds (it can neither pass nor turn), it walks back about 1 m along the way it came, slowly, and tries again. It checks behind it like everywhere else. After three tries at the same place it stays Blocked and waits for you.
  • Loops a route that ends near its start, lap after lap.
  • Goes home at low battery: when the battery is low, it ends the patrol at the end of the current lap (20 % unless your technician changed it).

Patrol status ​

StatusMeaningWhat to do
Idleno patrol runningload a route and tap Start
No route loadedthere is no route to followtap Routes and pick one
Waiting for localizationthe robot does not know where it istap Localize in view of a tag
Walking onto the routeit walks from beside the route onto itwait
Patrollingfollowing the route; the lap number is shownwatch
Approaching a stopaligning on a stop pointwait
Inspectingthe AI looks at the floor at the stop pointwait
Blockedsomething is in the way for a whileclear the way; it continues by itself
Off the routethe robot is more than 1.5 m from the routedrive it back in REMOTE, then AUTO and Start
Sensors stalea sensor stopped reportingstop the patrol, call your technician
Pausedpaused by you, NETRA or after an e-stoptap Resume when it is safe
Emergency stopSTOP is engagedrelease it, then Resume
Route finishedan open route is donetap Start for another run

Emergency stop during a patrol ​

STOP engaged: hold the button to release
STOP engaged: hold the button to release
  1. Press STOP or B. The robot stands still and the screen turns red.
  2. Make the area safe.
  3. Hold Hold to release for one second. The patrol stays paused.
  4. Tap Resume to continue the patrol.

AI inspection and people counting ​

The Inspection page ​

Tap Inspect at the right end of the toolbar. The page shows the AI's state, its pace and model, the people counter and the patrol speed.

The Inspection page
The Inspection page

The status box shows:

  • the state: Running, Loading the model…, Off, Error, or Not responding;
  • the AI model in use;
  • how many inspections and findings there were since the robot started;
  • the queue, in interval pace (section 8.3);
  • the last result and how long ago it was.

Inspection on or off ​

Use the Inspect the floor switch. When it is off, the robot does not inspect, not even at stop points, and the AI model is unloaded to free the robot's memory. Turning it on again takes a few seconds while the model loads.

Pace ​

PaceThe robot inspectsGood for
Continuousone image right after the other, all the timethe most thorough patrol
Intervalone image every few seconds (slider: 0.1 s to 5 min)a lighter load on the robot
Stop pointsonly at the stop points of the routeinspecting chosen places only

In Interval pace the robot takes an image at every interval, even while the AI is still busy with an earlier one. The images wait in a queue and the AI works through them in the order they were taken. The main screen shows 3 frames queued while images are waiting. Each finding is reported with the time and place where its image was taken.

TIP

One inspection takes the AI about 1 to 2 seconds (shown on the page). With a shorter interval the queue fills up and the oldest images are dropped. When the robot stands still, identical images are not queued twice.

AI model ​

The Model list shows the AI models on the robot. In use marks the active one, and Ready on the robot marks models you can switch to. Tap a model to switch. The status shows Loading the model… for a few seconds. A model marked Not pulled yet must first be installed by your technician.

Finding types ​

The Finding types list says what the AI looks for. Each type has a description that the AI reads with every image.

Finding types: the switch decides whether a type is reported to NETRA
Finding types: the switch decides whether a type is reported to NETRA
  • The switch of a type: on means a finding of this type is reported to NETRA; off means it is only shown on the handheld. Stain is off by default, because shiny floors and reflections are easily taken for stains.
  • Tap a type to change its description or to delete it.
  • Add a type creates your own type.

To add a type:

  1. Tap Add a type.
  2. Enter a name, for example unattended bag. The app turns it into unattended_bag.
  3. Describe what the AI should look for, in plain English, for example a bag, backpack or suitcase standing alone on the floor. Short, concrete descriptions work best.
  4. Choose Report to NETRA, then tap Save.
A new finding type
A new finding type

The robot keeps up to 12 types and remembers them after a restart.

People counting ​

The Count people switch turns person detection on or off. While it is on:

  • the main screen shows how many people are in view;
  • people are boxed on the camera video;
  • NETRA receives where people were, for its crowd map.

Patrol speed ​

The Patrol speed slider sets how fast the robot walks its route, in metres per second. It applies at once. After a restart of the robot it goes back to the speed your technician set.

Results on the main screen ​

The At a glance panel under the small view shows the latest results without opening the Inspection page:

LineExampleMeans
AI resultClear · 2 s ago (green)the floor was clean in the last image
Trash · 12 s ago (red)a finding that was reported to NETRA
Stain · 5 s ago (yellow)a finding that is only shown
Queue3 frames queuedimages waiting for the AI (interval pace)
People2 peoplepeople in the camera view now
LoadCPU 31 % GPU 44 %, RAM 7.2/15.3 GB 56 °Cthe robot computer's load; red near the limit
InternetInternet 38 msthe robot's own internet (its modem) answers; offline in red: no internet, findings wait on the robot

Each new finding also shows a short message, Finding: Trash, with a vibration. Tap the panel to open the Inspection page.

NETRA command center ​

NETRA is the command center that runs in the office. Your technician connects the robot to it. Through NETRA the team:

  • sees every robot on a live map with its battery and status;
  • starts patrols, now or on a weekly schedule, and can pause or stop them;
  • receives findings with the photo the AI saw, the time and the place on the map;
  • gets alerts in Telegram groups;
  • sees crowd maps from the people counter.

Routes you record on the handheld are uploaded to NETRA automatically. If the robot loses its network, it keeps patrolling and sends its findings once it is back online.

Every time NETRA shows (a finding, a patrol event, an alert) comes from the robot's clock. Your technician keeps the robot's clock in step with NETRA's (section 12.4); if times in NETRA look wrong, tell your technician.

After the shift ​

Park and switch off ​

  1. Tap End to finish the patrol.
  2. Switch to REMOTE and drive the robot to its parking place.
  3. Tap Sit down, or hold L1 and press Y.
  4. Tap the disconnect button at the top left.
  5. Switch the robot off and charge its battery, as described in the ZSBot manual.
  6. Charge the handheld.

Daily checklist ​

WhenCheck
Beforethe route is clear, dry and has no drops
Beforerobot battery at least 30 %, handheld charged
Beforethe ZSBot remote is at hand
Beforethe app connects; the link is green; the localization chip shows Tag
Beforethe protective field shows Path clear
Beforethe Inspection page shows Running if the patrol should inspect
Duringthe handheld stays with you; STOP is within reach
Afterthe patrol is ended, the robot sits, its battery is charging
Afterfindings that need cleaning are passed on to the cleaning team

Troubleshooting ​

Find the problem in the first column. Call your technician whenever the robot behaves in a way this manual does not explain.

ProblemLikely causeWhat to do
The app does not find the robotthe robot is still starting, or the handheld is on another Wi-Fiwait two minutes after power-on; connect the handheld to the robot's Wi-Fi
The robot rejected the tokenwrong token in the appenter the token from your technician (section 3.3)
No gamepad foundthe app does not see the handheld's controlsclose and reopen the app
The robot does not move with the sticksAUTO mode, STOP engaged, the robot is sitting, or the ZSBot remote has controlswitch to REMOTE, release STOP, tap Stand up, tap Take control
No loc in redthe robot does not know where it isturn it towards an AprilTag and tap Localize
Start does nothing, or robot is … m from the routenot localized, no route loaded, or more than 3 m from the routelocalize, load the route, drive the robot next to the route
Off the routepushed or blocked far from the routedrive it back to the route in REMOTE, then AUTO and Start
Blocked for a long timesomething stays in the way; after three back-ups the robot waitsclear the way, or end the patrol and drive around it
The robot walks back a little by itselfit was stuck for 30 seconds and tries again from further backnothing: that is normal; clear the way if it keeps happening
Internet offlinethe robot's modem has no signal or no datacheck the modem and its SIM card; the patrol goes on, NETRA gets the findings later
The robot stops or swerves for nothing right in front of ita dirty camera window, or the camera sees the shiny floor as an obstacleclean the camera window; if it goes on, tell your technician
Video stays blackWi-Fi is weak, or the camera is offmove closer; check Camera video in the settings
Inspection shows Error or Not runningthe AI is not running on the robottell your technician
Sensors stale or No scanthe laser scanner stoppedend the patrol, sit the robot down, call your technician
Needs attention, or red CPU, GPU or RAMthe robot computer has a problemfinish the lap, then tell your technician
Times in NETRA are off, or the robot stops with TF stalethe robot's clock is not in steptell your technician (section 12.4)

Your technician may ask for the robot's status screen. On a computer connected to the robot (the technician sets it up), log in to the robot and type pmonitor: one screen shows the mode, the battery, the route, the sensors, the internet and the robot computer, one line each, with problems in yellow and red. Tap a line to see it in detail and Back to return. Send a screenshot, or tap Report and send the file whose name it shows. Quit closes it.

For the technician ​

Addresses and ports ​

WhatAddress
Robot computer (Jetson, Pashupati)192.168.234.234, SSH user robot
Handheld link (teleop and discovery)UDP 9870 on the robot computer
Video for the handheld (WebRTC)TCP 8890, UDP 8190
Robot motion computer (ZSBot SDK)192.168.234.1, UDP 8081 / 8080
LiDAR (Livox MID-360)192.168.123.20; robot computer 192.168.123.19 on that cable
Timechrony on the robot computer (TIME_SERVERS); PTP master for the LiDAR on its cable
AI models (Ollama)127.0.0.1:11434, on the robot only

Service commands ​

bash
ssh robot@192.168.234.234
sudo systemctl restart pashupati   # restart the stack
journalctl -fu pashupati           # follow its log
pashu                              # ROS shell of the stack
ros2 topic echo --once /health/status

Configuration ​

FileHolds
/etc/pashupati/pashupati.envthe deployment: robot package, NETRA address and token, extras
/etc/pashupati/site.yamlparameters of this robot and site, see the Tuning Guide
~/.pashupati/sites/<site>/one site: its map, AprilTag positions (tags.json) and recorded routes (routes/)

Restart the service after changing either file in /etc/pashupati. pconfig (menuconfig) edits both through a menu: every parameter with its description and range, values checked before they are saved, a backup kept and a restart offered (Tuning Guide, section 1.2). pmonitor shows the robot's live state and writes a report file (Tuning Guide, section 8.7).

Time ​

The LiDAR, the camera, the robot computer and NETRA must use one clock: two clocks that differ make the robot stop (TF stale) and put findings at the wrong time in NETRA. Once per robot, set TIME_SERVERS (NETRA's host or its NTP server) in /etc/pashupati/pashupati.env, then:

bash
scripts/setup.sh install timesync ptp   # chrony, and the PTP master for the LiDAR
scripts/timesync.sh check               # offset to the time source, PTP master running?

The offset must stay below 0.05 s. NETRA receives the robot's measured offset in its telemetry (clock). Details are in the Tuning Guide, section 8.6.

Update ​

bash
cd ~/dev/Pashupati && git pull && git submodule update --init --recursive
scripts/setup.sh install dharma build config service && sudo systemctl restart pashupati

The handheld app is updated by installing a new APK from the PashupatiController repository.

Quick card ​

ToDo
Stop the robot nowSTOP or B; release: hold Hold to release
Stand up / sit downStand up / Sit down, or L1+A / L1+Y
Drive by handREMOTE (Start), left stick moves, right stick turns
Faster / slowerD-pad up / down
Teach a routeREMOTE, Record, drive, Point at stops, Finish
Record tagsstand in view of a tag, Tags
PatrolLocalize, Routes → pick, AUTO, Start
Pause / continue / endPause / Resume / End
Inspection settingsInspect
Robot ignores the handheldTake control
Swap camera and maptap the small view, or Select