[Documentation] [TitleIndex] [WordIndex

  Show EOL distros: 

roslisp_common: actionlib_lisp | cl_tf | cl_transforms | cl_utils

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_transforms | cl_utils

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_transforms | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_transforms | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_tf2 | cl_transforms | cl_transforms_stamped | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_tf2 | cl_transforms | cl_transforms_stamped | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_tf2 | cl_transforms | cl_transforms_stamped | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_tf2 | cl_transforms | cl_transforms_stamped | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_tf2 | cl_transforms | cl_transforms_stamped | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

roslisp_common: actionlib_lisp | cl_tf | cl_tf2 | cl_transforms | cl_transforms_stamped | cl_urdf | cl_utils | roslisp_utilities

Package Summary

actionlib_lisp is a native implementation of the famous actionlib in Common Lisp. It provides a client and a simple server.

Overview

actionlib_lisp is a native implementation of actionlib in Common Lisp. It provides a simple server and a client. In contrast to the implementations of actionlib in C++ and Python which provide a simple action client/server and a complex one, the lisp equivalent provides only one server and client implementation. The server is similar to the simple action server and the client is a little bit more powerful than the simple action client but not as complex as the complex C++ equivalent.

Client

API

The interface consists of the following methods:

Example

This example shows how to construct an action client for the fibonacci action of the actionlisp_tutorials package, send a goal to it and wait for the result.

(defparameter *ac* (make-action-client "/fibonacci" "actionlib_tutorials/FibonacciAction"))

(send-goal-and-wait *ac* (make-action-goal *ac* :order 10) :exec-timeout 20 :result-timeout 0.5)

To run it, you need to have the actionlib-lisp and actionlib_tutorials-msg loaded and be in a package that uses the actionlib package.

Server

The server is similar to the C++ simple action server. It can handle only one goal at a time and if another goal is received while the server is processing an old goal, it is preempted and the new goal is executed.

API

Example

This example shows how to implement a simple fibonacci action server.

(def-exec-callback fib-callback (order)
  "This function takes in the FibonacciGoal message and pursues the action."
  (ros-debug (fib callback) "entering callback with goal ~a" order)
  (let ((a 1) (b 1) (seq (make-array 0 :adjustable t :fill-pointer 0)))
    (dotimes (i order)
      (when (cancel-request-received)
        (ros-debug (fib callback) "goal ~a canceled" order)
        (preempt-current :sequence seq)) ;; Note that this exits the callback
        
      (psetq a b b (+ a b))
      (vector-push-extend a seq) 
      (ros-debug (fib callback) "publishing feedback for goal ~a" order)
      (publish-feedback :sequence seq)
      (sleep 1.0))
    (ros-debug (fib callback) "succeeding on goal ~a" order)
    (succeed-current :sequence seq)))

      
(defun fib-server ()
  (with-ros-node ("fib")
    (start-action-server "fibonacci" "actionlib_tutorials/FibonacciAction" #'fib-callback)))


2024-11-09 13:01