Open kazu-321 opened 11 months ago
micro cdrにまだ問題が残ってて、ビルドが通らないのでやっぱりだめでした
もろもろの問題を解決させたplatformを公開しました。 mbed studioを開き、mros2-mbedをimport、platformを一度削除して、これを入れればmbed studioで編集から書き込みまですべてできるようになります。 https://github.com/NITIC-Robot-Club/mros2-platform.git
mbed studioのビルドする際に使われているスクリプトを変えることで対応もできますが、ほかのプロジェクトに影響が出てしまうのと、mros2の環境を汚さない利点がなくなってしまうのでやりませんでした。 詳しいことは記事を書く予定なのでそれを参照してください。
あとでちゃんとforkしたのをプルリクします。
lwip周りでエラー出ちゃいました。 mros2関係を一度なくしてmbed-osだけでコンパイルすれば通るのですが、mros2+embeddedRTPSとかを入れるとコンパイル失敗します。
Building project mros2test (NUCLEO_F767ZI, ARMC6)
Scan: mros2test
Compile [ 24.2%]: lwip_altcp_alloc.c
Compile [ 24.3%]: lwip_ip.c
Compile [ 24.4%]: lwip_netdb.c
[Fatal Error] sockets.h@50,10: 'lwip/errno.h' file not found
[ERROR] In file included from ./mbed-os/connectivity/lwipstack/lwip/src/api/lwip_netdb.c:38:
In file included from ./mbed-os/connectivity/lwipstack/lwip/src/include/lwip/netdb.h:43:
./mbed-os/connectivity/lwipstack/lwip/src/include/lwip/sockets.h:50:10: fatal error: 'lwip/errno.h' file not found
#include "lwip/errno.h"
^~~~~~~~~~~~~~
1 error generated.
mbed-osを入れ直したりしてもmros2関係を入れるとこれが出てしまいます。。。
おしえてください。 embeddedRTPSというディレクトリが2個存在する理由を教えていただきたいです。
mROS 2 mbed をmbed studioで環境構築する を参考に試そうとしている中で疑問に思いました。
ほんらいビルドのタイミングでmros2内にダウンロードされるのですが、mbed stusioだとダウンロード先の指定が難しかったからです。
ご回答ありがとうございました。
そして別件のご報告です。こちらに失礼します。 Mbed Studio(windows版)でbuildしたbinファイルでpub/subが動きました。 こちらmros2-mbed (on mbed studio) のチュートリアルを参考にいたしました。 お陰様でbuild環境の選択肢が増えましたし、私自身も過去にMbed studioでのbuildにチャレンジしたのですが、うまくいかずに諦めておりました。今回コンパイルエラーが出ている理由もはっきりとしました。感謝です。
Versionは下図の通りです。
ログです。
最後にROS 2 Humble側ですが、次の通りです。 OS : Ubuntu 22.04.4 LTS ( JetPack 6.0 Developer Preview (DP) ) Hardware : NVIDIA Jetson Orin Nano Developer Kit
以上。
mbed studioでこのリポジトリをimportし、mbed studioで環境を作ろうとしたのですが、色々問題があったので報告します。
rtpsがない
https://github.com/mROS-base/embeddedRTPS のincludeの中身をprogramのplatform/rtps ないに設置(config.hしかないところ) srcとthirdpartをmros2/embeddedRTPS/ ないに設置
string.hが読み込めない
これはサードパーティーの問題で、mbedのstringとかぶっているので、 /mros2/embeddedRTPS/thirdparty/Micro-CDR/include/ucdr/types/ ないのstring.hをucdr_string.hに改名 /mros2/embeddedRTPS/thirdparty/Micro-CDR/src/c/types ないのstring.cを ucdr_string.cに改名 /mros2/embeddedRTPS/thirdparty/Micro-CDR/include/ucdr/microcdr.hの 24行目
include <ucdr/types/string.h>を
include <ucdr/types/ucdr_string.h>に変更
でエラーはでなくなります.