rclgo

package
v0.0.0-...-4d6de22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2021 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

Deliberate trial and error have been conducted in finding the best way of interfacing with rcl or rclc.

rclc was initially considered, but: Executor subscription callback doesn't include the subscription, only the ros2 message. Thus we cannot intelligently and dynamically dispatch the ros2 message to the correct subscription callback on the golang layer. rcl wait_set has much more granular way of defining how the received messages are handled and allows for a more Golang-way of handling dynamic callbacks

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PublisherBundle

func PublisherBundle(rclContext *Context, wg *sync.WaitGroup, namespace, nodeName, topicName, msgTypeName string, rosArgs *RCLArgs) (*Context, *Publisher, error)

func SubscriberBundleReturnWaitSet

func SubscriberBundleReturnWaitSet(ctx context.Context, rclContext *Context, wg *sync.WaitGroup, namespace, nodeName, topicName, msgTypeName string, rosArgs *RCLArgs, subscriberCallback SubscriptionCallback) (*Context, *WaitSet, error)

Types

type AlreadyInit

type AlreadyInit struct {
	// contains filtered or unexported fields
}

AlreadyInit rcl specific ret codes start at 100rcl_init() already called return code.

func (*AlreadyInit) Error

func (e *AlreadyInit) Error() string

type AlreadyShutdown

type AlreadyShutdown struct {
	// contains filtered or unexported fields
}

AlreadyShutdown rcl_shutdown() already called return code.

func (*AlreadyShutdown) Error

func (e *AlreadyShutdown) Error() string

type BadAlloc

type BadAlloc = RmwBadAlloc

BadAlloc Failed to allocate memory return code.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is used to send requests to and receive responses from a service.

Calling Send is thread-safe. Creating and closing clients is not thread-safe.

func (*Client) Close

func (c *Client) Close() error

func (*Client) GetID

func (r *Client) GetID() uint64

func (*Client) Send

func (*Client) SetID

func (r *Client) SetID(x uint64)

type ClientInvalid

type ClientInvalid struct {
	// contains filtered or unexported fields
}

ClientInvalid rcl service client specific ret codes in 5XXInvalid rcl_client_t given return code.

func (*ClientInvalid) Error

func (e *ClientInvalid) Error() string

type ClientOptions

type ClientOptions struct {
	Qos RmwQosProfile
}

func NewDefaultClientOptions

func NewDefaultClientOptions() *ClientOptions

type ClientTakeFailed

type ClientTakeFailed struct {
	// contains filtered or unexported fields
}

ClientTakeFailed Failed to take a response from the client return code.

func (*ClientTakeFailed) Error

func (e *ClientTakeFailed) Error() string

type Clock

type Clock struct {
	// contains filtered or unexported fields
}

func (*Clock) Close

func (self *Clock) Close() error

Close frees the allocated memory

func (*Clock) GetID

func (r *Clock) GetID() uint64

func (*Clock) SetID

func (r *Clock) SetID(x uint64)

type ClockType

type ClockType uint32
const (
	ClockTypeUninitialized ClockType = 0
	ClockTypeROSTime       ClockType = 1
	ClockTypeSystemTime    ClockType = 2
	ClockTypeSteadyTime    ClockType = 3
)

type Context

type Context struct {
	WG *sync.WaitGroup

	Clock *Clock
	// contains filtered or unexported fields
}

Context manages resources for a set of RCL entities.

func NewContext

func NewContext(wg *sync.WaitGroup, clockType ClockType, rclArgs *RCLArgs) (ctx *Context, err error)

NewRCLContext initializes a new RCL context.

parent can be nil, a new context.Background is created clockType can be nil, then no clock is initialized, you can later initialize it with NewClock() rclArgs can be nil

func PublisherBundleTimer

func PublisherBundleTimer(ctx context.Context, rclContext *Context, wg *sync.WaitGroup, namespace, nodeName, topicName, msgTypeName string, rosArgs *RCLArgs, interval time.Duration, payload string, publisherCallback func(*Publisher, types.Message) bool) (*Context, error)

func SubscriberBundle

func SubscriberBundle(ctx context.Context, rclContext *Context, wg *sync.WaitGroup, namespace, nodeName, topicName, msgTypeName string, rosArgs *RCLArgs, subscriberCallback SubscriptionCallback) (*Context, error)

Creates a ROS2 RCL context with a single subscriber subscribing to the given topic and waiting for termination via the given/returned context. All parameters except the first one are optional.

func (*Context) Close

func (c *Context) Close() error

func (*Context) NewClock

func (c *Context) NewClock(clockType ClockType) (clock *Clock, err error)

func (*Context) NewNode

func (c *Context) NewNode(node_name, namespace string) (node *Node, err error)

func (*Context) NewTimer

func (c *Context) NewTimer(timeout time.Duration, timer_callback func(*Timer)) (timer *Timer, err error)

func (*Context) NewWaitSet

func (c *Context) NewWaitSet(timeout time.Duration) (ws *WaitSet, err error)

type Error

type Error = RmwError

Error Unspecified error return code.

type EventInvalid

type EventInvalid struct {
	// contains filtered or unexported fields
}

EventInvalid rcl event specific ret codes in 20XXInvalid rcl_event_t given return code.

func (*EventInvalid) Error

func (e *EventInvalid) Error() string

type EventTakeFailed

type EventTakeFailed struct {
	// contains filtered or unexported fields
}

EventTakeFailed Failed to take an event from the event handle

func (*EventTakeFailed) Error

func (e *EventTakeFailed) Error() string

type InvalidArgument

type InvalidArgument = RmwInvalidArgument

InvalidArgument Invalid argument return code.

type InvalidLogLevelRule

type InvalidLogLevelRule struct {
	// contains filtered or unexported fields
}

InvalidLogLevelRule Argument is not a valid log level rule

func (*InvalidLogLevelRule) Error

func (e *InvalidLogLevelRule) Error() string

type InvalidParamRule

type InvalidParamRule struct {
	// contains filtered or unexported fields
}

InvalidParamRule Argument is not a valid parameter rule

func (*InvalidParamRule) Error

func (e *InvalidParamRule) Error() string

type InvalidRemapRule

type InvalidRemapRule struct {
	// contains filtered or unexported fields
}

InvalidRemapRule rcl argument parsing specific ret codes in 1XXXArgument is not a valid remap rule

func (*InvalidRemapRule) Error

func (e *InvalidRemapRule) Error() string

type InvalidRosArgs

type InvalidRosArgs struct {
	// contains filtered or unexported fields
}

InvalidRosArgs Found invalid ros argument while parsing

func (*InvalidRosArgs) Error

func (e *InvalidRosArgs) Error() string

type LifecycleStateNotRegistered

type LifecycleStateNotRegistered struct {
	// contains filtered or unexported fields
}

LifecycleStateNotRegistered rcl_lifecycle state not registered

func (*LifecycleStateNotRegistered) Error

func (e *LifecycleStateNotRegistered) Error() string

type LifecycleStateRegistered

type LifecycleStateRegistered struct {
	// contains filtered or unexported fields
}

LifecycleStateRegistered rcl_lifecycle state register ret codes in 30XXrcl_lifecycle state registered

func (*LifecycleStateRegistered) Error

func (e *LifecycleStateRegistered) Error() string

type LogSeverity

type LogSeverity uint32

/ The severity levels of log messages / loggers. // Copypaste from /opt/ros/galactic/include/rcutils/logging.h

const (
	LogSeverityUnset LogSeverity = 0  ///< The unset log level
	LogSeverityDebug LogSeverity = 10 ///< The debug log level
	LogSeverityInfo  LogSeverity = 20 ///< The info log level
	LogSeverityWarn  LogSeverity = 30 ///< The warn log level
	LogSeverityError LogSeverity = 40 ///< The error log level
	LogSeverityFatal LogSeverity = 50 ///< The fatal log level
)

type MismatchedRmwId

type MismatchedRmwId struct {
	// contains filtered or unexported fields
}

MismatchedRmwId Mismatched rmw identifier return code.

func (*MismatchedRmwId) Error

func (e *MismatchedRmwId) Error() string

type Node

type Node struct {
	// contains filtered or unexported fields
}

func (*Node) Close

func (self *Node) Close() error

Close frees the allocated memory

func (*Node) GetID

func (r *Node) GetID() uint64

func (*Node) NewClient

func (n *Node) NewClient(
	serviceName string,
	typeSupport types.ServiceTypeSupport,
	options *ClientOptions,
) (c *Client, err error)

NewClient creates a new client.

options must not be modified after passing it to this function. If options is nil, default options are used.

func (*Node) NewPublisher

func (self *Node) NewPublisher(
	topicName string,
	ros2msg types.MessageTypeSupport,
	options *PublisherOptions,
) (pub *Publisher, err error)

NewPublisher creates a new publisher.

options must not be modified after passing it to this function. If options is nil, default options are used.

func (*Node) NewService

func (n *Node) NewService(
	name string,
	typeSupport types.ServiceTypeSupport,
	options *ServiceOptions,
	handler ServiceRequestHandler,
) (s *Service, err error)

NewService creates a new service.

options must not be modified after passing it to this function. If options is nil, default options are used.

func (*Node) NewSubscription

func (self *Node) NewSubscription(topic_name string, ros2msg types.MessageTypeSupport, subscriptionCallback SubscriptionCallback) (sub *Subscription, err error)

func (*Node) SetID

func (r *Node) SetID(x uint64)

type NodeInvalid

type NodeInvalid struct {
	// contains filtered or unexported fields
}

NodeInvalid rcl node specific ret codes in 2XXInvalid rcl_node_t given return code.

func (*NodeInvalid) Error

func (e *NodeInvalid) Error() string

type NodeInvalidName

type NodeInvalidName struct {
	// contains filtered or unexported fields
}

NodeInvalidName Invalid node name return code.

func (*NodeInvalidName) Error

func (e *NodeInvalidName) Error() string

type NodeInvalidNamespace

type NodeInvalidNamespace struct {
	// contains filtered or unexported fields
}

NodeInvalidNamespace Invalid node namespace return code.

func (*NodeInvalidNamespace) Error

func (e *NodeInvalidNamespace) Error() string

type NodeNameNonExistent

type NodeNameNonExistent struct {
	// contains filtered or unexported fields
}

NodeNameNonExistent Failed to find node name

func (*NodeNameNonExistent) Error

func (e *NodeNameNonExistent) Error() string

type NotInit

type NotInit struct {
	// contains filtered or unexported fields
}

NotInit rcl_init() not yet called return code.

func (*NotInit) Error

func (e *NotInit) Error() string

type Ok

type Ok = RmwOk

Ok Success return code.

type Publisher

type Publisher struct {
	TopicName string
	// contains filtered or unexported fields
}

func (*Publisher) Close

func (self *Publisher) Close() error

Close frees the allocated memory

func (*Publisher) GetID

func (r *Publisher) GetID() uint64

func (*Publisher) Publish

func (self *Publisher) Publish(ros2msg types.Message) error

func (*Publisher) SetID

func (r *Publisher) SetID(x uint64)

type PublisherInvalid

type PublisherInvalid struct {
	// contains filtered or unexported fields
}

PublisherInvalid rcl publisher specific ret codes in 3XXInvalid rcl_publisher_t given return code.

func (*PublisherInvalid) Error

func (e *PublisherInvalid) Error() string

type PublisherOptions

type PublisherOptions struct {
	Qos RmwQosProfile
}

func NewDefaultPublisherOptions

func NewDefaultPublisherOptions() *PublisherOptions

type RCLArgs

type RCLArgs struct {
	GoArgs []string
	CArgv  **C.char
	CArgc  C.int
}

ROS2 RCL is configured via CLI arguments, so merge them from different sources. See. http://design.ros2.org/articles/ros_command_line_arguments.html

func NewRCLArgs

func NewRCLArgs(rclArgs string) (*RCLArgs, error)

NewRCLArgs parses ROS2 RCL commandline arguments from the given rclArgs or from os.Args. If rclArgs is nil returns a string containing the prepared parameters in the form the RCL can understand them.

C memory is freed when the RCLArgs-object is GC'd.

Example

oldOSArgs := os.Args
defer func() { os.Args = oldOSArgs }()

os.Args = []string{"--extra0", "args0", "--ros-args", "--log-level", "DEBUG", "--", "--extra1", "args1"}
rosArgs, err := NewRCLArgs("")
if err != nil {
    panic(err)
}
fmt.Printf("rosArgs: %+v\n", rosArgs.GoArgs) // -> [--extra0 args0 --ros-args --log-level DEBUG -- --extra1 args1]

rosArgs, err = NewRCLArgs("--log-level INFO")
if err != nil {
    panic(err)
}
fmt.Printf("rosArgs: %+v\n", rosArgs.GoArgs) // -> [--ros-args --log-level INFO]

os.Args = []string{"--extra0", "args0", "--extra1", "args1"}
rosArgs, err = NewRCLArgs("")
if err != nil {
    panic(err)
}
fmt.Printf("rosArgs: %+v\n", rosArgs.GoArgs) // -> []

// Output: rosArgs: [--extra0 args0 --ros-args --log-level DEBUG -- --extra1 args1]
// rosArgs: [--ros-args --log-level INFO]
// rosArgs: []

func NewRCLArgsMust

func NewRCLArgsMust(rclArgs string) *RCLArgs

NewRCLArgsMust behaves the same as NewRCLArgs except on error it panic()s!

func (*RCLArgs) Close

func (self *RCLArgs) Close() error

Close frees the allocated memory

type RmwBadAlloc

type RmwBadAlloc struct {
	// contains filtered or unexported fields
}

RmwBadAlloc Failed to allocate memory

func (*RmwBadAlloc) Error

func (e *RmwBadAlloc) Error() string

type RmwError

type RmwError struct {
	// contains filtered or unexported fields
}

RmwError Generic error to indicate operation could not complete successfully

func (*RmwError) Error

func (e *RmwError) Error() string

type RmwIncorrectRmwImplementation

type RmwIncorrectRmwImplementation struct {
	// contains filtered or unexported fields
}

RmwIncorrectRmwImplementation Incorrect rmw implementation.

func (*RmwIncorrectRmwImplementation) Error

func (e *RmwIncorrectRmwImplementation) Error() string

type RmwInvalidArgument

type RmwInvalidArgument struct {
	// contains filtered or unexported fields
}

RmwInvalidArgument Argument to function was invalid

func (*RmwInvalidArgument) Error

func (e *RmwInvalidArgument) Error() string

type RmwMessageInfo

type RmwMessageInfo struct {
	SourceTimestamp   time.Time
	ReceivedTimestamp time.Time
	FromIntraProcess  bool
}

type RmwNodeNameNonExistent

type RmwNodeNameNonExistent struct {
	// contains filtered or unexported fields
}

RmwNodeNameNonExistent rmw node specific ret codes in 2XXFailed to find node nameUsing same return code than in rcl

func (*RmwNodeNameNonExistent) Error

func (e *RmwNodeNameNonExistent) Error() string

type RmwOk

type RmwOk struct {
	// contains filtered or unexported fields
}

RmwOk Return code for rmw functionsThe operation ran as expected

func (*RmwOk) Error

func (e *RmwOk) Error() string

type RmwQosDurabilityPolicy

type RmwQosDurabilityPolicy int
const (
	RmwQosDurabilityPolicySystemDefault RmwQosDurabilityPolicy = iota
	RmwQosDurabilityPolicyTransientLocal
	RmwQosDurabilityPolicyVolatile
	RmwQosDurabilityPolicyUnknown
)

type RmwQosHistoryPolicy

type RmwQosHistoryPolicy int
const (
	RmwQosHistoryPolicySystemDefault RmwQosHistoryPolicy = iota
	RmwQosHistoryPolicyKeepLast
	RmwQosHistoryPolicyKeepAll
	RmwQosHistoryPolicyUnknown
)

type RmwQosLivelinessPolicy

type RmwQosLivelinessPolicy int
const (
	RmwQosLivelinessPolicySystemDefault RmwQosLivelinessPolicy = iota
	RmwQosLivelinessPolicyAutomatic

	RmwQosLivelinessPolicyManualByTopic
	RmwQosLivelinessPolicyUnknown
)

type RmwQosProfile

type RmwQosProfile struct {
	History                      RmwQosHistoryPolicy
	Depth                        int
	Reliability                  RmwQosReliabilityPolicy
	Durability                   RmwQosDurabilityPolicy
	Deadline                     time.Duration
	Lifespan                     time.Duration
	Liveliness                   RmwQosLivelinessPolicy
	LivelinessLeaseDuration      time.Duration
	AvoidRosNamespaceConventions bool
}

func NewRmwQosProfileDefault

func NewRmwQosProfileDefault() RmwQosProfile

func NewRmwQosProfileServicesDefault

func NewRmwQosProfileServicesDefault() RmwQosProfile

type RmwQosReliabilityPolicy

type RmwQosReliabilityPolicy int
const (
	RmwQosReliabilityPolicySystemDefault RmwQosReliabilityPolicy = iota
	RmwQosReliabilityPolicyReliable
	RmwQosReliabilityPolicyBestEffort
	RmwQosReliabilityPolicyUnknown
)

type RmwRequestID

type RmwRequestID struct {
	WriterGUID     [16]int8
	SequenceNumber int64
}

type RmwServiceInfo

type RmwServiceInfo struct {
	SourceTimestamp   time.Time
	ReceivedTimestamp time.Time
	RequestID         RmwRequestID
}

type RmwTimeout

type RmwTimeout struct {
	// contains filtered or unexported fields
}

RmwTimeout The operation was halted early because it exceeded its timeout critera

func (*RmwTimeout) Error

func (e *RmwTimeout) Error() string

type RmwUnsupported

type RmwUnsupported struct {
	// contains filtered or unexported fields
}

RmwUnsupported The operation or event handling is not supported.

func (*RmwUnsupported) Error

func (e *RmwUnsupported) Error() string

type Service

type Service struct {
	// contains filtered or unexported fields
}

func (*Service) Close

func (s *Service) Close() (err error)

func (*Service) GetID

func (r *Service) GetID() uint64

func (*Service) SetID

func (r *Service) SetID(x uint64)

type ServiceInvalid

type ServiceInvalid struct {
	// contains filtered or unexported fields
}

ServiceInvalid rcl service server specific ret codes in 6XXInvalid rcl_service_t given return code.

func (*ServiceInvalid) Error

func (e *ServiceInvalid) Error() string

type ServiceNameInvalid

type ServiceNameInvalid struct {
	// contains filtered or unexported fields
}

ServiceNameInvalid Service name (same as topic name) does not pass validation.

func (*ServiceNameInvalid) Error

func (e *ServiceNameInvalid) Error() string

type ServiceOptions

type ServiceOptions struct {
	Qos RmwQosProfile
}

func NewDefaultServiceOptions

func NewDefaultServiceOptions() *ServiceOptions

type ServiceRequestHandler

type ServiceRequestHandler func(*RmwServiceInfo, types.Message, ServiceResponseSender)

type ServiceResponseSender

type ServiceResponseSender interface {
	SendResponse(resp types.Message) error
}

type ServiceTakeFailed

type ServiceTakeFailed struct {
	// contains filtered or unexported fields
}

ServiceTakeFailed Failed to take a request from the service return code.

func (*ServiceTakeFailed) Error

func (e *ServiceTakeFailed) Error() string

type Subscription

type Subscription struct {
	TopicName   string
	Ros2MsgType types.MessageTypeSupport
	Callback    SubscriptionCallback
	// contains filtered or unexported fields
}

func (*Subscription) Close

func (self *Subscription) Close() error

Close frees the allocated memory

func (*Subscription) GetID

func (r *Subscription) GetID() uint64

func (*Subscription) SetID

func (r *Subscription) SetID(x uint64)

func (*Subscription) Spin

func (s *Subscription) Spin(ctx context.Context, timeout time.Duration) error

func (*Subscription) TakeMessage

func (s *Subscription) TakeMessage(out types.Message) (*RmwMessageInfo, error)

type SubscriptionCallback

type SubscriptionCallback func(*Subscription)

type SubscriptionInvalid

type SubscriptionInvalid struct {
	// contains filtered or unexported fields
}

SubscriptionInvalid rcl subscription specific ret codes in 4XXInvalid rcl_subscription_t given return code.

func (*SubscriptionInvalid) Error

func (e *SubscriptionInvalid) Error() string

type SubscriptionTakeFailed

type SubscriptionTakeFailed struct {
	// contains filtered or unexported fields
}

SubscriptionTakeFailed Failed to take a message from the subscription return code.

func (*SubscriptionTakeFailed) Error

func (e *SubscriptionTakeFailed) Error() string

type Timeout

type Timeout = RmwTimeout

Timeout Timeout occurred return code.

type Timer

type Timer struct {
	Callback func(*Timer)
	// contains filtered or unexported fields
}

func (*Timer) Close

func (self *Timer) Close() error

Close frees the allocated memory

func (*Timer) GetID

func (r *Timer) GetID() uint64

func (*Timer) GetTimeUntilNextCall

func (self *Timer) GetTimeUntilNextCall() (int64, error)

func (*Timer) Reset

func (self *Timer) Reset() error

func (*Timer) SetID

func (r *Timer) SetID(x uint64)

type TimerCanceled

type TimerCanceled struct {
	// contains filtered or unexported fields
}

TimerCanceled Given timer was canceled return code.

func (*TimerCanceled) Error

func (e *TimerCanceled) Error() string

type TimerInvalid

type TimerInvalid struct {
	// contains filtered or unexported fields
}

TimerInvalid rcl timer specific ret codes in 8XXInvalid rcl_timer_t given return code.

func (*TimerInvalid) Error

func (e *TimerInvalid) Error() string

type TopicNameInvalid

type TopicNameInvalid struct {
	// contains filtered or unexported fields
}

TopicNameInvalid Topic name does not pass validation.

func (*TopicNameInvalid) Error

func (e *TopicNameInvalid) Error() string

type UnknownReturnCode

type UnknownReturnCode struct {
	// contains filtered or unexported fields
}

func (*UnknownReturnCode) Error

func (e *UnknownReturnCode) Error() string

type UnknownSubstitution

type UnknownSubstitution struct {
	// contains filtered or unexported fields
}

UnknownSubstitution Topic name substitution is unknown.

func (*UnknownSubstitution) Error

func (e *UnknownSubstitution) Error() string

type Unsupported

type Unsupported = RmwUnsupported

Unsupported Unsupported return code.

type WaitSet

type WaitSet struct {
	Timeout       time.Duration
	Subscriptions []*Subscription
	Timers        []*Timer
	// contains filtered or unexported fields
}

func (*WaitSet) AddClients

func (w *WaitSet) AddClients(clients ...*Client)

func (*WaitSet) AddServices

func (w *WaitSet) AddServices(services ...*Service)

func (*WaitSet) AddSubscriptions

func (w *WaitSet) AddSubscriptions(subs ...*Subscription)

func (*WaitSet) AddTimers

func (w *WaitSet) AddTimers(timers ...*Timer)

func (*WaitSet) Close

func (self *WaitSet) Close() error

Close frees the allocated memory

func (*WaitSet) GetID

func (r *WaitSet) GetID() uint64

func (*WaitSet) Ready

func (w *WaitSet) Ready() bool

func (*WaitSet) Run

func (self *WaitSet) Run(ctx context.Context) error

Run causes the current goroutine to block on this given WaitSet. WaitSet executes the given timers and subscriptions and calls their callbacks on new events.

func (*WaitSet) RunGoroutine

func (self *WaitSet) RunGoroutine(ctx context.Context)

func (*WaitSet) SetID

func (r *WaitSet) SetID(x uint64)

func (*WaitSet) WaitForReady

func (self *WaitSet) WaitForReady(timeout, interval time.Duration) error

type WaitSetEmpty

type WaitSetEmpty struct {
	// contains filtered or unexported fields
}

WaitSetEmpty Given rcl_wait_set_t is empty return code.

func (*WaitSetEmpty) Error

func (e *WaitSetEmpty) Error() string

type WaitSetFull

type WaitSetFull struct {
	// contains filtered or unexported fields
}

WaitSetFull Given rcl_wait_set_t is full return code.

func (*WaitSetFull) Error

func (e *WaitSetFull) Error() string

type WaitSetInvalid

type WaitSetInvalid struct {
	// contains filtered or unexported fields
}

WaitSetInvalid rcl wait and wait set specific ret codes in 9XXInvalid rcl_wait_set_t given return code.

func (*WaitSetInvalid) Error

func (e *WaitSetInvalid) Error() string

type WrongLexeme

type WrongLexeme struct {
	// contains filtered or unexported fields
}

WrongLexeme Expected one type of lexeme but got another

func (*WrongLexeme) Error

func (e *WrongLexeme) Error() string

Directories

Path Synopsis
These types implement the rosidl_runtime_c primitive types handling semantics.
These types implement the rosidl_runtime_c primitive types handling semantics.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL