rosmsg-0.5.2.0: ROS message parser, render, TH

CopyrightAlexander Krupenkin 2016
LicenseBSD3
Maintainermail@akru.me
Stabilityexperimental
PortabilityPOSIX / WIN32
Safe HaskellNone
LanguageHaskell2010

Robotics.ROS.Msg

Contents

Description

Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source.

In ROS a node is a process that performs computation. Nodes communicate with each other by publishing messages to topics. A message is a simple data structure, comprising typed fields. Standard primitive types (integer, floating point, boolean, etc.) are supported, as are arrays of primitive types. Messages can include arbitrarily nested structures and arrays (much like C structs).

This package provide the ROS message language parser and builder. Abstract message representation given by parser can be used in TemplateHaskell codegen for native Haskell structures creation.

Synopsis

ROS message classes

class Binary a => Message a where Source #

Haskell native type for ROS message language described data structure. Serialization guaranted by Binary super class. And no more is needed for transfer over socket.

Minimal complete definition

getType, getSource, getDigest

Methods

getType :: a -> Text Source #

Get message type string, e.g. std_msgs/Char

getSource :: a -> Text Source #

Get message source

getDigest :: a -> MD5Digest Source #

Get recurrent MD5 of message source

class Message a => Stamped a where Source #

Sometime ROS messages have a special Header field. It used for tracking package sequence, time stamping and frame tagging. Headers is frequently field. The Stamped type class lifts header fields on the top of message and abstracting of type.

Minimal complete definition

getSequence, setSequence, getStamp, getFrame

Methods

getSequence :: a -> Word32 Source #

Get sequence number

setSequence :: Word32 -> a -> a Source #

Set sequence number

getStamp :: a -> ROSTime Source #

Get timestamp of message

getFrame :: a -> ByteString Source #

Get frame of message

Common used types

Array-like

newtype ROSFixedArray n a Source #

A type for fixed arrays in ROS messages

Constructors

ROSFixedArray 

Fields

Instances

Functor (ROSFixedArray n) Source # 

Methods

fmap :: (a -> b) -> ROSFixedArray n a -> ROSFixedArray n b #

(<$) :: a -> ROSFixedArray n b -> ROSFixedArray n a #

Applicative (ROSFixedArray n) Source # 

Methods

pure :: a -> ROSFixedArray n a #

(<*>) :: ROSFixedArray n (a -> b) -> ROSFixedArray n a -> ROSFixedArray n b #

(*>) :: ROSFixedArray n a -> ROSFixedArray n b -> ROSFixedArray n b #

(<*) :: ROSFixedArray n a -> ROSFixedArray n b -> ROSFixedArray n a #

Eq a => Eq (ROSFixedArray n a) Source # 

Methods

(==) :: ROSFixedArray n a -> ROSFixedArray n a -> Bool #

(/=) :: ROSFixedArray n a -> ROSFixedArray n a -> Bool #

(Data a, KnownNat n) => Data (ROSFixedArray n a) Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ROSFixedArray n a -> c (ROSFixedArray n a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ROSFixedArray n a) #

toConstr :: ROSFixedArray n a -> Constr #

dataTypeOf :: ROSFixedArray n a -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (ROSFixedArray n a)) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ROSFixedArray n a)) #

gmapT :: (forall b. Data b => b -> b) -> ROSFixedArray n a -> ROSFixedArray n a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ROSFixedArray n a -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ROSFixedArray n a -> r #

gmapQ :: (forall d. Data d => d -> u) -> ROSFixedArray n a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ROSFixedArray n a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ROSFixedArray n a -> m (ROSFixedArray n a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ROSFixedArray n a -> m (ROSFixedArray n a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ROSFixedArray n a -> m (ROSFixedArray n a) #

Ord a => Ord (ROSFixedArray n a) Source # 
Show a => Show (ROSFixedArray n a) Source # 
Monoid (ROSFixedArray n a) Source # 
(Binary a, KnownNat n) => Binary (ROSFixedArray n a) Source # 

Methods

put :: ROSFixedArray n a -> Put #

get :: Get (ROSFixedArray n a) #

putList :: [ROSFixedArray n a] -> Put #

(Default a, KnownNat n) => Default (ROSFixedArray n a) Source # 

Methods

def :: ROSFixedArray n a #

newtype ROSArray a Source #

A type for arrays in ROS messages

Constructors

ROSArray 

Fields

Instances

Functor ROSArray Source # 

Methods

fmap :: (a -> b) -> ROSArray a -> ROSArray b #

(<$) :: a -> ROSArray b -> ROSArray a #

Applicative ROSArray Source # 

Methods

pure :: a -> ROSArray a #

(<*>) :: ROSArray (a -> b) -> ROSArray a -> ROSArray b #

(*>) :: ROSArray a -> ROSArray b -> ROSArray b #

(<*) :: ROSArray a -> ROSArray b -> ROSArray a #

Eq a => Eq (ROSArray a) Source # 

Methods

(==) :: ROSArray a -> ROSArray a -> Bool #

(/=) :: ROSArray a -> ROSArray a -> Bool #

Data a => Data (ROSArray a) Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ROSArray a -> c (ROSArray a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ROSArray a) #

toConstr :: ROSArray a -> Constr #

dataTypeOf :: ROSArray a -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (ROSArray a)) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ROSArray a)) #

gmapT :: (forall b. Data b => b -> b) -> ROSArray a -> ROSArray a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ROSArray a -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ROSArray a -> r #

gmapQ :: (forall d. Data d => d -> u) -> ROSArray a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ROSArray a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ROSArray a -> m (ROSArray a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ROSArray a -> m (ROSArray a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ROSArray a -> m (ROSArray a) #

Ord a => Ord (ROSArray a) Source # 

Methods

compare :: ROSArray a -> ROSArray a -> Ordering #

(<) :: ROSArray a -> ROSArray a -> Bool #

(<=) :: ROSArray a -> ROSArray a -> Bool #

(>) :: ROSArray a -> ROSArray a -> Bool #

(>=) :: ROSArray a -> ROSArray a -> Bool #

max :: ROSArray a -> ROSArray a -> ROSArray a #

min :: ROSArray a -> ROSArray a -> ROSArray a #

Show a => Show (ROSArray a) Source # 

Methods

showsPrec :: Int -> ROSArray a -> ShowS #

show :: ROSArray a -> String #

showList :: [ROSArray a] -> ShowS #

Monoid (ROSArray a) Source # 

Methods

mempty :: ROSArray a #

mappend :: ROSArray a -> ROSArray a -> ROSArray a #

mconcat :: [ROSArray a] -> ROSArray a #

Binary a => Binary (ROSArray a) Source # 

Methods

put :: ROSArray a -> Put #

get :: Get (ROSArray a) #

putList :: [ROSArray a] -> Put #

Default (ROSArray a) Source # 

Methods

def :: ROSArray a #

Time description

type ROSDuration = (Int32, Int32) Source #

ROSDuration is a tuple of (seconds, nanoseconds)

type ROSTime = (Word32, Word32) Source #

ROSTime is a tuple of (seconds, nanoseconds)