Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iox-#1295 Extend FAQ with more questions #1434

Merged
merged 4 commits into from
Jul 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ This ensures data transmissions with constant latency, regardless of the size of
</p>

You're right, middleware is a cluttered term and can somehow be all or nothing. To get a better impression what
this means for iceoryx, please have a loot at our [goals and non-goals](doc/goals-non-goals.md).
this means for iceoryx, please have a look at our [goals and non-goals](doc/goals-non-goals.md).

Don't get too frightened of the API when strolling through the examples. Think of the untyped C++ and the C API as a
"plumbing" one ("plumbing" as defined in Git, which means low-level). We're not using the "plumbing" APIs ourselves, but
Expand Down Expand Up @@ -92,7 +92,7 @@ Please see the dedicated [README.md](tools/docker/README.md) for information on

### Quality levels & platforms

> [Quality level](./CONTRIBUTING.md#quality-levels) are 5 to 1+, where 1+ is highest level.
> [Quality level](./CONTRIBUTING.md#quality-levels) are 5 to 1+, where 1+ is the highest level.

Please see the [Quality Declaration](./QUALITY_DECLARATION.md) for details of the quality measures according to ROS 2 guidelines.

Expand Down
51 changes: 50 additions & 1 deletion doc/website/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,59 @@

In this document are tips and hints documented which can help for troubleshooting on RouDi.

## Does iceoryx run in a docker environment
## Does iceoryx run in a docker environment?

Yes. Take a look at the [icedocker example](../../iceoryx_examples/icedocker/)

## How can I find out if RouDi is running?

RouDi uses a file locking machanism to ensure that only one RouDi instance is running at a time. For that RouDi
creates and locks `/tmp/roudi.lock`. The file exists also also when RouDi is not running. Try locking this file,
if this fails RouDi is running.

On the command line do

```console
flock -n /tmp/roudi.lock echo "RouDi is not running"
```

## Missing samples in a publish subscribe scenario

Lost samples are not acceptable for your system? Is your publisher sending at a higher frequency than the subscribers
are taking the samples?

Either

* Make sure that the receiving frequency is higher than the publishing one

or

* Use the [blocking publisher feature](../../iceoryx_examples/iceoptions/)
mossmaurice marked this conversation as resolved.
Show resolved Hide resolved

!!! caution
The usage of the blocking publisher feature needs to be considered carefully as other subscribers will not receive
samples while the publisher is blocked.

A possible alternative is

* Increase `SubscriberOptions::queueCapacity` to up to 256
* If 256 is not enough, increase the maximum value `IOX_MAX_CHUNKS_HELD_PER_SUBSCRIBER_SIMULTANEOUSLY`
via [the CMake switch](advanced/configuration-guide.md)

## Solving the error `MEPOO__MEMPOOL_GETCHUNK_POOL_IS_RUNNING_OUT_OF_CHUNKS`

Possible solutions are one of the following:

1. Increase [memory configuration of RouDi](advanced/configuration-guide.md)
mossmaurice marked this conversation as resolved.
Show resolved Hide resolved
1. Make sure that the receiving frequency is higher than the publishing one
1. Reduce `SubscriberOptions::queueCapacity` to hold less samples in the mempool on the subscriber side
1. Consider using the [blocking publisher feature](../../iceoryx_examples/iceoptions/). The usage needs to be
considered carefully as other subscribers will not receive samples while the publisher is blocked.

!!! caution
The usage of the blocking publisher feature needs to be considered carefully as other subscribers will not receive
samples while the publisher is blocked.

## iox-roudi fails on startup

An error message like
Expand Down
9 changes: 8 additions & 1 deletion doc/website/getting-started/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,16 @@ following conditions:
to process local constructs, no dynamic allocators
- the data structure has to be relocatable and therefore must not internally use pointers/references
- no virtual member functions
- must not rely on the destructor being called

!!! note
Most of the STL types cannot be used, but we reimplemented some of them so that they meet the conditions above.
The sample might be released from a process without write access to the shared memory. Therefore the
destructor is not called when a sample is released. All data types must be either trivially destructible or must
at least not rely on the destructor being called. The latter is the case for the iceoryx containers like
`cxx::vector` where only the inner type must be trivially destructible.

!!! info
Most of the STL types cannot be used, but some are reimplemented to meet the conditions above.
You can find an overview [here](../../../iceoryx_hoofs/README.md#cxx).

### Publisher
Expand Down