Restart or Resume Path After ECU Power Loss....................................................................................................................40
Angle to Curvature Service Tool Screen................................................................................................................................ 71
Curvature to Angle Service Tool Screen................................................................................................................................ 72
Extract Ring Service Tool Screen.............................................................................................................................................. 76
Inputs and Outputs..................................................................................................................................................................77
Feature Localization Service Tool Screen..............................................................................................................................79
Obstacle Detection Service Tool Screen................................................................................................................................89
Internals and Outputs ............................................................................................................................................................ 90
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Contents
Origin Service Tool Screen..........................................................................................................................................................91
Control Points Info................................................................................................................................................................... 97
Position Filter Service Tool Start Screen................................................................................................................................ 98
Standard Deviation................................................................................................................................................................100
Post Detection Service Tool Start Screen............................................................................................................................101
Internals and Outputs...........................................................................................................................................................104
Coordinates and Score.........................................................................................................................................................105
Reflector Detection Service Tool Screen.............................................................................................................................106
Features Location...................................................................................................................................................................108
Standard Deviation................................................................................................................................................................108
Relative Position Service Tool Screen...................................................................................................................................109
Two Point Planner Service Tool Screen............................................................................................................................... 111
Control Points Info.................................................................................................................................................................114
UTM Conversion Zone Service Tool Start Screen.............................................................................................................118
Yaw Estimate Service Tool Screen.........................................................................................................................................122
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Library Introduction
The autonomous control function block library offers a quick and easy way to develop PLUS+1® GUIDE
applications that provide the foundation for autonomous machine control systems.
Using the function blocks in this library, developers can create applications that allow machines to
navigate environments without an operator.
Autonomous machine applications are comprised of several core sub-systems built with the autonomous
control function blocks:
•
Localization: One of the core functions of the Autonomous Control Library is to provide accurate
positioning information to Navigation sub-systems. The function blocks listed below aid in
localization.
•
Navigation: The Path_Follower function block helps autonomous machines reach their destination.
•
Perception: Radar systems, laser-based (LiDAR) systems, and ultrasonic sensors can help the
autonomous machine avoid obstacles in its path.
Localization
The physical location of the machine, over time, must be determined so the machine can operate
autonomously.
When processed by a Position Filter, data from a Global Navigation Satellite System (GNSS), Inertial
Measurement Units (IMU), steering angle sensors, and wheel speed sensors can produce a constant and
reliable estimate of a machine's location.
The Autonomous Control function block library uses a Position_Filter to provide a method to combine
GNSS data, IMU data, and odometry data. The Position_Filter function block processes the combined
data to produce an improved estimate of the autonomous machine's position and orientation over time.
To produce location estimates, the Position Filter requires sensor data to be formatted to fit standard
conventions. For example, raw GPS data is conventionally reported in latitude and longitude. The data
must be transformed into the Universal Transverse Mercator (UTM) coordinate system.
The Autonomous Control Library supplies the UTM_Conv, Origin and the Relative_Pos function blocks
to format the data properly for the Position Filter to use.
The UTM Conversion blocks (with and without zone selection) are used to convert from latitude and
longitude to the UTM coordinate frame. The Origin function block captures the starting UTM position of
the machine.
The Relative_Pos is stored as X (East being positive) and Y (North being positive) distance from the
Origin in millimeters. This simplifies operations for downstream blocks, so calculations do not need to be
done on raw latitude and longitude values.
The Ackermann_Yaw_Rate function block uses steering and speed sensor data to form a machinecentric odometry pair. Sensor standard deviation is used in the covariance matrix in the Position Filter.
UTM is the coordinate information of the latitude and longitude information of the earth into a plane
coordinate system. The East and West directions are divided into 60 zones, with each zone being 6
degrees. Further, each zone is divided into a band every 8 degrees in the latitude direction, using the
labels C to X. The letters I and O are not used, to avoid their potential confusion with the numbers one (1)
and zero (0). A, B, Y, and Z represent two polar regions.
The Path_Follower function block compares the current machine position to the desired path and
provides a steering curvature command to bring the machine to the path.
The path is made up of one or more connected Bézier curves. The Bézier curves connect the waypoints to
make the path.
By using Bézier curves, the number of points used to define the path is reduced. This lowers computation
time and needed memory, while retaining the ability to navigate a complex path.
The Path_Follower function block uses a configurable look-ahead distance that determines how the
machine calculates its steering correction commands to reach the intended path. It also allows for
looping and non-looping paths and contains a Search_Path feature to locate the nearest point on the
path when the machine is not on the path.
The figure that follows shows a basic path, as well as the components that make up the waypoints on the
path, such as the Relative X Coordinate, Relative Y Coordinate, Bearing, Backward Radius, and Forward
Radius. The Bearing is the angle at which the machine should pass through the waypoint. The curve
between two waypoints is weighted by the length of the Forward Radius of the first point and the
Backward Radius of the second point.
An autonomous machine requires sensors to detect and avoid obstacles during navigation.
CAN-based sensors can easily integrate with the Autonomous Control Library. Radar systems are well
suited to detect obstacles for autonomous machines due to their ability to operate in harsh conditions.
LiDAR systems can also provide some obstacle data on CAN, due to their more accurate distance
readings.
Ultrasonic sensors can detect objects that are in close range to the autonomous machine. With their
conical detection zone and an offering of a scalar distance value to the nearest object, these sensors are
useful for emergency braking and in safety curtain scenarios.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Library Introduction
Namespace values are case-sensitive.
•
To save controller memory, use a short namespace value.
•
4. Click OK.
5. Repeat these steps to enter unique namespace values for other identical function blocks.
ACL Acronyms
Acronyms used in the library user manual are described.
AcronymMeaning
ACLAutonomous Control Library
CANController Area Network
ECUElectronic Control Unit
EKFExtended Kalman Filter
ENUEast/North/Up
GNSSGlobal Navigation Satellite System
GPSGlobal Positioning System
IMUInertial Measurement Unit
LiDARLight Detection and Ranging
UTMUniversal Transverse Mercator
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Ackermann Yaw Rate Function Block
The Ackermann Yaw Rate function block provides yaw rate information to the Position Filter.
The function block converts machine speed and steering angle into a velocity and yaw rate machinecentric odometry pair.
The pair consists of the linear velocity (meters/second) and the angular velocity (degrees/second). The
values are defined relative to a coordinate frame which has its origin on the center of the rear axle with
the X-axis pointing forward along the machine, Y pointing left along the axle and Z pointing upwards.
•
The X-axis points forward along the machine.
•
The Y-axis points left along the axle.
•
The Z-axis points up.
Input data types must exactly match the indicated type to successfully compile.
The checkpoints page includes advanced checkpoints for each input, output, and internal signal. These
require a unique name space to prevent multiple checkpoints with the same name. See the topic ChangeNamespace Value for more information about creating unique namespaces.
Sensor variance—the noise observed in sensor data—can be manually set if it is not provided by the
sensor.
The standard deviation of a sensor characterizes the amount of noise in the sensor. This is obtained from
sensor documentation of manually calculating from a log of steady-state sensor data.
Inputs
Inputs to the Ackermann Yaw Rate function block are described.
ItemTypeRangeDescription [Unit]
ChkptBOOLT/FEnables advanced checkpoints with namespace for each Diag signal.
T: Include checkpoints when compiled.
F: Do not include checkpoints when compiled.
Str_Ang_Std_DevU321-4294967295The standard deviation of the steering angle.
[0.01 degree]
VelX_Std_DevU321-4294967295The standard deviation of VelX.
[mm/s]
VelXS32-25000-25000The linear velocity of the machine.
[mm/s]
Str_Ang
S16
-7000-7000The angle between the front of the machine and the steered wheel direction.
Negative values are to the right. Positive values are to the left.
[0.01 degree]
Danfoss | January 2020AQ295075513101en-000101 | 13
Page 14
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Angle to Curvature Function Block
Inputs
The following table describes the inputs of the Angle to Curve function block.
ItemTypeRangeDescription [Unit]
ChkptBOOLT/FEnables advanced checkpoints with
namespace for each Diag signal.
T: Include checkpoints when
compiled.
F: Do not include checkpoints when
compiled.
Str_Ang
Parameters
S16-9000 to 9000The angle between the front of the
machine and the steered wheel
direction.
Negative values are to the right.
Positive values are to the left.
[0.01 deg]
The following table describes the parameters of the Angle to Curve function block.
ItemTypeRangeDescription [Unit]
ParaBUS
Wheelbase
U16300 to 20000The distance between the centers of
--
Adjust configuration values here, or
replace them with signals routes
from the application through the
Para BUS.
the front and rear wheels.
[mm]
Default: 5000
Outputs
The following table describes outputs for the function block.
ItemTypeRangeDescription [Unit]
DiagBUS——Bus containing diagnostic values for
troubleshooting. In addition, all
inputs, parameters, and output
signals are contained inside of the
bus.
StatusU16——Bitwise code where multiple items
can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is
out of range.
FaultU16——Bitwise code where multiple items
can be reported at a time.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
Curvature
S32
-2,147,483,648 to 2,147,483,647
Curvature calculated based on the
steering angle and wheelbase of the
machine.
Negative values are right curves.
Positive values are left curves
[0.01/km]
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Curvature to Angle Function Block
The Curvature_to_Angle function block converts curvature to steering angle.
To get the steering angle from the Curvature_to_Angle function block you provide a curvature input in
0.01/km and a wheelbase parameter in mm.
Input data types must exactly match the indicated type to successfully compile.
Inputs
The following table describes inputs for the Curve to Angle function block.
ItemTypeRangeDescription [Unit]
Curvature
ChkptBOOLT/FEnables Advanced Checkpoints with
S32
-2,147,483,648 to 2,147,483,647
Curvature calculated based on the
steering angle and wheelbase of the
machine.
Negative values are right curves.
Positive values are left curves
[0.01/km]
Namespace for each Diag signal.
T: Include checkpoints when
compiled.
F: Do not include checkpoints when
compiled.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Edge Detection Function Block
The Edge Detect function block analyzes the incoming LiDAR scan and parses the data to look for a an
edge between two continuous features.
The edge appears as a discontinuity in the LiDAR scan. This can be used to find any generic edge of a
smooth feature such as a wall or garage door, and it is able to parse the scan from either direction, limit
the range of the scan and the size of the feature to help find more specific features.
Input data types must exactly match the indicated type to successfully compile.
The following table describes the limitations of the function block.
Danfoss | January 2020AQ295075513101en-000101 | 17
Page 18
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Edge Detection Function Block
ItemDescription
Parse DirectionThe parsing direction is determined by the values chosen for the start and
stop angles. If the start angle is less than the stop angle, the parsing occurs
counter-clockwise. If the start angle is greater than the stop angle, the
parsing occurs clockwise.
Falling EdgeThe algorithm is designed to find a falling edge within the LiDAR scan
where the distance return values are suddenly much farther away or
disappear. This is not designed to find an interior corner where the returns
appear closer.
Inputs
Inputs to the Edge Detection function block are described.
The Parsing Direction is determined by the values chosen for the Start and Stop angles. If the Start Angle
is less than the Stop Angle the parsing occurs from right to left. If the Start Angle is greater then the Stop
angle the parsing occurs from left to right.
The algorithm is designed to find a Falling Edge within the LiDAR scan where the returns are suddenly
much farther away or disappear. This is not designed to find an interior corner where the returns appear
closer.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Edge Detection Function Block
ItemTypeRangeDescription
Locker_ID
ChkptBOOLT/FEnables Advanced Checkpoints with
Parameters
ItemTypeRangeDescription [Unit]
ParaBUS——Adjust configuration values here, or
Start_Angle S32-18000-18000Specifies which beam of the LiDAR
Stop_Angle S32-18000-18000Specifies which beam of the LiDAR
Min_Feature_Size U161-60000Determines how large of an object is
S8-1-99Non-negative ID gives location for
point cloud data to be retrieved
from.
-1: Will not process new LiDAR scan.
Namespace for each Diag signal.
T: Include checkpoints when
compiled.
F: Do not include checkpoints when
compiled.
The Edge Detection function block's operating characteristics are set by para bus input signals.
replace them with signals routed
from the application through the
Para Bus.
scan to use to start parsing for an
edge.
Default: 0
[0.01 deg]
scan to use to stop parsing for an
edge.
Default: 18000
[0.01 deg]
required to be identified as a
continuous surface Determines how
large of an object is required to be
identified as a continuous surface
before finding the falling edge. This
can be used to filter out noise from
the sensor or ignore very small
objects.
This can be used to filter out noise
from the sensor or ignore very small
objects.
Default: 1000
[mm]
Ring
U160-65535For 3D LiDAR which ring, or
horizontal row of the scan to use.
For 2D LiDAR set to zero.
Default: 0
Parse Direction: The parsing direction is determined by the values chosen for the Start and Stop Angles. If
the Start Angle is less than the Stop angle the parsing will occur from right to left. If the Start Angle is
greater than the Stop Angle the parsing will occur from left to right.
Edge Detection: The algorithm is designed to find a 'falling edge' within the LiDAR scan where the returns
are suddenly much farther away or disappear. This is not designed to find an interior corner where the
returns would appear closer.
Danfoss | January 2020AQ295075513101en-000101 | 19
Page 20
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Edge Detection Function Block
Outputs
Outputs of the Edge Detection function block are described.
ItemTypeRangeDescription [Unit]
DiagU16——This bus provides diagnostic values
for troubleshooting and information
about the current status of the
sensor.
StatusU16——Bitwise code where multiple items
can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is
out of range.
FaultU16——Reports the fault status of the
function block.
Bitwise code where multiple items
can be reported at a time.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
EdgeBUS——The Edge bus contains the updated
information about the location of
the detected edge.
Updated BOOLT/FIndicates that new information is
available from the block.
T: Edge detected.
F: Edge not detected.
Distance U321-4294967295Distance from the edge in radial
coordinates.
[mm]
Angle S16-18000-18000Angle to the edge in radial
coordinates.
[0.01 deg]
Edge_X S32-2147483648-2147483647X coordinate of the edge relative to
the scanner.
[mm]
Edge_Y S32-2147483648-2147483647Y coordinate of the edge relative to
Danfoss | January 2020AQ295075513101en-000101 | 21
U16——Bitwise code where multiple items can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is out of range.
Page 22
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Extract Ring Function Block
ItemTypeRangeDescription [Unit]
Fault
Scan
Updated
Num_Points
U16——Bitwise code where multiple items can be reported at a time.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
BUS——The output data of the read from the Data Locker.
BOOL——True if new data was processed.
U160-2048Number of points in the row.
X (Array[
2048]S
32)
Y (Array[
2048]S
32)
Z (Array[
2048]S
32)
I (Array[
2048]U
16)
-2147483648-2147483647X coordinate of point in Cartesian coordinates.
[mm]
-2147483648-2147483647Y coordinate of point in Cartesian coordinates.
[mm]
-2147483648-2147483647Z coordinate of point in Cartesian coordinates.
[mm]
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Feature Localization Function Block
The Feature Localization function block is used to update the location of the machine within a known
environment. This block compares the Map of known features with Detected features and estimates
machine position based on the result of comparison.
Input data types must exactly match the indicated type to successfully compile.
The checkpoints page includes advanced checkpoints for each input, output, and internal signal. These
require a unique name space to prevent multiple checkpoints with the same name. See the topic ChangeNamespace Value for more information about creating unique namespaces.
Inputs
Inputs to the Feature Localization function block are described.
ItemTypeRangeDescription [Unit]
Map_FeaturesBUS——These features correspond to
detectable objects in the
environment. They must be in a Map
or global reference frame.
(corresponding to the origin for the
Position).
X (Array[100]S32)-2147483648-2147483647X components of the center of
detectable features.
[mm]
Y (Array[100]S32)-2147483648-2147483647Y components of the center of
detectable features.
[mm]
Num_Features U160-100Number of features in the arrays.
Detected_FeaturesBUS——These are the features detected by
other blocks which should
correspond to Map_Features. They
must be in the machine reference
frame.
Updated
BOOLT/FTRUE when there is new X, Y, and
features to be used for localization.
T: The data is new and valid.
F: The data is not valid, do not use.
Danfoss | January 2020AQ295075513101en-000101 | 25
Page 26
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Obstacle Avoidance Function Block
The Obstacle_Avoidance function block simplifies the evaluation of an incoming LiDAR scan and
determines the best option.
The LiDAR scanner is typically placed at the front of a machine, but the Sensor_Offset parameters allow
for a variety of sensor placement. The function block places 15 zones radially within the defined
Max_Angle. This primary output is the Best_Angle, which is calculated based on the selected Mode. You
can use the raw zone scores for a more customized interpretation.
Input data types must exactly match the indicated type to successfully compile.
This is a safety block.
The checkpoints page includes advanced checkpoints for each input, output, and internal signal. These
require a unique name space to prevent multiple checkpoints with the same name.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Obstacle Avoidance Function Block
Inputs
Inputs to the Obstacle Avoidance function block are described.
ItemTypeRangeDescription [Unit]
ModeU8——Selection of Best Angle calculation.
0: Raw, no additional processing of zone scores, Best_Angle =
lowest score, a tie goes to the Target_Angle.
1: Weighted, scaling and addition factors are applied to each zone
based on how far away they are from the Target_Angle.
2: Centered, designed for following a corridor and weighted to find
the most open space in the middle.
3: Nearest Acceptable, next closest angle to Target_Angle that
scores below the threshold unless Target_Angle is below the
threshold.
Target_AngleS16-18000-18000Desired angle for machine to drive.
[0.01 deg]
Locker_IDU8-1-99Location where LiDAR scan data is stored.
ChkptBOOLT/FEnables Advanced Checkpoints with Namespace for each Diag
signal.
T: Include checkpoints when compiled.
F: Do not include checkpoints when compiled.
Parameters
The following table describes parameters for the Obstacle Avoidance function block.
ItemTypeRangeDescription [Unit]
ParaBUS——Adjust configuration values here, or replace them with signals routed
from the application through the Para bus.
Max_Angle U160-36000Magnitude of max left to max right angle.
Default: 3000
[0.01 deg]
Width U161-20000The width of a zone.
Default: 1000
[mm]
Threshold U161-10000Higher limit of points for a zone to be invalid. Used only in mode 3.
Default: 10
[number of points]
Weight_Scale S16-25000-25000Scaling factor that is used to multiple the score of the zone. A
negative value steers toward the highest scoring zone.
Default: 1
[0.001]
Weight_Add U160-1000Factor (Integer) that is adding to each zone after scaling factor is
applied.
Default: 0
Min_Distance U160-65000Distance between the steering point of the machine and the start of
the zone.
Default: 0
[mm]
Max_Distance U161000-65000Distance between the steering point of the machine and the end of
Danfoss | January 2020AQ295075513101en-000101 | 27
Page 28
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Obstacle Avoidance Function Block
ItemTypeRangeDescription [Unit]
Min_Height S32-50000-50000Minimum height of the zone with respect to the position of the
LiDAR scanner.
Default: 0
[mm]
Max_Height S32-50000-50000Maximum height of the zone with respect to the position of the
LiDAR scanner.
Default: 1000
[mm]
Sensor_Offset_[X,Y,Z] S32——Offset of the sensor from the desired sensor frame.
Default: 0
[mm]
Sensor_Orientation S16-18000-18000Orientation of the LiDAR sensor from the desired sensor frame.
Default: 0
[0.01 deg]
Outputs
Outputs of the Obstacle Avoidance function block are described.
ItemTypeRangeDescription [Unit]
DiagBUS——This bus provides diagnostic values for troubleshooting and
information about the current status of the sensor.
StatusU16——The status of the function block.
Bitwise code where multiple items can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is out of range.
FaultU16——Bitwise code where multiple items can be reported at a time.
*Non-Standard
0x0000: No fault.
0x0001: Target_Angle or Mode value too low.
0x0002: Tarteg_Angle or Mode value too high.
0x0004: Locker_ID is invalid.
0x0008: Min_Distance is greater than Max_Distance.
0x0010: Min_Height is greater than Max_Height.
OutputsBUS——This bus provides zone scores and resulting angle information.
Updated BOOLT/FNew information is available from the block namespace for each
Diag signal.
T: New data is available.
F: New data is not available.
Scores
Total_Valid_Points
Zone_Angles
Best_Score
Best_Angle
(Array[
15]U32
)
U320-4294967295Number of valid LiDAR scan points used in the analysis.
(Array[
15]S16)
U320-4294967295Least points count in a single zone out of all the 15 zones.
S16-32768-32767Angle of the zone with the best score.
0-4294967295Reports the number of points in each zone from the LiDar scan data.
[Count]
[Count]
-32768-32767Array of the calculated orientation of each zone.
[Count]
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Obstacle Detection Function Block
The Obstacle_Detection function block analyzes the incoming LiDAR scan and evaluates each zone
created to determine the number of points that fall inside each zone.
LiDAR
The output is the number of obstacle points falling within the cuboid zone using point cloud data from a
sensor. A point cloud is a set of data points in space where each point is defined by its (X,Y,Z) coordinate.
This function block is extendable into Obstacle Avoidance, Projected Path or Safety Stop function blocks
by processing output data.
Use cases for this include all machines, indoor and outdoor navigation, and safety stop blocks.
Input data types must exactly match the indicated type to successfully compile.
The primary input to the Obstacle Detection block is the LiDAR scanner interface.
The internal algorithm takes into consideration the user-specified parameters and creates a cuboid zone.
Parameters include, X, Y, Z, Yaw, Length, Width, Min-Height, Max-Height. Then all the points in the point
cloud are checked if they are within the cuboid or not.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Origin Function Block
The Origin function block stores UTM coordinates of the machine's starting point, and uses this data to
calculate the relative position of the autonomous machine as it operates.
The origin can be set on startup. It can also be updated during application runtime, which can be useful
for repetitive algorithms, such as path coverage.
It is recommended to delay setting the origin location until valid position data (GNSS location) has
resolved to an accurate position.
Inputs
Inputs to the Origin function block are described.
ItemTypeRangeDescription [Unit]
SetOriginBOOLT/FWhen true, the function block stores the current origin in the Para or UTM bus depending on the
CustomOrigin.
T: Update the origin being stored.
F: Origin being stored stays the same.
UTMBUS——GNSS data using the UTM coordinate system.
UtmX U320-10⁹The UtmX value given from the conversion using the WGS84 ellipsoid model.
[mm]
UtmY U640-10¹⁰A custom UtmY value using the WGS84 ellipsoid model.
[mm]
UtmY_Upper U32——The 32 most significant bits of UtmY as stored in a U64 value.
UtmY_Lower U32——The 32 least significant bits of UtmY as stored in a U64 value.
Band U80, 67-72, 74-78,
80-88
Zone U81-60The zone that the UtmX and UtmY values are in.
The band that the UtmX and UtmY values are in.
ASCII values represent the letter of the band.
Danfoss | January 2020AQ295075513101en-000101 | 35
Page 36
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Path Follower Function Block
The Path_Follower function block allows a machine to follow a path made up of a series of Bézier curves.
Paths can be loaded as a fixed path when the machine starts or can be added dynamically. The function
block outputs tracking errors relative to the path as well as a curvature, which brings the machine onto
the path within the look-ahead distance.
Input data types must exactly match the indicated type to successfully compile.
The current path is lost if the ECU loses power unexpectedly or is power cycled while following a path. To
recover from an ECU power loss, see the topic Restart or Resume Path After ECU Power Loss.
Danfoss | January 2020AQ295075513101en-000101 | 37
Page 38
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Path Follower Function Block
ItemTypeRangeDescription [Unit]
Reverse BOOLT/FSpecifies the order that waypoints are added to the path.
T: The waypoints are added to the path in reverse order. 180
degrees are added to the bearing. Backward and forward radii
are swapped.
F: The waypoints are added based on their current order in the
array.
Search_Path BOOLT/FSpecifies if the path is searched.
T: Searches the entire path to find the nearest point to the
machine to navigate toward. If Tracking_Error is less than
Lookahead_Dist, search is not performed.
F: Does not search path. Follows the path from the beginning
to the end.
Loop_Path
Target_Spacing U16
ChkptBOOL——Enables advanced checkpoints with namespace for each Diag
BOOLT/FSet TRUE to loop the path. This is only updated during the first
loop or when Reset is TRUE.
Cannot have more than 50 waypoints.
T: The path keeps looping.
F: The path is only done once.
1-65535
Reset BOOLT/FClears the current path and stores the settings for the new
Accuracy of the interpolation of the path segments.
Smaller values increase the accuracy but also increase the
processing time.
This is only updated during the first loop or when Reset is
TRUE.
Segments are split into at least 4 steps, and at most 1000 steps,
even if the value of Target_Spacing specifies otherwise.
[mm]
path.
T: Clears the path and stores the value for Loop_Path and
Target_Spacing for the next path.
F: Does not clear the path.
signal.
T: Include checkpoints when compiled.
F: Do not include checkpoints when compiled.
Parameters
The Path Follower function block's look-ahead distance is set by para bus input signal.
ItemTypeRangeDescription [Unit]
ParaBUS——Input for external parameter values.
Adjust configuration values here, or replace them with signals routed from the application through
the Para bus.
A parameter is used to specify the distance for the an optimal lookahead point on the driving
segment to drive toward.
See the Function Block Parameter Values topic for more information.
Lookahead_Dist U16
1-65535The distance ahead on the path the machine is aiming for. Shorter distances are more accurate but
the system is less stable.
Lookahead_Dist is greater than Target_Spacing. In typical operations, Lookahead_Dist can be at
least double Target_Spacing.
[mm]
Default: 3000
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Path Follower Function Block
Outputs
Outputs of the Path Follower function block are described.
ItemTypeRangeDescription [Unit]
DiagBUS——
StatusU16——Bitwise code where multiple items can be reported at a time.
FaultU16——Bitwise code where multiple items can be reported at a time.
OutputBUS————
Cmd_Curv S32-2147483648-2147483647The command of curvature needed to get to the lookahead
Path_Yaw S32-18000-18000The bearing of the path at its nearest point to the machine.
Tracking_Error S32-2147483648-2147483647The orthogonal distance from the current position and the
Angle_Error S32-2147483648-2147483647The difference between the machine's bearing and the bearing of
NumOfWaypointsAdded U80-50The number of waypoints successfully added to the path during
Available_Waypoints U80-50The number of waypoints that can still be added to the path.
Current_Waypoint U320-3276750The waypoint that the machine most recently passed.
Loop_Count U160-65535The number of completed path loops.
Path_Complete BOOLT/FTRUE when the current non-looping path is complete.
Provides diagnostic values for troubleshooting.
*Non-standard
0x0000: Status OK.
0x0001: The path is empty. Less than two points are added to the
path.
0x0002: It took too long to find the lookahead point. Target
spacing is too small or the machine is going too fast.
0x0004: It took too long to find the nearest point to the machine.
Target spacing is too small or the machine is moving too fast.
0x0008: Path is too small or lookahead distance is too big.
0x0010: At least one parameter is out of range.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
point.
Positive values are left curves.
Negative values are right curves.
[0.01/km]
[0.01 degree]
nearest point on the path.
Negative values mean the machine is to the left of the path.
Positive values mean the machine is to the right of the path.
[mm]
the nearest point on the path.
Negative values mean you are turned too far to the left.
Positive values mean you are turned too far to the right.
[0.01 degree]
this loop.
For non-looping paths, this value increases as waypoints prior to
the Current_Waypoint are consumed and are no longer used for
path following or searching.
For looping paths this value stays between 0 and (49 minus
Available_Waypoints) that can still be added to the path.
For non-looping paths this value keeps increasing as the machine
passes waypoints.
This is always 0 for non-looping paths.
This never goes TRUE for looping paths.
T: The current path is complete.
F: The current path is not complete.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Position Filter Function Block
The Position Filter function block is designed to produce a single position estimate from the position,
velocity, and acceleration inputs. The filter then fuses these different sensor measurements together to
create an improved localization estimate.
The Position Filter function block can handle input data coming in at different rates and varying levels of
sensor accuracy. Each sensor input includes a Std_Dev (standard deviation) signal that describes the
amount of potential error in a given reading. This helps the function block appropriately filter the
incoming signals based on this level of confidence.
The function block receives sensor data from a Global Navigation Satellite System (GNSS) unit, an Inertial
Measurement Unit (IMU) and Yaw Rate, then uses Position Filtering to determine improved location
information of the machine.
Inputs
Inputs to the Position Filter function block are described.
ItemTypeRangeDescription [Unit]
ResetBOOLT/FCompletely resets all values stored in the function block.
T: Reset all values in the function block.
F: Do not reset values.
Pos_XY
X_Std_Dev
Y_Std_Dev
Updated BOOLT/FTRUE when there is new X and Y values.
Vel_X
BUS——This bus contains X (Easting), Y (Northing) and its standard
deviations.
X
S32-2147483648-2147483647Current X position of the machine location.
[mm]
Y
S32-2147483648-2147483647Current Y position of the machine location.
[mm]
U321-4294967295Standard deviation of X.
[mm]
U321-4294967295Standard deviation of Y.
[mm]
Use the new X and Y values.
Do not use the new X and Y values.
BUS——This bus contains velocity data and the standard deviation for it.
Danfoss | January 2020AQ295075513101en-000101 | 43
Page 44
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Post Detection Function Block
The Post Detection function block is used to search in incoming LiDAR scan for features that match the
profile of a rectangular post and output the locations and properties of up to 100 matching features
Input data types must exactly match the indicated type to successfully compile.
LiDAR scan is analyzed for features that look like a rectangular post. Resulting list of features is provided.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Projected Path Function Block
ItemTypeRangeDescription [Unit]
Max_Height S32-50000-50000Maximum height of the zone with
respect to the position of the LiDAR
scanner.
Default: 1000
[mm]
Sensor_Orientation
Sensor_Offset_[X,Y,Z]
Outputs
S16-18000-18000Offset of the sensor orientation
relative to the machine frame.
Default: 0
[0.01 deg]
S32-2147483648-2147483647Offset of the sensor from the
steering point of the machine.
Default: [0,0,0]
[mm]
Outputs of the Projected Path function block are described.
ItemTypeRangeDescription [Unit]
DiagBUS——This bus provides diagnostic values
for troubleshooting. In addition, all
inputs, parameters, and output
signals are contained inside this bus.
StatusU16——Bitwise code where multiple items
can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is
out of range.
FaultU16——Bitwise code where multiple items
can be reported at a time.
*Non-Standard
0x0000: No fault.
0x0001: Curvature value too low.
0x0002: Curvature value too high.
0x0004: Locker_ID is invalid.
0x0008: Min_Distance is greater
than Max_Distance.
0x00010: Min_Height is greater than
Max_Height.
Output
Updated BOOLT/FNew information is available from
Total_Valid_Points
BUS——The Output bus contains the score
information for each zone being
evaluated.
the block.
T: New data is available.
F: New data is not available.
Scores
(Array[15]U32)0-4294967295The primary output of the block and
used to report how many points
from the LiDAR scan were counted
within each given zone.
U320-4294967295Number of valid LiDAR scan points
that were used in the analysis. This
can be used to determine a ration or
to identify an unusually low number
of points from the scanner.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Reflector Detection Function Block
The Reflector Detection function block searches an incoming LiDAR scan for features that meet the
criteria of a reflector and outputs the center locations and properties of all reflectors.
The Reflector_Detection function block is designed to work with either 2D or 3D LiDAR. This function
block processes point cloud data from a LiDAR sensor and outputs location information of all the
reflectors of different shapes for example, rectangles, squares and circles identified in a scan.
Points from a point cloud are filtered based on their locations and reflective property (intensity) and are
then grouped to form valid point groups that represent individual reflectors. Locations of reflectors are
defined to be at the centers of valid point groups in each scan. This function block enables the
Feature_Localization function block to navigate machines in an environment where reflectors are
present as navigation cues.
Reflectors are identified from the intensity of a reflected ray of light. Then the different tolerances are
used to separate them from each other and for validation purposes.
Input data types must exactly match the indicated type to successfully compile.
The checkpoints page includes advanced checkpoints for each input, output, and internal signal. These
require a unique name space to prevent multiple checkpoints with the same name.
The following table describes the limitations of the function block.
Danfoss | January 2020AQ295075513101en-000101 | 51
Page 52
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Reflector Detection Function Block
RiskSeverityMitigation
No incoming LiDAR scan.Mild, detectable0x8001: Input value too low.
Obstructed LiDAR scan.Moderate, hard to detect.None
No reflector found, noisy data.Mild, detectable.Output: Num_Features, number of
reflectors found.
Inputs
Inputs to the Reflector Detection function block are described.
ItemTypeRangeDescription [Unit]
Locker_IDS8-1-99Location where LiDAR scan data is
stored.
ChkptBOOLT/FEnables advanced checkpoints with
namespace for each Diag signal.
T: Include checkpoints when
compiled.
F: Do not include checkpoints when
compiled.
Parameters
Parameters to the Reflector Detection function block are described.
ItemTypeRangeDescription [Unit]
ParaBUS——Adjust configuration values here, or
replace them with signals routed
from the application through the
Para bus.
Intensity_Threshold U161-10000Threshold of intensity for feature
detection.
Default: 5000
[0.01%]
Min_Num_Points U161-500Minimum number of points of the
feature to consider valid.
Default: 10
Distance_Tolerance U161-1000Allowed polar distance between
point and the average distance to
consider valid.
Default: 50
[mm]
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Reflector Detection Function Block
Outputs
Outputs of the Reflector Detection function block are described.
ItemTypeRangeDescription [Unit]
DiagBUS——This bus provides diagnostic values
for troubleshooting and information
about the current status of the
sensor.
StatusU16——The status of the function block.
Bitwise code where multiple items
can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is
out of range.
FaultU16——The fault status of the function
block.
Bitwise code where multiple items
can be reported at a time.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
FeaturesBUS——This BUS contains information about
the matching features that were
identified in the LiDAR scan. This
includes X, Y, Z coordinates, width of
feature and standard deviation in
Cartesian coordinates.
Updated BOOLT/FT: New data is available.
F: New data is not available.
Num_Features U160-100Number of features found.
X (Array[100]S32)-2147483648-2147483647X components of center of features
found.
[mm]
Y (Array[100]S32)-2147483648-2147483647Y components of center of features
found.
[mm]
Z (Array[100]S32)-2147483648-2147483647Z components of center of features
found.
[mm]
Std_Dev_X (Array[100]U16)0-65535X Standard deviation of features
found.
[mm]
Std_Dev_Y (Array[100]U16)0-65535Y Standard deviation of features
found.
[mm]
Std_Dev_Z (Array[100]U16)0-65535Z Standard deviation of features
found.
[mm]
Num_Points (Array[100]U32)0-4294967295Number of valid points found in
Danfoss | January 2020AQ295075513101en-000101 | 53
Page 54
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Relative Position Function Block
The Relative Position function block calculates the relative position between the machine's current
position and the machine's origin position.
Input data types must exactly match the indicated type to successfully compile.
The Checkpoints page includes advanced checkpoints for each input, output and internal signal. These
require a unique namespace to prevent multiple checkpoints with the same name.
The Updated variable in the Origin bus and in the UTM bus must both go TRUE at least once before the
outputs to this function block are updated.
Inputs
Inputs to the Relative Position function block are described.
ItemTypeRangeDescription [Unit]
Std_Dev
X_Std_Dev
Y_Std_Dev
OriginBUS——The UTM data for the machine's origin point.
UtmY_Upper U32——The 32 most significant bits of UtmY as stored in a U64 value.
UtmY_Lower U32——The 32 least significant bits of UtmY as stored in a U64 value.
Updated BOOLT/FTRUE when there is new position data ready. Update the outputs.
UTMBUS——UTM data for the current position.
BUS——Contains UTM data for the origin.
U321-4294967295The standard deviation of X.
[mm]
U321-4294967295The standard deviation of Y.
[mm]
UtmX U320-10⁹The UtmX value of the origin.
[mm]
UtmY U640-10¹⁰The UtmY value of the origin.
[mm]
Zone U81-60The zone that the UtmX and UtmY values are in.
Band U867-72, 74-78, 80-88The band that the UtmX and UtmY values are in.
ASCII values represent the letter of the band.
T: Calculate relative position with the new data. Update outputs.
F: Do not calculate new position. Do not update outputs.
UtmX U320-10⁹The UtmX value of the machine's current position.
[mm]
UtmY U640-10¹⁰The UtmY value of the machine's current position.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Relative Position Function Block
ItemTypeRangeDescription [Unit]
UtmY_Upper U32——The 32 most significant bits of UtmY as stored in a U64 value.
UtmY_Lower U32——The 32 least significant bits of UtmY as stored in a U64 value.
Zone U81-60The zone that the UtmX and UtmY values are in.
Band U867-72, 74-78, 80-88The band that the UtmX and UtmY values are in.
Updated BOOLT/FTRUE when there is new data ready and the outputs are updated.
T: Calculate the relative position of the machine. Update the outputs.
F: Do not calculate the relative position. Do not update outputs.
ChkptBOOLT/FEnables advanced checkpoints with namespace for each Diag signal.
T: Include checkpoints when compiled.
F: Do not include checkpoints when compiled.
Outputs
Outputs of the Relative Pos function block are described.
ItemTypeRangeDescription [Unit]
DiagBUS——
FaultU16——Bitwise code where multiple items can be reported at a time.
ValidRelUtmBOOLT/FWhen TRUE, the zones from the Origin and UTM buses match. Both update
Pos_XY
Updated BOOLT/FTRUE when new data is available from the conversion.
X_Std_Dev
Y_Std_Dev
BUS——Data about the relative position calculated in the function block and its
X
S32-2147483648-2147483647The relative X distance between the origin and the current position.
Y
S32-2147483648-2147483647The relative Y distance between the origin and the current position.
U321-4294967295The standard deviation of X.
U321-4294967295The standard deviation of Y.
Provides diagnostic values for troubleshooting.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
0x8010: Input value is out of range.
flags have been TRUE at least once. There are no faults.
When FALSE, UtmX and UtmY are both set to 0.
T: The zones from the Origin and UTM match.
F: The zones do not match or the origin is invalid and outputs are 0.
standard deviation.
[mm]
[mm]
T: New data is available.
F: New data is not available.
Danfoss | January 2020AQ295075513101en-000101 | 55
Page 56
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Two Point Planner Function Block
The Two Point Planner function block simplifies the creation of path curves by constraining the machine
to fixed radius curves.
Instead of requiring you to input a full path curve, the Two Point Planner function block only requires a
starting and ending position as well as the desired turning radius. The Two Point Planner function block
then calculates the shortest path between these two points by evaluating the six possible turning
combinations. The output of the Two Point Planner function block is a complete path between the two
points which is directly compatible with the Path Follower function block.
The following table describes risks and mitigations when using the function block.
RiskMitigation
Obstacle CollisionUse this function block with Obstacle Avoidance.
Tire DamageThis function block plans the same path for the same
points every time, which is the shortest path between
those points.
Add more waypoints.
Sharp TurnsThis function block is developed for all machines. Input
the correct turning radius to avoid sharp turns and
provide the appropriate propel speeds for the turns
involved.
Inputs
The following table describes inputs to the Two Point Planner function block.
ItemTypeRangeDescription [Unit]
StartBUS——Bus containing the machine's start
location and driving direction.
X S32-2000000000-2000000000X coordinate of the starting position.
[mm]
Y S32-2000000000-2000000000Y coordinate of the starting position.
Danfoss | January 2020AQ295075513101en-000101 | 57
1-65535
Sets the turning radius of the
machine.
Default: 2000
[mm]
Page 58
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Two Point Planner Function Block
Outputs
The following table describes outputs of the Two Point Planner function block.
ItemTypeRangeDescription [Unit]
DiagBUS——Bus containing diagnostic data for
the function block.
StatusU16——The status of the function block.
0x0000: Status OK.
0x8008: At least one parameter is
out of range or in an incorrect order.
FaultU16——Bitwise code where multiple items
can be reported at a time. *NonStandard
0x0000: No fault.
0x0001: Input value too low.
0x0002: Input value too high.
0x0008: NumOfWaypoints_Out
overflows.
Path_Out
Waypoint_X
Waypoint_Y
Bearing
Forward_Radius
Backward_Radius
NumOfWaypoints
BUS——A path with the shortest Dubins
curve appended.
(ARRAY[50]S32)-2147483648-2147483647X position of the waypoint.
[mm]
(ARRAY[50]S32)-2147483648-2147483647Y position of the waypoint.
[mm]
(ARRAY[50]S32)-72000-72000Angle at which the machine goes
through the waypoint.
[0.01 degree]
(ARRAY[50]S32)0-4294967295Distance from the waypoint to the
forward control point Smaller radii
yield sharper turns.
[mm]
(ARRAY[50]S32)0-4294967295Distance from the waypoint to the
backward control point. Smaller
radii yield sharper turns.
[mm]
(ARRAY[50]S32)0-50The desired number of waypoints to
Danfoss | January 2020AQ295075513101en-000101 | 59
Page 60
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
UTM Conv Function Block
ItemTypeRangeDescription [Unit]
UTMBUS——Latitude and longitude data converted into Cartesian units based on the Universal
Transverse Mercator projection.
UtmX U320-10⁹The UtmX value given from the conversion using the WGS84 ellipsoid model.
[mm]
UtmY U640-10¹⁰The UtmY value given from the conversion using the WGS84 ellipsoid model.
[mm]
UtmY_Upper U32——The 32 most significant bits of UtmY as stored in a U64 value.
UtmY_Lower U32——The 32 least significant bits of UtmY as stored in a U64 value.
Band U80, 67-72, 74-78,
80-88
Zone U81-60The zone that the UtmX and UtmY values are in.
Updated BOOLT/FTRUE When new data is available from the conversion.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
UTM Conv Zone Function Block
The UTM Conv Zone function block receives the machine's latitude and longitude information and
converts this information into UTM coordinates.
The conversion outputs:
•
UtmX
•
UtmY
•
UTM zone
•
UTM band
Unlike the UTM Conv function block, the UTM Conv Zone function block provides the ability to
manually input zone information. This is useful if the autonomous machine is operating close to the
boundary of two different zones.
It is also used with the Origin and Relative Pos function block to ensure that the machine position is
calculated in the same UTM Zone as the origin.
The function block does not support polar (UTM) zones A, B, Y or Z.
Inputs
Inputs to the UTM Conv Zone function block are described.
ItemTypeRangeDescription [Unit]
ZoneU81-60The UTM zone into which the latitude and longitude values are
converted.
When a Zone value is provided for an Input, the value is the Input
zone.
Danfoss | January 2020AQ295075513101en-000101 | 61
Page 62
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
UTM Conv Zone Function Block
Outputs
Outputs of the UTM Conv Zone function block are described.
ItemTypeRangeDescription [Unit]
DiagBUS——
FaultU16——Bitwise code where multiple items can be reported at a time.
UTM
UtmY_Upper U320-10¹⁰The 32 most significant bits of UtmY as stored in a U64 value.
UtmY_Lower U320-10¹⁰The 32 least significant bits of UtmY as stored in a U64 value.
BandU80, 67-72, 74-78,
ZoneU81-60The UTM zone that the UtmX and UtmY values are in.
UpdatedBOOLT/FTRUE when new data is available from the conversion.
BUS——The output bus contains the results of the conversion.
UtmX U320-10⁹The UtmX value given from the conversion using the WGS84 ellipsoid model.
UtmY U640-10¹⁰The UtmY value given from the conversion using the WGS84 ellipsoid model.
80-88
Provides diagnostic values for troubleshooting.
0x0000: No fault.
0x0001: Input value too low.
0x0002: Input value too high.
0x0004: Latitude is in the UPS Zone range.
0x0008: Out of conversion range.
[mm]
[mm]
The latitude band where the UtmX and UtmY values are. Values are represented in ASCII,
not letters.
0: (NULL) The latitude value is outside of the conversion limits.
This is also the same zone specified on the input.
T: New data is available.
F: New data is not available.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Wall Detection Function Block
The Wall Detection function block is designed to parse a LiDAR scan, fit a line to the scan looking for a
continuous surface, then report the angle and distance information.
Inputs
This can be used to find any generic smooth feature, such as a wall. This function block is able to limit the
range of the scan to perform a better fit and provide more accurate results.
Input data types must exactly match the indicated type to successfully compile.
Inputs to the Wall Detection function block are described.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Wall Detection Function Block
ItemTypeRangeDescription [Unit]
Max_Distance
Outputs
ItemTypeRangeDescription [Unit]
StatusU16——Bitwise code where multiple items
FaultU16——Bitwise code where multiple items
DiagBUS——This bus provides diagnostic values
Wall
Updated BOOLT/FNew information is available from
Distance
Std_Dev
U321-100000This parameter determines how far
away a data point can be and still be
used in the least-squares fit
calculation. This can be used to
ensure that the function block is not
fitting features that are too far away.
Default: 10000
[mm]
Ring
U160-65535The 3D LiDAR which ring, or
horizontal row of the scan to use.
For 2D LiDAR set to zero.
Default: 0
0 is the bottom ring.
Outputs of the Wall Detection function block are described.
can be reported at a time.
0x0000: Status OK.
0x8008: At least one parameter is
out of range.
can be reported at a time.
0x0000: No fault.
0x8001: Input value too low.
0x8002: Input value too high.
for troubleshooting and information
about the current status of the
sensor.
BUS——The Wall bus contains the updated
information about the location of
the detected wall.
the block.
T: New data is available.
F: New data is not available.
U320-4294967295Distance to the edge in radial
coordinates.
[mm]
Angle
S16-32768-32767Angle to the edge in radial
coordinates.
[0.01 deg]
U160-65535The standard deviation of the line
fit. A lower value indicates a better
fit, a higher value indicates a poor
fit.
[mm]
Danfoss | January 2020AQ295075513101en-000101 | 65
Page 66
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Yaw Estimate Function Block
The Yaw Estimate function block is designed to estimate the machine's current yaw value by calculating
the angle of the line between a previous position and the current position of the machine when it travels
a certain distance.
Use this function block when you can not yet yaw from an IMU or directly from your GNSS unit.
Input data types must exactly match the indicated type to successfully compile.
The checkpoints page includes advanced checkpoints for each input, output, and internal signal. These
require a unique name space to prevent multiple checkpoints with the same name.
The Yaw Estimation function block can be used to calculate angle of the machine with respect to X axis,
traveling in XY plane. Whenever machine displaces from previous position by set distance, yaw is
estimated using a trigonometric function and machine position is updated.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
The function blocks in this library come with pre-made service screens that you can customize when
building your Service Tool application.
The pre-made screens simplify the task of creating Service Tool applications. You can use the screens as
is. Or, you can choose screen components to place in your application.
Refer to the PLUS+1® GUIDE Service Tool Design Manual (Danfoss document number L1320837) for more
information on how to create Service Tool screens.
Ackermann Yaw Rate Service Tool Start Screen
The Ackermann Yaw Rate function block converts machine speed and steering angle into a velocity and
yaw rate, providing wheel odometry information to the Position Filter function block.
ItemDescription
Yaw_RateSpeed and steering angle converted to yaw rate.
FaultReports the fault status of the function block.
Danfoss | January 2020AQ295075513101en-000101 | 73
Page 74
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
Edge Detection Service Tool Screen
Use the Edge Detection service tool screen to determine how the Edge Detection function block
analyzes the incoming LiDAR scan to discover a continuous surface, followed by an edge.
ItemDescription
Distance to an EdgeThe distance to a detected edge.
Danfoss | January 2020AQ295075513101en-000101 | 75
Page 76
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
ItemDescription
Status Reports the status of the function block.
Bitwise code where multiple items can be reported at a
time.
0x0000: Status OK.
0x8008: At least one parameter is out of range.
0x8004: Locker_ID is invalid.
Fault Reports the fault status of the function block.
Bitwise code where multiple items can be reported at a
time.
0x0000: No fault.
Extract Ring Service Tool Screen
Use the Extract Ring service tool screen to determine
ItemDescription
Locker_IDLocation data from the Data Locker.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
Feature Localization Service Tool Screen
Use the Feature Localization service tool screen to determine how the function block updates the
machine's position, which provides feedback to the Position Filter function block.
ItemDescription
Successful matchingIndicates that the machine position has been updated
and sufficient features have been matched. If false, the
machine is lost.
Danfoss | January 2020AQ295075513101en-000101 | 85
Page 86
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
Inputs
The following table displays items in the Obstacle Avoidance Inputs service tool screen.
ItemDescription
Parameters
Max_Angle Magnitude of max left to max right angle.
Width The width of a zone.
Threshold Higher limit of points for a zone to be invalid. Used only
in mode 3.
Weight_Scale Scaling factor that is used to multiple the score of the
zone. A negative value steers toward the highest scoring
zone.
Weight_Add Factor (Integer) that is adding to each zone after scaling
factor is applied.
Min_Distance Distance between the steering point of the machine and
the start of the zone.
Max_Distance Distance between the steering point of the machine and
the end of the zone.
Min_Height Minimum height of the zone with respect to the position
of the LiDAR scanner.
Max_Height Maximum height of the zone with respect to the position
of the LiDAR scanner.
Sensor_Offset_X Offset of the sensor from the desired sensor frame.
Sensor_Offset_Y Offset of the sensor from the desired sensor frame.
Sensor_Offset_Z Offset of the sensor from the desired sensor frame.
Sensor_Orientation Orientation of the LiDAR sensor from the desired sensor
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
ItemDescription
Locker ID Location where LiDAR scan data is stored.
Mode
Selection of Best Angle calculation.
0: Raw, no additional processing of zone scores,
Best_Angle = lowest score, a tie goes to the
Target_Angle.
1: Weighted, scaling and addition factors are applied to
each zone based on how far away they are from the
Target_Angle.
2: Centered, designed for following a corridor and
weighted to find the most open space in the middle.
3: Nearest Acceptable, next closest angle to Target_Angle
that scores below the threshold unless Target_Angle is
below the threshold.
Internals
The following table describes items in the Obstacle Avoidance Internals service tool screen.
ItemDescription
ZonesDisplays information for each zone.
Signals ——
Best_Angle_Raw In raw mode, angle of the zone with the best input score.
Best_Angle_Weighted In weighted mode, angle of the zone with the best input
score.
Best_Angle_Centered In centered mode, angle of the zone with the best input
score.
Best_Angle_Nearest In nearest acceptable mode, angle of the zone with the
best input score.
Locker_ID_Invalid Indicates if the locker ID is invalid.
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
ItemDescription
Starting Waypoint
Details of WaypointsX, Y, Z
Control Points Info
The Path Follower Control Points Info screen is described.
The index in the input arrays of the first waypoint to add
this loop.
If StartingWaypont + NumOfWaypoints > 50 then the
index of waypoints is wrapped back to 0.
Intended for use with ring buffers, normally set to 0.
Danfoss | January 2020AQ295075513101en-000101 | 99
TRUE when there is new data.
Yaw The angle used to describe the machine's heading using the ENU (East-North-
Up) reference frame.
TRUE when there is new data.
VelX The linear velocity of the machine.
TRUE when there is new data.
AccX Contains acceleration data and the standard deviation for it.
TRUE when there is new data.
The angular velocity of the machine relative to the machine's vertical axis.
TRUE when new data is ready for the Postion Filter.
Reset Clear the current path so a new path can be entered.
X
The filtered X value out of the function block.
Y
The filtered Y value out of the function block.
Yaw The filtered Yaw value out of the function block using the ENU convention.
Page 100
User Manual
PLUS+1® Function Block Library—Autonomous Control Function Blocks
Customizable Service Screens
ItemDescription
Status Bitwise code where multiple items can be reported at a time.
Fault Bitwise code where multiple items can be reported at a time.
Standard Deviation
Use the Position Filter Standard Deviation Service Tool screen to see the standard deviations for the
model and sensor measurements which are used to update the Extended Kalman Filter.
ItemDescription
Inputs
X_Std_Dev
Y_Std_Dev The standard deviation of the filtered Y value.
Yaw_Std_Dev The standard deviation of the filtered Yaw value.
VelX_Std_Dev The standard deviation of VelX.
AccX_Std_Dev The standard deviation of AccX.
Yaw_Rate_Std_Dev The standard deviation of Yaw_Rate.
Outputs
Rel_X_Std_Dev The standard deviation of the filtered Rel_UtmX value.
Rel_Y_Std_Dev The standard deviation of the filtered Rel_UtmY value.
Yaw_Std_Dev The standard deviation of the filtered Yaw value.