Robobot new behaviour plan

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Add to CMakeLists.txt)
(Add to CMakeLists.txt)
Line 53: Line 53:
 
     ini["plan20"]["log"] = "true";
 
     ini["plan20"]["log"] = "true";
 
     ini["plan20"]["run"] = "false";
 
     ini["plan20"]["run"] = "false";
 +
 +
==== 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);
 +
    ...
  
 
==== Add to CMakeLists.txt ====
 
==== Add to CMakeLists.txt ====
Line 58: Line 84:
 
Add the new cpp file to the CMakeLists.txt to the list of files, like
 
Add the new cpp file to the CMakeLists.txt to the list of files, like
  
  $ nano ../CMakeLists.txt
+
  $ cd ~/svn/robobot/raubase
 +
$ nano CMakeLists.txt
 
  ...
 
  ...
 
  add_executable(raubase
 
  add_executable(raubase

Revision as of 14:34, 1 January 2024

Back to Robobot

Back to Robobot software description

Contents

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 class name

A number of variables and types need to be renamed.

Header file
  • Search and replace 'BPlan20' to 'BPlan100' (three places)
  • rename 'plan20' (last line) to 'plan100'

The bplan100.h should be changes to look like:

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 old file looks like:

#include "bplan20.h"
BPlan20 plan20;

void BPlan20::setup()
{ // ensure there is default values in ini-file
  if (not ini["plan20"].has("log"))
  { // no data yet, so generate some default values
    ini["plan20"]["log"] = "true";
    ini["plan20"]["run"] = "false";

==== 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);
    ...

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


(hertil)

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox