Skip to main content

Roslisp Usage

Supplement to roslisp wiki

Manage Node

start-ros-node

(start-ros-node "node_name")
More

shutdown-ros-node

(shutdown-ros-node)

with-ros-node

(with-ros-node ("node_name")
(...))
;; for long running task/service, use:
(with-ros-node ("node_name" :spin t)
(...))

node-status

(node-status)
;; returns either :running or :shutdown

Messages

make-message

;; use symbol as msg-type
(make-message 'std_msgs-msg:String
:data "Hello World")
;; use string as msg-type
(make-message "std_msgs/String"
:data "Hello World")
;; fill in nested fields
(make-message "geometry_msgs/PoseStamped"
:header (make-message "std_msgs/Header"
:frame_id "map")
(:w :orientation :pose) 1.0)

symbol-codes

;; use symbol as msg-type
(symbol-codes 'sensor_msgs-msg:Range)
;; use instance as msg-type
(symbol-codes (make-message "sensor_msgs/Range"))
;; returns: ((:ULTRASOUND . 0) (:INFRARED . 1))

symbol-code

(symbol-code 'sensor_msgs-msg:Range :ultrasound)
;; returns: 0

code-symbols

(code-symbols 'visualization_msgs-msg:Marker 0)
;; returns: ((:ARROW . 0) (:ADD . 0) (:MODIFY . 0))

code-symbol

(code-symbol 'visualization_msgs-msg:Marker 0)
;; returns: :ARROW (first found)

Time

ros-time

(ros-time)
;; returns the number of seconds since January 1st, 1970
More

Logging

ros-info

(ros-info (foo bar) "Hello, ~A" "World")
;; outputs: [(FOO BAR) INFO] 1625730154.129: Hello, World
(ros-info (monitor) (< battery-level 20) "Battery Low")
;; The second argument can be a condition, works like `ROS_INFO_COND` in roscpp
More