Robobot new behaviour plan: Difference between revisions
From Rsewiki
No edit summary |
|||
| Line 17: | Line 17: | ||
==== Rename ==== | ==== Rename ==== | ||
Several variables and types need to be renamed. | |||
===== Header file ===== | ===== Header file ===== | ||
* Search and replace 'BPlan20' | * Search and replace 'BPlan20' with 'BPlan100' (three places) | ||
* Rename 'plan20' (last line) to 'plan100' | * Rename 'plan20' (last line) to 'plan100' | ||
| Line 58: | Line 58: | ||
... | ... | ||
==== Include the new plan in the main.cpp function | ==== Main.cpp ==== | ||
Include the new plan in the main.cpp function | |||
The main.cpp gives the execution order, so include the definition and add this new plan to the right place, like: | The main.cpp gives the execution order, so include the definition and add this new plan to the right place, like: | ||
| Line 83: | Line 85: | ||
mixer.setVelocity(0.0); | mixer.setVelocity(0.0); | ||
... | ... | ||
==== Change the plan ==== | |||
Change the BPlan100::run() function as appropriate | Change the BPlan100::run() function as appropriate | ||
| Line 129: | Line 133: | ||
==== Compile ==== | ==== Compile ==== | ||
Then | Then, compile and test. | ||
$ cd ~/svn/robobot/raubase/build | $ cd ~/svn/robobot/raubase/build | ||
Latest revision as of 08:58, 20 January 2024
Back to Robobot
Back to Robobot software description
Create a new behaviour plan
Copy from existing plan
The easy way is to copy an existing plan, e.g.:
$ cd ~/svn/robobot/raubase/src $ cp bplan20.cpp bplan100.cpp $ cp bplan20.h bplan100.h
Then add the new plan to the repository (if a repository is used)
Rename
Several variables and types need to be renamed.
Header file
- Search and replace 'BPlan20' with 'BPlan100' (three places)
- Rename 'plan20' (last line) to 'plan100'
The bplan100.h should be changed to look like this:
class BPlan100
{
public:
~BPlan100();
void setup();
void run();
...
};
extern BPlan100 plan100;
Cpp file
- Change the includefile "bplan20.h" to "bplan100.h"
- Rename 'BPlan20' to 'BPlan100'
- Change all "plan20" to "plan100" to name the new class, make a new section in the configuration file, and change the name of the logfile.
- Change all "Plan20" to "Plan100" - used in comments and debug print.
Parts of the new file could look like this:
...
#include "bplan100.h"
// create class object
BPlan100 plan100;
void BPlan100::setup()
{ // ensure there is default values in ini-file
if (not ini["plan100"].has("log"))
{ // no data yet, so generate some default values
ini["plan100"]["log"] = "true";
ini["plan100"]["run"] = "false";
...
Main.cpp
Include the new plan in the main.cpp function
The main.cpp gives the execution order, so include the definition and add this new plan to the right place, like:
$ cd ~/svn/robobot/raubase/src
$ nano main.cpp
...
#include "bplan21.h"
#include "bplan40.h"
#include "bplan100.h"
int main (int argc, char **argv)
{ // prepare all modules and start data flow
bool setupOK = service.setup(argc, argv);
if (setupOK)
{ // turn on LED on port 16
gpio.setPin(16, 1);
// run the planned missions
plan100.run();
plan20.run();
plan21.run();
plan40.run();
//
mixer.setVelocity(0.0);
...
Change the plan
Change the BPlan100::run() function as appropriate
...
void BPlan100::run()
{
if (not setupDone)
setup();
if (ini["plan100"]["run"] == "false")
return;
//
UTime t("now");
bool finished = false;
bool lost = false;
state = 10;
oldstate = state;
//
toLog("Plan100 started");
//
while (not finished and not lost and not service.stop)
{
switch (state)
{ // next challenge
case 10:
toLog("Reset pose");
...
Add to CMakeLists.txt
Add the new cpp file to the CMakeLists.txt to the list of files, like
$ cd ~/svn/robobot/raubase
$ nano CMakeLists.txt
...
add_executable(raubase
src/bplan20.cpp
src/bplan21.cpp
src/bplan40.cpp
src/bplan100.cpp
src/cedge.cpp
src/cheading.cpp
...
Compile
Then, compile and test.
$ cd ~/svn/robobot/raubase/build $ make [ 3%] Building CXX object CMakeFiles/raubase.dir/src/bplan100.cpp.o [ 7%] Building CXX object CMakeFiles/raubase.dir/src/main.cpp.o [ 11%] Linking CXX executable raubase [100%] Built target raubase