Nucleo-F303 mbedプロジェクトのローカルビルド
Nucleo-F303はmbed開発環境が利用できてブレボに刺さるSTM32マイコンボードという優れモノです。
ひとついただけないのは、mbed環境というのがオンラインIDEであることです…。
そこでローカルビルド環境を模索してみました。
いくつか試しましたが、結局EmBitz(https://www.embitz.org/)に落ち着きました。
mbedからEmBlocks(EmBitzの前身)向けにエクスポートし、EmBitzでインポートします。
そのままビルドすると、こんな警告がでてelfファイルが生成されません。
linker input file unused because linking not done
リンカオプションをいじる必要があります。
Build optionsのLinker settingsタブのLinker Flags - Othersのボックスの1行目にある-cを削除します。
また、Nucleo-F303の場合は、Serialクラスを使うとなぜかWWDG_IRQHandlerにハマるので、RawSerialクラスを使用します。
mbedのオンラインコンパイラは時々応答しなくなることがあったので、これでようやく安心して開発できるようになりました!
SW4STM32でF3のSPLがロードできない問題
System Workbench for STM32(以下SW4STM32)でSTM32F3のプロジェクトを作成する際、Standard Peripheral Library(以下SPL)が利用できないという問題があります。
具体的にはこんなエラーです。
Internal Error: http://www.st.com/resource/en/firmware/stm32f30x_dsp_stdperiph_lib_v123%2ezip
いわゆるリンク切れです。
このウィザードを使わなくとも、SPLをダウンロードして然るべき場所に置けばSW4STM32が読み込んでくれるはずです。
SPLを手動でダウンロードします。
"en.stm32f30x_dsp_stdperiph_lib.zip"というファイルがダウンロードできると思います。
このzipファイルを"stm32f30x_dsp_stdperiph_lib_v123.zip"にリネームし次の場所に配置します。
C:\Users\(ユーザ名)\AppData\Roaming\Ac6\SW4STM32\firmwares
さらにその場で展開し、"STM32F30x_DSP_StdPeriph_Lib_V1.2.3"フォルダが作成されるのを確認します。
あとはSW4STM32が認識してくれるようになります。
ROS Kinetic + Gazebo 7.0で簡単なロボットシミュレーション
ROS Kinetic + Gazebo 7.0で簡単なロボットシミュレーションをしようと、こちらのサイトを参考にさせて頂きました。
ところが。
ERROR: cannot launch node of type [controller_manager/spawner]: controller_manager
これはros-kinetic-ros-controlとros-kinetic-ros-controllersが足りないためでしたので、インストールすれば解決しました。
sudo apt-get install ros-kinetic-ros-control ros-kinetic-ros-controllers
つぎはこれ。
Controller Spawner couldn't find the expected controller_manager ROS interface.
と言われ、diff_drive_controllerが機能せずGazebo上でロボットを動かせませんでした。
このWARNには苦戦しましたが、結局またパッケージが足りないオチでした。インストールします。
sudo apt-get install ros-kinetic-gazebo-ros-control
ということでようやく動きました。