Motion Server#
MotionServer offers additional motion related services for testing and recording. Unlike the rest of the navigation components, the Motion Server does not perform a core navigation task but offers complementary functionalities essential for validating and calibrating a navigation system.
Motion Server contains a set of basic motion tests. In each test, the MotionServer sends commands to the robot to perform the pre-configured motion and records both the sent command and the robot response (velocity and pose). This is used to test the motion response on new terrain or calibrate the robot motion model.
Note
The available motion tests include Step tests and Circle test and can be configured by adjusting the MotionServerConfig
MotionServer offers a Motion Recording service as a ROS2 action which allows to record the control commands and the response of the robot during the navigation.
Tip
Launch the MotionServer as a Timed component to launch the basic motion tests automatically, or as a Event component to launch the tests when a trigger is received
Tip
Launch the MotionServer as an ActionServer component and send a request to record your robot’s motion at any time during the navigation.
Tip
The Motion Recording action can also be configured to start based on an external event
Available Run Types#
Timed |
Launches an automated test periodically after start |
Event |
Launches automated testing when a trigger is received on RUN input |
ActionServer |
Offers a MotionRecording ROS action to record motion for location and control commands topics for given recording period |
Inputs:#
Key Name |
Allowed Types |
Number |
Default |
---|---|---|---|
run_tests |
|
1 |
|
command |
|
1 |
|
location |
|
1 |
|
Outputs:#
Key Name |
Allowed Types |
Number |
Default |
---|---|---|---|
robot_command |
|
1 |
|
Note
Topic for Control Command is both in MotionServer inputs and outputs:
The output is used when running automated testing (i.e. sending the commands directly from the MotionServer).
The input is used to purely record motion and control from external sources (example: recording output from Controller).
Different command topics can be configured for the input and the output. For example: to test the DriveManager, the control command from MotionServer output can be sent to the DriveManager, then the DriveManager output can be configured as the MotionServer input for recording.