mROS-base / mros2-mbed

reference implementation of mROS 2 for Mbed OS
Apache License 2.0
51 stars 7 forks source link

mbed studioのエラーの解決 #57

Open kazu-321 opened 11 months ago

kazu-321 commented 11 months ago

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>に変更

でエラーはでなくなります.

kazu-321 commented 11 months ago

micro cdrにまだ問題が残ってて、ビルドが通らないのでやっぱりだめでした

kazu-321 commented 7 months ago

もろもろの問題を解決させたplatformを公開しました。 mbed studioを開き、mros2-mbedをimport、platformを一度削除して、これを入れればmbed studioで編集から書き込みまですべてできるようになります。 https://github.com/NITIC-Robot-Club/mros2-platform.git

mbed studioのビルドする際に使われているスクリプトを変えることで対応もできますが、ほかのプロジェクトに影響が出てしまうのと、mros2の環境を汚さない利点がなくなってしまうのでやりませんでした。 詳しいことは記事を書く予定なのでそれを参照してください。

kazu-321 commented 7 months ago

あとでちゃんとforkしたのをプルリクします。

kazu-321 commented 7 months ago

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関係を入れるとこれが出てしまいます。。。

yamati-kz commented 6 months ago

おしえてください。 embeddedRTPSというディレクトリが2個存在する理由を教えていただきたいです。

mROS 2 mbed をmbed studioで環境構築する を参考に試そうとしている中で疑問に思いました。

mros2_mbedStudio000

kazu-321 commented 6 months ago

ほんらいビルドのタイミングでmros2内にダウンロードされるのですが、mbed stusioだとダウンロード先の指定が難しかったからです。

yamati-kz commented 6 months ago

ご回答ありがとうございました。

そして別件のご報告です。こちらに失礼します。 Mbed Studio(windows版)でbuildしたbinファイルでpub/subが動きました。 こちらmros2-mbed (on mbed studio) のチュートリアルを参考にいたしました。 お陰様でbuild環境の選択肢が増えましたし、私自身も過去にMbed studioでのbuildにチャレンジしたのですが、うまくいかずに諦めておりました。今回コンパイルエラーが出ている理由もはっきりとしました。感謝です。

Versionは下図の通りです。 mbed studio 1 4 5

ログです。 image image

最後にROS 2 Humble側ですが、次の通りです。 OS : Ubuntu 22.04.4 LTS ( JetPack 6.0 Developer Preview (DP) ) Hardware : NVIDIA Jetson Orin Nano Developer Kit

以上。