Robotics StackExchange | Archived questions

mbed action lib kinetic

Hi All

The tutorial for action lib has these includes at the top:

   1 #include <ros/ros.h>
   2 #include <actionlib/server/simple_action_server.h>
   3 #include <actionlib_tutorials/FibonacciAction.h>

I am trying to implement the tutorial on action lib on an mbed (nucleo F401RE)

There is a implementation of a ROS libarary on the mbed "roslibkinetic".

in the directory tree of that library is "actionlib" and action_lib tutorials.

The tutorial-specific FibonacciAction.h is in the correct directory. However, there does not appear to be "actionlib/server/simpleactionserver.h" as listed in the includes of the tutorial.

If there is no simpleactionserver.h, how do you implement the tutorial on an mbed?

Thanks for your help.

Kind regards

Matt

Asked by Unproductive on 2021-03-01 17:43:05 UTC

Comments

Answers

If there is no simple_action_server.h, how do you implement the tutorial on an mbed?

Unfortunately, you don't.

The tutorial you link to targets the roscpp variant of ROS 1, the things you're trying to use target rosserial. Those are two very different client libraries, and without someone porting actionlib to be compatible with rosserial, you cannot use it directly

The tutorial-specific FibonacciAction.h is in the correct directory. However, there does not appear to be "actionlib/server/simple_action_server.h" as listed in the includes of the tutorial.

FibonacciAction.h is a header which most likely contains the goal/message definition. That's part of what's needed to use actionlib, but not enough.

There are various related Q&As here on ROS Answers about using actionlib with rosserial. I'm not aware of what the state-of-the-art is here, so you might want to try and find those (tip: use Google and append site:answers.ros.org to your query).

The various rosserial issue trackers (Github) may also have information.


Edit: there is a way to implement an Action server without actionlib, as in essence, it's "just" a set of topics and a state machine. I'm not aware of someone having implemented that in a generically reusable way for rosserial though.

Asked by gvdhoorn on 2021-03-02 03:49:48 UTC

Comments