The jaiabot_mission_repeater
is a testing tool designed to enable repeatable data collection runs. It was initially developed to perform low level testing of rudder performance using scripted LowControl commands.
It can easily be extended to script other publications by extending the oneof publication
in MissionRepeater.Script.Step
(in jaiabot/src/bin/mission_repeater/config.proto
) and updating the run_step()
method in mission_repeater.cpp
.
The jaiabot_mission_repeater
is designed to be run in addition to all the normal applications. It will put the jaiabot_mission_manager
in the Paused::Manual state when executing the script. Any commands sent from the hub (for example, STOP) that change the mission will stop the script execution, ensuring the vehicle is always within operator control.
The jaiabot_mission_manager
waits for the mission to reach Recovery::Transit and then immediately sends a PAUSE command to jaiabot_mission_manager
. Once the Pause::Manual state is reached, the jaiabot_mission_repeater
runs through the publications defined in the configuration under script
. At the end of these steps, it resumes the mission (that is, Recovery).
This means any mission can be used to run with jaiabot_mission_repeater
before the script, and at the end the vehicle recovers normally.
jaiabot_mission_repeater
is not run normally on the bot. To use it, it must be run manually, preferably using screen
so that the loss of wifi connectivity does not hang the process:
The jaiabot_mission_repeater
publishes the values in the script (oneof publication
) as well as the start and end of each script step to groups::script_step_start
and groups::script_step_end
, respectively. This is useful for log analysis so you can know when each step of the script begins and ends.
The main configuration for jaiabot_mission_repeater
is the script
field:
For running rudder tests, we want to do several things:
jaiabot_mission_repeater
to stop the PID then run a set of constant motor/rudder commands (using jaiabot/config/templates/bot/jaiabot_mission_repeater.pb.cfg.in
).Sequence diagram for this mission:
Example script (for jaiabot/config/templates/bot/jaiabot_mission_repeater.pb.cfg.in
):