BTR課題 : fawkes の plugin を作ってみましょう.

まず,~fawkes-robotino/src/plugin の中にあるplugin_template をbtr_plugin_ex としてコピーしましょう.
cd ~/fawkes-robotino/src/plugin/
cp -r plugin_template btr_plugin_ex
Makefile に,このディレクトリ情報を追加します.
SUBDIRS = … の所に追加します.btr_plugin_ex の中のファイル構成を変更します.
cd btr_plugin_ex
mv plugin_template_plugin.cpp btr_plugin_ex_plugin.cpp
mv plugin_template_thread.cpp btr_plugin_ex_thread.cpp
mv plugin_template_thread.h   btr_plugin_ex_thread.h
btr_plugin_ex の中のmakefile を修正します.
【修正前】
LIBS_plugin_template = m fawkescore fawkesutils fawkesaspects fawkesbaseapp \
                fawkesblackboard fawkesinterface MotorInterface
...
OBJS_plugin_template = plugin_template_plugin.o plugin_template_thread.o
...
PLUGINS_all = $(PLUGINDIR)/plugin-template.$(SOEXT)
...
OBJS_all = $(OBJS_plugin_template)
【修正後】
LIBS_btr_plugin_ex = m fawkescore fawkesutils fawkesaspects fawkesbaseapp \
                fawkesblackboard fawkesinterface MotorInterface
...
OBJS_btr_plugin_ex = btr_plugin_ex_plugin.o btr_plugin_ex_thread.o
...
PLUGINS_all = $(PLUGINDIR)/btr_plugin_ex.$(SOEXT)
...
OBJS_all = $(OBJS_btr_plugin_ex)
btr_plugin_ex_thread.h の修正.
【修正前】
#ifndef __PLUGINS_PLUGIN_TEMPLATE_THREAD_H_
#define __PLUGINS_PLUGIN_TEMPLATE_THREAD_H_
...
class PluginTemplateThread
...
 public:
  PluginTemplateThread();
【修正後】
#ifndef __PLUGINS_BTR_PLUGIN_EX_THREAD_H_
#define __PLUGINS_BTR_PLUGIN_EX_THREAD_H_
...
class BTRPluginExThread
...
 public:
  BTRPluginExThread();
btr_plugin_ex_thread.cpp の修正.
【修正前】
#include "plugin_template_thread.h"
...
/** Constructor. */
PluginTemplateThread::PluginTemplateThread() :
                Thread("PluginTemplateThread", Thread::OPMODE_WAITFORWAKEUP), BlockedTimingAspect(
                                BlockedTimingAspect::WAKEUP_HOOK_SKILL) {
}
...
void PluginTemplateThread::init() {

        logger->log_info(name(), "Plugin Template starts up");
        motor_if_ = blackboard->open_for_reading<MotorInterface>("Robotino");
}
...
bool PluginTemplateThread::prepare_finalize_user() {
...
void PluginTemplateThread::finalize() {
...
void PluginTemplateThread::send_transrot(float vx, float vy, float omega) {
...
void PluginTemplateThread::stop() {
...
void PluginTemplateThread::loop() {
...
【修正後】
#include "btr_plugin_ex_thread.h"
...
/** Constructor. */
BTRPluginExThread::BTRPluginExThread() :
                Thread("BTRPluginExThread", Thread::OPMODE_WAITFORWAKEUP), BlockedTimingAspect(
                                BlockedTimingAspect::WAKEUP_HOOK_SKILL) {
}
...
void BTRPluginExThread::init() {

        logger->log_info(name(), "BTR Plugin Ex starts up");
        motor_if_ = blackboard->open_for_reading<MotorInterface>("Robotino");
}
...
bool BTRPluginExThread::prepare_finalize_user() {
...
void BTRPluginExThread::finalize() {
...
void BTRPluginExThread::send_transrot(float vx, float vy, float omega) {
...
void BTRPluginExThread::stop() {
...
void BTRPluginExThread::loop() {
...
btr_plugin_ex_plugin.cpp の修正.
【修正前】
#include "plugin_template_thread.h"
...
class PluginTemplatePlugin : public fawkes::Plugin
...
  PluginTemplatePlugin(Configuration *config)
...
    thread_list.push_back(new PluginTemplateThread());
...
PLUGIN_DESCRIPTION("Plugin Template")
EXPORT_PLUGIN(PluginTemplatePlugin)
【修正後】
#include "btr_plugin_ex_thread.h"
...
class BTRPluginExPlugin : public fawkes::Plugin
...
  BTRPluginExPlugin(Configuration *config)
...
    thread_list.push_back(new BTRPluginExThread());
...
PLUGIN_DESCRIPTION("BTR Plugin Ex")
EXPORT_PLUGIN(BTRPluginExPlugin)
とりあえず,これでコンパイルできるかチェック.
make -j4 clean all gui

問題なければ,通るはず.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*