ゆきふるまくらの。
ゆきまくらによるゆきまくらのための趣味の塊。
機械に恋する野郎の日常。
ブログ移設しました!
ラベル
r2r
の投稿を表示しています。
すべての投稿を表示
ラベル
r2r
の投稿を表示しています。
すべての投稿を表示
2023年6月9日金曜日
[備忘録]r2rの購読処理コールバックで重い処理を書くと"error TrySendError { kind: Full }"が出る話
この投稿では別に表題の具体的な対策を述べるつもりはありません。 ただ、身に起こったことを共有するだけです。 シチュエーションとしてはカメラノードから30hzぐらいで画像データがpubされているのを r2rのros2アプリで購読しそのコールバック内でそこそこ重たい処理をブロッキングして実行しているわけです。 どうも、そうすると購読スレッドが止まってしまい(まぁそうだよな)、 ``` error TrySendError { kind: Full } ``` が出力されていそう。
まぁなんで処理を逃がすか、非同期にするか(で対策できると思っているんだけど、実際はわからん)を工夫せなだめっぽい。
まだ非同期処理周りはRust勉強中はわけでキビシー(´・ω:;.:... がんばるしかねぇな
2023年6月6日火曜日
[備忘録]r2rをコンテナ環境下のROS2環境にてvscodeでデバック実行する
結論から言うと、あんまりスッキリしない解決策。 (有識者の方、ご意見ください...m(_ _)m) 1. まず、事前にROS2環境のコンテナを起動し、その中で、ROS環境変数を.bashrcに追記し、apt経由でrust-allパッケージをいれとく 2. vscodeを開き、コンテナをアタッチする。 3. Rustのプロジェクトを作り、それをvscodeでOpenしとく 3. .vscodeディレクトリ下のtasks.jsonとlaunch.jsonを以下のように設定する (rollingの部分はROSのディストリビューション次第、にんいのあぷりけーしょん名のところにアプリケーション名を入れる) tasks.json ``` { "version": "2.0.0", "tasks": [ { "label": "Build single Rust file", "type": "shell", "linux":{ "command": "source /opt/ros/rolling/setup.bash && cargo build --profile dev" }, "group": "build", "presentation": { "reveal": "always" } } ] } ``` launch.json ``` { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug Run", "sourceLanguages": [ "rust" ], // "terminal": "console", "preLaunchTask": "Build single Rust file", "program": "${workspaceRoot}/target/debug/にんいのあぷりけーしょん名", "args": [], "cwd": "${workspaceFolder}", "env": { "LD_LIBRARY_PATH":"/opt/ros/rolling/opt/rviz_ogre_vendor/lib:/opt/ros/rolling/lib" } } ] } ``` 4. F5を押してデバック実行 --- さて、実は前回の記事からブログの記事をMarkdownで執筆できるようにカイゼンしました。 MDくっそ楽ですね... Bloggerも標準で対応してくれればいいのになぁ... では ノシ
前の投稿
ホーム
登録:
投稿 (Atom)