Fawkes API
Fawkes Development Version
|
Jaco Arm movement thread. More...
#include "goto_thread.h"
Public Member Functions | |
JacoGotoThread (const char *name, fawkes::jaco_arm_t *arm) | |
Constructor. More... | |
virtual | ~JacoGotoThread () |
Destructor. More... | |
virtual void | init () |
Initialize. More... | |
virtual void | finalize () |
Finalize. More... | |
virtual void | loop () |
The main loop of this thread. More... | |
virtual bool | final () |
Check if arm is final. More... | |
virtual void | set_target (float x, float y, float z, float e1, float e2, float e3, float f1=0.f, float f2=0.f, float f3=0.f) |
Set new target, given cartesian coordinates. More... | |
virtual void | set_target_ang (float j1, float j2, float j3, float j4, float j5, float j6, float f1=0.f, float f2=0.f, float f3=0.f) |
Set new target, given joint positions This target is added to the queue, skipping trajectory planning. More... | |
virtual void | move_gripper (float f1, float f2, float f3) |
Moves only the gripper. More... | |
virtual void | pos_ready () |
Moves the arm to the "READY" position. More... | |
virtual void | pos_retract () |
Moves the arm to the "RETRACT" position. More... | |
virtual void | stop () |
Stops the current movement. More... | |
![]() | |
virtual | ~Thread () |
Virtual destructor. More... | |
bool | prepare_finalize () |
Prepare finalization. More... | |
virtual bool | prepare_finalize_user () |
Prepare finalization user implementation. More... | |
void | cancel_finalize () |
Cancel finalization. More... | |
void | start (bool wait=true) |
Call this method to start the thread. More... | |
void | cancel () |
Cancel a thread. More... | |
void | join () |
Join the thread. More... | |
void | detach () |
Detach the thread. More... | |
void | kill (int sig) |
Send signal to a thread. More... | |
bool | operator== (const Thread &thread) |
Check if two threads are the same. More... | |
void | wakeup () |
Wake up thread. More... | |
void | wakeup (Barrier *barrier) |
Wake up thread and wait for barrier afterwards. More... | |
void | wait_loop_done () |
Wait for the current loop iteration to finish. More... | |
OpMode | opmode () const |
Get operation mode. More... | |
pthread_t | thread_id () const |
Get ID of thread. More... | |
bool | started () const |
Check if thread has been started. More... | |
bool | cancelled () const |
Check if thread has been cancelled. More... | |
bool | detached () const |
Check if thread has been detached. More... | |
bool | running () const |
Check if the thread is running. More... | |
bool | waiting () const |
Check if thread is currently waiting for wakeup. More... | |
const char * | name () const |
Get name of thread. More... | |
void | set_flags (uint32_t flags) |
Set all flags in one go. More... | |
void | set_flag (uint32_t flag) |
Set flag for the thread. More... | |
void | unset_flag (uint32_t flag) |
Unset flag. More... | |
bool | flagged_bad () const |
Check if FLAG_BAD was set. More... | |
void | set_delete_on_exit (bool del) |
Set whether the thread should be deleted on exit. More... | |
void | set_prepfin_hold (bool hold) |
Hold prepare_finalize(). More... | |
void | add_notification_listener (ThreadNotificationListener *notification_listener) |
Add notification listener. More... | |
void | remove_notification_listener (ThreadNotificationListener *notification_listener) |
Remove notification listener. More... | |
void | notify_of_failed_init () |
Notify of failed init. More... | |
![]() | |
LoggingAspect () | |
Constructor. More... | |
virtual | ~LoggingAspect () |
Virtual empty Destructor. More... | |
void | init_LoggingAspect (Logger *logger) |
Set the logger. More... | |
![]() | |
const std::list< const char * > & | get_aspects () const |
Get list of aspect names attached to a aspected thread. More... | |
![]() | |
ConfigurableAspect () | |
Constructor. More... | |
virtual | ~ConfigurableAspect () |
Virtual empty Destructor. More... | |
void | init_ConfigurableAspect (Configuration *config) |
Set the configuration It is guaranteed that this is called for a configurable thread before Thread::start() is called (when running regularly inside Fawkes). More... | |
![]() | |
BlackBoardAspect (const char *owner=NULL) | |
Constructor. More... | |
virtual | ~BlackBoardAspect () |
Virtual empty destructor. More... | |
void | init_BlackBoardAspect (BlackBoard *bb) |
Init BlackBoard aspect. More... | |
Protected Member Functions | |
virtual void | run () |
Stub to see name in backtrace for easier debugging. More... | |
![]() | |
Thread (const char *name) | |
Constructor. More... | |
Thread (const char *name, OpMode op_mode) | |
Constructor. More... | |
void | exit () |
Exit the thread. More... | |
void | test_cancel () |
Set cancellation point. More... | |
void | yield () |
Yield the processor to another thread or process. More... | |
void | set_opmode (OpMode op_mode) |
Set operation mode. More... | |
void | set_prepfin_conc_loop (bool concurrent=true) |
Set concurrent execution of prepare_finalize() and loop(). More... | |
void | set_coalesce_wakeups (bool coalesce=true) |
Set wakeup coalescing. More... | |
void | set_name (const char *format,...) |
Set name of thread. More... | |
virtual void | once () |
Execute an action exactly once. More... | |
bool | wakeup_pending () |
Check if wakeups are pending. More... | |
![]() | |
void | add_aspect (const char *name) |
Add an aspect to a thread. More... | |
Additional Inherited Members | |
![]() | |
enum | OpMode { OPMODE_CONTINUOUS, OPMODE_WAITFORWAKEUP } |
Thread operation mode. More... | |
enum | CancelState { CANCEL_ENABLED, CANCEL_DISABLED } |
Cancel state. More... | |
![]() | |
static Thread * | current_thread () |
Get the Thread instance of the currently running thread. More... | |
static Thread * | current_thread_noexc () throw () |
Similar to current_thread, but does never throw an exception. More... | |
static pthread_t | current_thread_id () |
Get the ID of the currently running thread. More... | |
static void | init_main () |
Initialize Thread wrapper instance for main thread. More... | |
static void | destroy_main () |
Destroy main thread wrapper instance. More... | |
static void | set_cancel_state (CancelState new_state, CancelState *old_state=0) |
Set the cancel state of the current thread. More... | |
![]() | |
static const unsigned int | FLAG_BAD = 0x00000001 |
Standard thread flag: "thread is bad". More... | |
![]() | |
bool | finalize_prepared |
True if prepare_finalize() has been called and was not stopped with a cancel_finalize(), false otherwise. More... | |
Mutex * | loop_mutex |
Mutex that is used to protect a call to loop(). More... | |
Mutex * | loopinterrupt_antistarve_mutex |
Mutex to avoid starvation when trying to lock loop_mutex. More... | |
![]() | |
Logger * | logger |
This is the Logger member used to access the logger. More... | |
![]() | |
Configuration * | config |
This is the Configuration member used to access the configuration. More... | |
![]() | |
BlackBoard * | blackboard |
This is the BlackBoard instance you can use to interact with the BlackBoard. More... | |
Jaco Arm movement thread.
This thread handles the movement of the arm.
Definition at line 40 of file goto_thread.h.
JacoGotoThread::JacoGotoThread | ( | const char * | name, |
fawkes::jaco_arm_t * | arm | ||
) |
Constructor.
name | thread name |
arm | pointer to jaco_arm_t struct, to be used in this thread |
Definition at line 46 of file goto_thread.cpp.
|
virtual |
Destructor.
Definition at line 59 of file goto_thread.cpp.
|
virtual |
Check if arm is final.
Checks if the movements started by this thread have finished, and if the target_queue has been fully processed. Otherwise the arm is probably still moving and therefore not final.
Definition at line 87 of file goto_thread.cpp.
References fawkes::Mutex::lock(), fawkes::jaco_arm_struct::openrave_thread, JacoOpenraveBaseThread::plot_current(), fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, and fawkes::Mutex::unlock().
Referenced by JacoActThread::loop().
|
virtual |
|
virtual |
|
virtual |
The main loop of this thread.
It gets the first target in the target_queue and checks if it is ready to be processed. The target is removed from the queue if the movement is "final" (see final()), which is when this method starts processing the queue again.
Reimplemented from fawkes::Thread.
Definition at line 276 of file goto_thread.cpp.
References fawkes::angle_distance(), fawkes::jaco_arm_struct::arm, fawkes::deg2rad(), fawkes::JacoInterface::euler1(), fawkes::JacoInterface::euler2(), fawkes::JacoInterface::euler3(), fawkes::JacoArm::final(), fawkes::JacoInterface::finger1(), fawkes::JacoInterface::finger2(), fawkes::JacoInterface::finger3(), fawkes::JacoArm::goto_coords(), fawkes::JacoArm::goto_joints(), fawkes::JacoArm::goto_ready(), fawkes::JacoArm::goto_retract(), fawkes::JacoArm::goto_trajec(), fawkes::jaco_arm_struct::iface, fawkes::JacoInterface::joints(), fawkes::Mutex::lock(), fawkes::Logger::log_debug(), fawkes::Logger::log_warn(), fawkes::LoggingAspect::logger, fawkes::Thread::name(), fawkes::jaco_arm_struct::openrave_thread, JacoOpenraveBaseThread::plot_current(), JacoOpenraveThread::plot_first(), fawkes::JacoInterface::set_error_code(), stop(), fawkes::JacoArm::stop(), fawkes::TARGET_ANGULAR, fawkes::TARGET_GRIPPER, fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, fawkes::TARGET_READY, fawkes::TARGET_RETRACT, fawkes::TRAJEC_EXECUTING, fawkes::TRAJEC_PLANNING_ERROR, fawkes::TRAJEC_READY, fawkes::TRAJEC_SKIP, fawkes::Mutex::unlock(), fawkes::Exception::what_no_backtrace(), fawkes::JacoInterface::x(), fawkes::JacoInterface::y(), and fawkes::JacoInterface::z().
|
virtual |
Moves only the gripper.
f1 | value of 1st finger |
f2 | value of 2nd finger |
f3 | value of 3rd finger |
Definition at line 231 of file goto_thread.cpp.
References fawkes::jaco_target_struct_t::fingers, fawkes::TARGET_GRIPPER, fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, and fawkes::jaco_target_struct_t::type.
Referenced by JacoActThread::loop().
|
virtual |
Moves the arm to the "READY" position.
This target is added to the queue, skipping trajectory planning. CAUTION: This also means: no collision avoidance!
Definition at line 202 of file goto_thread.cpp.
References fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, fawkes::TARGET_READY, and fawkes::jaco_target_struct_t::type.
Referenced by JacoActThread::loop().
|
virtual |
Moves the arm to the "RETRACT" position.
This target is added to the queue, skipping trajectory planning. CAUTION: This also means: no collision avoidance!
Definition at line 216 of file goto_thread.cpp.
References fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, fawkes::TARGET_RETRACT, and fawkes::jaco_target_struct_t::type.
Referenced by JacoActThread::loop().
|
inlineprotectedvirtual |
Stub to see name in backtrace for easier debugging.
Reimplemented from fawkes::Thread.
Definition at line 66 of file goto_thread.h.
References fawkes::Thread::run().
|
virtual |
Set new target, given cartesian coordinates.
This target is added to the queue, skipping trajectory planning. CAUTION: This also means: no collision avoidance!
x | x-coordinate of target position |
y | y-coordinate of target position |
z | z-coordinate of target position |
e1 | 1st euler rotation of target orientation |
e2 | 2nd euler rotation of target orientation |
e3 | 3rd euler rotation of target orientation |
f1 | value of 1st finger |
f2 | value of 2nd finger |
f3 | value of 3rd finger |
Definition at line 130 of file goto_thread.cpp.
References fawkes::jaco_target_struct_t::coord, fawkes::jaco_target_struct_t::fingers, fawkes::jaco_target_struct_t::pos, fawkes::TARGET_CARTESIAN, fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, fawkes::TRAJEC_SKIP, fawkes::jaco_target_struct_t::trajec_state, and fawkes::jaco_target_struct_t::type.
Referenced by JacoActThread::loop().
|
virtual |
Set new target, given joint positions This target is added to the queue, skipping trajectory planning.
CAUTION: This also means: no collision avoidance!
j1 | angular position of 1st joint (in degree) |
j2 | angular position of 2nd joint (in degree) |
j3 | angular position of 3rd joint (in degree) |
j4 | angular position of 4th joint (in degree) |
j5 | angular position of 5th joint (in degree) |
j6 | angular position of 6th joint (in degree) |
f1 | value of 1st finger |
f2 | value of 2nd finger |
f3 | value of 3rd finger |
Definition at line 171 of file goto_thread.cpp.
References fawkes::jaco_target_struct_t::coord, fawkes::jaco_target_struct_t::fingers, fawkes::jaco_target_struct_t::pos, fawkes::TARGET_ANGULAR, fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, fawkes::TRAJEC_SKIP, fawkes::jaco_target_struct_t::trajec_state, and fawkes::jaco_target_struct_t::type.
Referenced by JacoActThread::loop().
|
virtual |
Stops the current movement.
This also stops any currently enqueued motion.
Definition at line 249 of file goto_thread.cpp.
References fawkes::jaco_arm_struct::arm, fawkes::RefPtr< T_CppObject >::clear(), fawkes::Mutex::lock(), fawkes::Logger::log_warn(), fawkes::LoggingAspect::logger, fawkes::Thread::name(), fawkes::JacoArm::stop(), fawkes::jaco_arm_struct::target_mutex, fawkes::jaco_arm_struct::target_queue, fawkes::Mutex::unlock(), and fawkes::Exception::what().
Referenced by JacoActThread::loop(), and loop().