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
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
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
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.
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
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
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.