Outdoor operations (RTK-GNSS supported areas)
Related components: Autopilot Inference,, Cerebra Studio – Mission Planner.
Avular has developed a software stack, called Autopilot Inference, which provides autonomous capabilities to the Origin One (mainly for navigation and tasking). These capabilities allow a user to command tasks, such as GoTo Waypoint, Follow Path, Cover Area, Dock, Undock and Wait, using our mission planner that is part of Cerebra Studio. How to plan such autonomous outdoor* operations will be discussed here.
Info
These features are only available if your Origin One was acquired or upgraded with Avular's Autopilot Inference, an RTK-GNSS antenna, and a base station. Features that require a "localization map" additionally depend on the presence of a 3D LiDAR sensor, alongside the Autopilot Inference and RTK-GNSS systems.
Info
Confirm that Cerebra Studio is installed on your computer. See the installation guide for instructions.
Warning
Ensure that the robot is unplugged from its charger before operation.
Job preparation
After the robot has fully completed its startup procedure:
- Power on the remote controller.
- Check the onboard UI to confirm that the robot has acquired an RTK-GNSS fix.
- Ensure that the computer that is running Cerebra Studio has internet access (required for loading satellite maps)
-
Ensure your computer is connected to the robot:
-
Either via the robot’s Wi-Fi access point, or
- Through the same external Wi-Fi network as the robot.
Before creating a mission — referred to as a "job" — you must complete the preparatory steps described below.
Preparation |
|
---|---|
Ensure the robot has an accurate estimate of its position. For outdoor operations that rely on RTK-GNSS the robot must improve its initial position (and orientation) estimate by being manually driven approximately 3–5 meters back and forth. If you intend to use a localization map of the outdoor environment, for example, to command GoTo Waypoint tasks, you can load a localization map using the following ROS 2 service call: ros2 service call /autopilot/information_manager/load_localization_map knowledge_base_msgs/srv/PublishLocalizationMap "name: map_name" See this page for instructions on setting up a ROS 2 connection with the robot and loading a localization map. |
![]() |
Open Cerebra Studio and use the drop-down menu in the top yellow bar to connect to your robot. Once connected, open the Mission Planner. | ![]() |
Cerebra Studio will prompt you to open a "location." In this case, create a new outdoor location unless one is already set up for the satellite map you want to use. Connect to the robot, select "Add Location," toggle the "Global Map" option in the pop-up menu, and enter the latitude and longitude where you want the satellite image centered. You can click the compass icon to open Google Maps and copy the coordinates into the input field. After a few moments, the location will be added to Cerebra Studio’s list, and you can select it. |
![]() |
Next, Cerebra Studio will prompt you to select a "job" for the robot. You may choose an existing job, or create a new one by clicking the "Create New Job" button if none exist or if a new job is needed. Provide a name for your job, and it will be added to Cerebra Studio’s list of jobs, which you can then select. Once selected, Cerebra Studio will display the satellite map of your operational area along with the robot’s current position. |
![]() |
During job execution you can monitor additional information using the dashboard in Cerebra Studio's Mission Planner. In the top-right corner, two circular indicators display the robot status. The first shows the execution state (e.g., "waiting for new behaviors", "moving", or "The robot is inside the map, continue with map supported navigation"). The second indicates pose accuracy and should read "high robot pose accuracy" to ensure reliable autonomous operation. |
![]() |
This completes the preparation steps. You may now proceed to define your first job.
Job definition
During the preparation phase, you will have either selected an existing job or created a new one. This section assumes you want to define a new job. A job consists of an ordered list of tasks. In the image below you you will see a relevant snippet of the Cerebra Studio interface showing the part related to the job that is being defined as a list of tasks. On the top of this snippet you may see the Origin One that to which Cerebra Studio is connected, which in this case is named PB4U9PHV. The row below is a set of buttons and status signals, such as a button to "open library", or somewhat further to the right of that is a button "start job" for starting the current job that has been defined. An explanation for all of these buttons can be found on the page of job scheduling and more details below the link in this manual on Cerebra Studio.
Here, let us continue with the job and its tasks. In the same snippet, below the row of buttons and signals and located in the center, you will find the name of the job that is being edited in the mission planner of Cerebra Studio - which in this case is named "job_for_manual". Also below the buttons and signal, but then to the right, you will find two (black) buttons called Clear task list and Add task. The Add task button allows you to insert a new task into the job. Once a task is added, as explained in the next section, it will appear in the ordered list located beneath the same button. When the job is executed, the robot will perform each task in sequence from top to bottom. As the name suggests, the button Clear task list removes all tasks in the task list.
Task: GoTo Waypoint
GoTo Waypoint is a task where the robot plans its own path across the localization map to a specified waypoint and then follows that path while avoiding obstacles. Here, the localization map refers to the map created manually.
Note
If no map is available, or if the robot's starting point or the destination waypoint lies outside the map, or if no feasible path can be found on the map, the robot will be unable to plan a route and will abort the task.
Warning
The robot will always try to plan the shortest path from start to destination by using the map. It will avoid areas that are known to be "occupied" (black pixels). However, any other area, such as "free" (light grey pixels) or "unknown" (dark grey pixels), shall be accepted by the path planner as points at which a path is allowed to be planned. Please be aware that the shortest path may thus cross unexplored areas (dark grey pixels), that in the real environment are walls, in which case the GoTo Waypoint task will fail and abort. A solution would be to create an intermediate GoTo Waypoint task ensuring that the robot is guided along a preferred, known route.
To define a GoTo Waypoint task, click the Add Task button located beneath the job name field. This opens a pop-up menu (illustrated in the left panel of the table below). In this menu:
- Go to the Type field and select GoTo Waypoint from the drop-down list.
- The menu will update with the fields relevant to the selected task.
- In the Waypoint field, either select a previously saved waypoint or click New to create a new one. For now, enter only the waypoint's name; you will define its position on the map afterward.
- You can optionally configure task-specific parameters such as:
- maximum speed (in m/s, up to 1.5)
- distance to path (in m), which defines how far the robot may deviate from the planned path to avoid obstacles.
- If left blank, default values will apply.
After filling in the required fields, click Add in the lower-left of the pop-up menu. The task will appear in the job’s task list in the top-right corner of the interface.
Next, you must specify the waypoint’s position. Click anywhere on the map to place the waypoint. You can reposition it by dragging with your mouse. You can also set the robot’s desired orientation at the waypoint using the attached orange handle.
Definition of policy parameters |
Selecting the waypoint on the map |
---|---|
![]() |
![]() |
To execute the task, click the play button next to the job’s name. The robot will perform the GoTo Waypoint task, and the interface will update to reflect the robot's movement, as shown in the example video below. More on Job execution and what you may expect from that is presented later on this page.
Typical scenarios for using this task is when you are working with a localization map and you are less concerned with the exact path the robot takes to reach the destination. However, this task may be less effective when the destination is very close to the starting point (e.g., within 2–3 meters), as the robot may generate an unnecessarily complex path and appear to “dance” towards the goal. In such cases, it is often better to use a predefined path with the Follow Path task instead.
Task: Follow Path
Follow Path is a task where the robot follows a specific path defined on—or partially outside—the localization map defined on the satellite maps of Cerebra Studio, and navigates along that path while avoiding obstacles. The robot attempts to track the path as precisely as possible (given limitations like localization accuracy, obstacle avoidance, maximum turn rate), typically achieving a tracking accuracy of up to 25 cm in obstacle-free conditions.
Note
The robot must be within 2–3 meters of the path's starting point, otherwise, the task will be aborted.
If the robot is already on or near the path, it will begin following it from the nearest valid point within this 2–3 meter range.
The path may contain loops, but the path section that is in between any crossing points must be at least 4 meters long.
If the path is a loop, the robot must start closer to the path’s starting point than its endpoint; otherwise, it may prematurely consider the task complete.
To define a Follow Path task, click the Add Task button located below the job name. This opens a pop-up menu (illustrated in the table below). In this menu:
- Go to the Type field and select Follow Path from the drop-down list.
- The menu will update with the fields relevant to the selected task.
- In the Path field, choose a previously saved path or click New to create one. At this stage, only a name is required; the path itself will be drawn on the map later.
- Optionally set additional parameters, for example:
- Reverse: When enabled, the robot will start from the path’s endpoint and navigate in reverse.
- Maximum speed: Defined in meters per second, with a limit of 1.5 m/s.
- Distance to path: The maximum deviation allowed (in meters) from the planned path, for example to navigate around obstacles. By default, the robot stays within 1 meter unless smaller values are specified.
- If left blank, default values will apply.
After completing the input fields, click Add in the bottom left of the menu. The task will appear in the task list.
Next, define the path on the map. Click to place each point. Points can be repositioned by dragging them. The path will appear as you add more points. The starting point is marked in green and the destination in red.
Definition of policy parameters |
Selecting the path on the map |
---|---|
![]() |
![]() |
To execute the task, click the play button next to the job name. The robot will begin following the path, and the Cerebra Studio interface will update in real time. If the Reverse option is selected, the robot must start near the path’s endpoint. More on Job execution and what you may expect from that is presented later on this page.
Typical scenarios for using this task is when you want the robot to follow a predefined path, or when navigating to a location outside the localization map other than the satellite map in Cerebra Studio—either as a permanent destination or as a temporary waypoint before driving back into the mapped area. However, this task may be less suitable in environments with many medium- or large-sized obstacles. Since the robot is constrained to the defined path and cannot dynamically reroute around unexpected obstacles, it may abort the task if the path becomes obstructed.
Task: Cover area
Cover area is a task in which the robot plans a coverage path across a defined area to ensure complete coverage, stopping in front of ad-hoc obstacles. If these obstacles are not cleared within 10–15 seconds, the robot will abort the task and continue to the next one. It may still navigate around smaller obstacles.
Note
The robot must be positioned inside the perimeter before starting the task. Otherwise, it cannot plan a coverage path. Use a GoTo Waypoint or Follow Path task to bring the robot into the perimeter beforehand.
The robot needs at least 1 meter of free space around the outside of the perimeter, as it will perform turns along the boundary and may plan paths outside the defined area. In confined environments, this task may not succeed.
The robot begins execution from the furthest reachable point within 2–3 meters. For small perimeters (e.g., 1x1 meter), the robot may start at a point near the end of the planned path, which can appear as if it skipped part of the area.
The robot has some obstacle avoidance, although when encountering an obstacle it will fairly quick decide to abort the task.
To define a Cover area task, click the Add Task button beneath the job name. In the pop-up menu that appears:
- Go to the Type field and select Cover area from the drop-down list.
- The menu will update with the fields relevant to the selected task.
- In the Perimeter field, choose an existing polygon or click New to create one. For now, only a name is required; the perimeter will be drawn later.
-
Configure the additional input fields as needed:
- controller: Choose FollowPathLoosely, FollowPathRoughly or FollowPathStrictly. The default controller is FollowPathRoughly and only that controller should be used when covering outdoor areas. Although FollowPathStrictly may also be used when the terrain is very flat, such as asphalt.
- distance to path: Allowed deviation in meters from the planned path.
- maximum speed: Speed in m/s (max: 1.5). With "FollowPathStrictly", the robot drives more slowly by design.
- number of outer contours: Number of additional perimeter traces directly along the outside of the perimeter (default: two).
- direction of lines: Direction of the internal coverage pattern in degrees, relative to the map’s horizontal axis.
- linear infill: Toggle between a lawnmower pattern (linear) or spiral pattern (contour-based).
- use localization map: Enable to allow path planning that accounts for mapped obstacles — be sure that, when enabled, the area surrounding the coverage task has been mapped and that the map is loaded. Please note that even though the path may be planned to avoid known obstacles, the default controller FollowPathRoughly may diverge from the path so that the obstacle is still encountered.
- If left blank, default values will apply.
Once all inputs are set, click Add. The task will appear in the job’s task list.
Next, define the perimeter by clicking on the map to place each vertex. Adjust points by dragging them. As you click, the perimeter shape will take form.
Definition |
Execution |
---|---|
![]() |
![]() |
To execute the task, click the play button beside the job name. The robot will begin to cover the area, for example using a lawnmover pattern, and location of the robot in the Cerebra Studio interface will update in real time, as shown in the example video below. More on Job execution and what you may expect from that is presented later on this page.
Typical scenarios for using this task is when you want the robot to autonomously sweep and cover a large area. However, this task may not be suitable in environments with many ad-hoc obstacles, as the robot may be forced to stop and abort the task if these obstacles are not removed within 10-15 seconds..
Task: Dock
See the task definition of docking for the indoor operations
Task: Undock
See the task definition of undocking for the indoor operations
Task: Wait
See the task definition of waiting for the indoor operations
Job execution
Warning
It is advisable to keep the remote emergency stop (e-stop) in your hand during job execution, so you can immediately stop the robot if necessary.
The job is now stored in Cerebra Studio, but you still need to send it to the robot for execution. As mentioned in the section on Job Preparation, a play job button is present as a blue button just below the information to which robot that Cerebra Studio is connected. Clicking this icon will transmit the job to the robot and start its execution.
Here, we continue with what you may expect as a user about the robot's moving behavior concerning sharp corners, localization, and obstacle avoidance. In addition, the status indicators in Cerebra Studio provide more insights about the status of a Task, Behavior and the position accuracy of the robot. Specific information about these indicators is found on the page of Job Scheduling.
Sharp corners
The default controller used by the robot is FollowPathLoosely, which is optimized to navigate around small- and medium-sized obstacles. It achieves this by planning several alternative paths approximately 2–3 meters ahead and selecting the most promising one.
While this controller performs well on smooth paths, it may struggle with sharp corners or U-turns. In such cases, the robot may exhibit hesitant or erratic motion as it struggles to choose an appropriate path. For U-turns—particularly when two consecutive 90-degree turns are placed within 1 meter of each other—the robot may fail to make progress altogether.
Nervous at sharp corner |
Almost failing at U-turn |
---|---|
Localization
While executing a job, the robot continuously tracks its position, which is also visualized on the satellite map in Cerebra Studio. This position estimate is based on several information sources:
- Odometry: Estimates position relative to the start-up location using data from the IMU and wheel encoders.
- RTK-GNSS: Position relative to the global frame, obtained by computing the Cartesian coordinates of received RTK-GNSS fixes with respect to the latitude and longitude of the global frame's defined origin.
- Marker information: Calculates global position by detecting Aruco markers and transforming the robot’s relative position to a global frame, using known marker positions.
- Map information: Matches current LiDAR scans against a pre-recorded localization map (see Creating a map). When the robot is within the map boundary, it refines its global position based on this match. The map’s origin is globally known because it is linked to the position of the Aruco marker used during map creation.
Info
The robot is delivered with prior knowledge that the Aruco marker with ID = 0 is positioned at the mathematical origin of the global frame. By default, the location of Aruco marker 0 defines this origin.
In outdoor operations, this position must correspond to the same latitude and longitude used to define the global frame’s mathematical origin, which is referred to as "coordinate system info" throughout this manual and the robot interface.
If you wish to update the position of your Aruco markers to align with a different location in the global frame, please refer to the background information in the Autopilot Inference section.
Inaccurate position
In some cases, the robot may pause or stop during a job due to an unreliable position estimate. This typically occurs when it is not receiving any RTK-GNSS updates, due to nearby buildings, underneath trees, or other obstructions.
To recover:
- Manually drive the robot to a location with reliable RTK-GNSS reception, and then manually drive 3-5 meters back and forth to obtain an accurate position estimate of the robot.
- Alternatively, add an Aruco marker to the robot’s knowledge base by specifying its ID and global position, and update the job so the robot pauses and faces the marker. This allows the robot to re-localize using a known visual reference.
Incorrect Position
It may occur that the robot displays an incorrect position on the satellite map in Cerebra Studio, or that it drives in an unexpected or incorrect direction, even when there are no obstacles blocking its path. This behavior is most often caused by an inaccurately estimated position. In outdoor environments, this can frequently happen when operating near buildings—while the RTK-GNSS may report high accuracy, the actual fix may be significantly off.
To recover:
- Manually drive the robot back into an open area with reliable RTK-GNSS reception. Then, manually drive the robot back and forth for 3–5 meters to help it obtain a more accurate position estimate.
If the robot moves in the wrong direction without any obstacle in its way, this is often caused by an incorrectly estimated position. Although LiDAR matching can sometimes lead to errors, the more likely cause is the detection of an Aruco marker that exists in the robot’s knowledge base but is incorrectly placed in the real environment.
To prevent this:
- Manually drive the robot to a location with reliable RTK-GNSS reception, and then manually drive 3-5 meters back and forth to obtain an accurate position estimate of the robot.
Narrow corridors
While executing a GoTo Waypoint or a Follow Path the robot is able to move through narrow corridors and door openings. There are however limitations to this capability of the robot.
- Most importantly, a door opening or corridor should be wider than 90 cm while for a smooth drive even 95 cm is preferred.
- Also, make sure that the opening or corridor is free of obstacles.
- Finally, in case there is vegetation alongside the walls, then overhanging leaves and branches may be detected as obstacles, thereby hindering the robot to smoothly move through the door or corridor.
Obstacle avoidance
While executing the job the robot will avoid obstacles that are not present on its localization map but are ad-hoc encountered. If and how the robot shall avoid obstacles depends on the task and policy that was set by the user. Hereto, we distinguish between tasks that have a path constraint, such as Follow Path and Cover Area, and tasks that do not have a path constraint, such as Go To Waypoint.
Warning
Since the robot uses the LiDAR for detecting obstacles, and a LiDAR is incapable of detecting shiny surfaces and glass, you should not expect that the Origin One will avoid glass walls and shiny or glass obstacles. So make sure that these cannot be accidentally damaged by your Origin One. If you want your robot to avoid glass walls, try masking the glass with window foil (matt or frosted) for the first 30 cm.
Warning
The LiDAR of the robot is only able to detect objects from 30 cm onwards. Any object closer it will not detect and thus continues driving forward thereby possibly hitting the object. As such, the most difficult types of objects are small poles straight in the center front of the robot, i.e., where the radius of 30 cm around the LiDAR has most effect as to how far it is in front of the robot. An example is depicted below. In such a case the robot shall detect the object but it will only respond to avoiding the object when it might be too late, i.e., when the object is already in the un-observable zone of the LiDAR. It may thus cause the robot to hit the object. This only applies to a small pole dead-center to the robot. A wall is wider than the pole and will this be detected (and avoided) properly. And also a small pole that is more to the side shall be avoided as that object is observable up until closer distance to the front of the robot.
Navigating with path constraint (used for the Follow Path task)
When the robot is constrained to follow a path, it assumes that a limited deviation from the path is acceptable. Users can define this allowable distance, but even if not explicitly set, the robot will typically stay within approximately 0.5 to 1 meter of the planned path.
As a result, the robot is generally able to avoid small and occasionally medium-sized obstacles. However, it may not be able to navigate around large obstacles, which can cause the task to fail.
avoiding small-sized obstacles |
avoiding medium-sized obstacles |
avoiding large-sized obstacles |
---|---|---|
Small-sized obstacles, i.e., up to 10-15 cm are typically avoided by the robot while continuing driving forwards. | Medium-sized obstacles, up to 50 cm, are typically avoided by the robot by first slowing down in front of the obstacle. The robot then assesses the situation by attempting small deviations to the left and right before choosing a side to pass the obstacle. Whether the obstacle can be successfully avoided depends on how far the robot is allowed to deviate from the path constraint. | Large-sized obstacles are typically not avoided by the robot. Upon encountering such an obstacle, the robot will slow down and attempt to assess the situation by testing left and right deviations from the path. However, after approximately 10 seconds —depending on the specific conditions and how persistent the robot's attempts are— it will give up and abort the current task, then proceed to the next one. |
![]() |
Navigating without path constraint (used for the GoTo Waypoint task)
When the robot is not constrained to a predefined path, it will automatically plan its route using a combination of the previously recorded localization map (or floor plan) and any obstacles encountered during the current task or the one executed immediately prior. Users may optionally define a distance parameter, which the robot will attempt to stay within as it follows its self-planned path.
Since no fixed path constraint is imposed, the robot is free to replan its route at any time, as long as it remains within the mapped area. In this mode, it can avoid small-, medium-, and large-sized obstacles, up to a maximum avoidance range of approximately 3 meters.
avoiding small-sized obstacles |
avoiding medium-sized obstacles |
avoiding large-sized obstacles |
---|---|---|
Small-sized obstacles, i.e., up to 10-15 cm are typically avoided by the robot while continueing driving forwards. | Medium-sized obstacles, up to 50 cm, are typically avoided by the robot by first slowing down in front of the obstacle. The robot then assesses the situation by attempting small deviations to the left and right before choosing a side to pass the obstacle. | Large-sized obstacles, up to 3 meters, are typically avoided by the robot by slowing down and attempting left and right deviations around the obstacle. After approximately 10 seconds—depending on the situation and the robot’s assessment—it will replan a new path. However, the newly planned path may still pass through the same obstacle if it is particularly large or poorly mapped, causing the avoidance process to repeat. In most cases, the robot eventually finds a passage around the obstacle. Occasionally, it may enter a deadlock situation. If this occurs, the robot will attempt to replan up to three times. If all attempts fail, it will abort the task and proceed to the next one. |
Info
If the obstacle is present on the localization map or floor plan used by the robot for planning, the robot will plan a path around it regardless of the obstacle’s size.