STMデバッグ時にやることリスト

(環境:SW4STM32+ST-LinkV2.1)

  1. マイコンに別電源を供給した上でST-Linkと接続(LEDがカラフルになる).ここでだめそうならST-Link Utilityで接続だけ確認してみる.

  2. SW4STM32を開く→CubeMXデータをインポート

  3. indexerの設定を切る.(project >> Properties >> C/C++ General >> Indexer) 出典は海外フォーラムより.

  4. Expressionの設定をする.(Window >> Show view >> Expression) この辺の便利機能はガレスタ大先生がやってくれてる.

現在追記中

Linuxにうつつを抜かしていたためマイコンデバッグですっかり足をすくわれてしまったトホホ

TexStudioのエラー対処

どうもrealteckです.

あけましておめでとうございます.

卒論でめちゃくちゃ忙しいときに限って,Mac OSのTexStudioがエラーしたので,備忘録的に更新.

症状

・TexStudio起動時にフルスクリーンに遷移,このときにフリーズ

応急処置

・強制終了から抜ける

え,え,先日まで動いてたのにいきなりなんで?となって,設定プロファイルを消したりと夜中に,2,3時間格闘

しかし動かない.

リ「まあいいや,今日は寝て,明日やろう」

こういうシステムバグで詰みそうなときは,一旦寝るに限る.

そしてエラーログを必ず見る!(朝一で起き抜けに確認

リ「んんーー!!なんかQtがネットアクセスしようとして,無限ループしますぞwww」

(TexStudioはマルチプラットフォーム対応のため,Qtベースで開発されている)

試しにwifi接続を切ってオフラインで実行...いける

ひょっとしてTexStudio内のネットアクセスが原因か?と思い,設定項目を確認.

しかしアップデートぐらいしか,ネットに繋ぐようなものはない.

リ「とりあえず,起動時のアプデ確認切ってみます??」

...オンラインでも起動した

応急処置 その2

アップデート確認の機能を切る

一体全体,TexStudioのアップデート確認用のサーバが死んでるのか,こっちのネット回線がいけないのか,プロキシ関連なのか.

まあ困ったときはエラーログだよね,と自分に言い聞かせ,おせち料理を食べにむかうのであった,,,

ぽいちゃ

11月のたわごと

リアルテックですどうもこんにちわ,今日は文化の日なんですね.本当は記事なんて書いてる余裕はないけど,文化の日ぐらい文化的な活動をしておこうというアレ.ちなみにラボから書いてます.

とにもかくにも,今年は表に出せない頼まれごとや研究案件が増えたので,あまり自分のやりたいことができなかったなあといった感じ.特に6月以降はいろいろ抱えながら過ごして,ROBO-ONE 29th?にもやっとこさ,顔を出したのでした,今回のROBO-ONEはMAXIMUM JOKERで先輩と出場するものの,無線がトラブって痙攣を起こして,予選のコースから落下.おまけに頭までもげて破損してしまいました...とれぇどまぁくがぁ...

最近はSTM32をいじっていて,HALドライバは超絶使いやすいなあと身にしみて感じています.春先に向けて,かなり基板設計をしなければならなそうなので,そして論文提出も抱えているので,神戸行きは無理です,と最初に告知しておきます(加速研究会の皆さんごめんなさい)

これからはFreeRTOSいじりながら,しばらく土方の開発とか設計をやろうかなあと...いや時間との勝負かな...

そんな感じで,個人的な活動は全くできてませんが,日常生活はロボットに関わる案件で溢れています.

春先に向けての目標がサーボモータを作ること(モーター駆動とは言っていない)になったので,ロバストコントローラー基板とかがもし世の中に出ることになったら,リアルテックのことを思い出してくれると幸いです.

それではぽいちゃ,とりっくおあとりーと,お菓子は全部あげるからいたずらさせて欲しいandされたいリアルテックでした.

チョー久々に進捗などについて

とてもお久しぶりです.realteckです.

いろいろあってしばらく記事が書けませんでした.

2月以降はこんなことしてました.

3月:大道芸ロボット(ロボットグランプリ)

4月:ラボ生活が始まる.

5月:いろいろあってお引越し

6月:イマココ

ラボになれるのに数ヶ月+引っ越しで書く時間が取るに取れなかったですね.

最近になってちょぼちょぼ書きたい話が出てきたので,気まぐれに更新した次第です.いやはや習慣化するのは非常に大変.

ロボットはといえば全然いじれてません.ただ何もしないのも良くないと,4月以降はコツコツ情報収集や自作サーボ基板の設計,制御アルゴリズムなどをすこしづついじっていました.週に5日ぐらいは,1日1時間ほど時間をとってちまちまやれていた気がします.

今はまた新型機が作りたくなったので,しっかりと本腰を据えて要求性能を検討しています.これは「こうやって動く」とか「これができるようにする」という行動目標を大きく打ち立てて,そこから逆算して必要スペックを割り出す作業です.というのも今までは「この機構を使う」「この構造を使う」と方法論が先行していたので,それはマズいと思ったからです.なぜならこれでは完成した時点で目的が終了してしまい,動きの部分も含めた制作にはならないからです.「将来的にこの機構は変えられるようにしよう」と拡張性を考えても,目標とする形がないから変えようもないのです.と,ここに気づくのにまた随分と時間を費やしてしまいました.

以前,某氏とFreeScaleマイコンをSTMリンクからデバッグするといった件,まだ出来ていません,すみません.さっさとマイコン買えばいいのに,まだ発注書けられていないヘタレちゃんなのです.そんなんじゃ婚期も逃しちゃうぞ!(爆)

意外と離散系の制御則の話とか,ハイブリッドモデリングでロボットの状態が表現できる話とか,面白いねと言われることを研究の傍らに計算してたりするので,そういう話ができたらいいのですが,次に書くのはまた気まぐれですね.少なくともまだしばらくはロボットにさわれないので,内容もそういうことになります.

以下もっと個人的な話

・いろいろあって,いろいろ始まって,いろいろ巻き込まれ中(笑)

・研究はカルマンフィルタ(UKF)やってます.後半戦ではモデル予測制御(MPC)になります.

・モータにかけるPWM信号のDuty比が無負荷回転数出力に対して線形になるような制御則を組んだりしてました.

(シミュレーション上は出来ました.キーワード:ディジタル制御)

・今の僕はMATLABシミュレーションおじさんです.※ただしtoolboxは使っていない.

・Eagle先生の修行をしたら,回路設計のスピードがちょっとだけあがりました.

・最近はドールがほしいです.

・てかドール系ロボットが作りたいです.

・ドール沼ってこうして引きずり込まれるんですね.

今年のROBO-ONEは行けるかわかりませんが,オフ会主催しろと某院生にせがまれるので主催します.

次にいつかけるかわかりませんが,また次回ぽいちゃ

反省点 (ROBO-ONE 28th in つくば 行ってきた)

こんにちはrealteckです。

もう大会が終わって1週間半ですが、少しずつ自分の中で整理がついてきたので、まとめていこうと思います。

とりあえず今回も予選自動化を目指してセンサーの実装をしていました。予選当日の朝10時の時点でrcb-3に3軸の絶対角(Z軸のみ相対角)を読み取らせるまで行きましたが、そこで時すでに時間切れ。結局は前回の予選からちょっとだけモーションを補正したロボットで頑張ることになりました。

まあ、結果はまたも予選落ちで、またも自分自身の機体での決勝トーナメント進出はおあずけとなりました。


そんなROBO-ONEの前後でいろいろな人と話して、結局自分の時間のかけ方が下手だったのかな?ということに気づけた気がします。今は生活習慣を改善していて、タスク管理用にソフトを導入してみたり、定時での登校、下校を心がけたりして、なんとかロボットに毎日手をかけられるようになりました。それでも時間にしてほんの僅かですが・・・。

タスク管理ソフトを導入して気づいたのは、僕が1週間でやろうとしていることが、結構多かったこと。おかげで仕事量のフィードバックができるようになったので、今は自分に降っている仕事をなんとか減らしている状態です。

結構ロボトレースに参加すると安請け合いしてしまったのが、ここに来て仇になっています。それが終わればロボメカのことも無くなるので、すでにシフトしつつある研究にも、本腰を入れられそうです。

早くロボメカの加工機担当変わってくれよ・・・それが先輩からの切実な願いだ・・・

それではまた次回。

Xenomai導入まとめ(備忘録)

どうもrealteckです。

今回は今やってる、Linux(Ubuntu)へのXenomaiパッチ当ての備忘録を書き残します。あくまで自分のために書いているので、何かあっても当方で責任は負えません。ご容赦ください。


以下Ubuntu 14.04 LTSにて

①対象とするカーネルとXenomaiバージョンの選定

・インストール当初のUbuntuのバージョンは3.13.0-24

・(このときの)XenomaiのI-pipe(パッチ当て用のツールとでも思えばいい)がlinuxのv3系では3.18.20までなので、それ以下で最大のものを選択する。v4系でもいいが・・・Ubuntu上での安定動作は謎。一度安定動作を確認したいときは手順②へ。動作に不安がない、またはmenuconfigの設定ができる自信があるなら③へ。

②後のconfigに備えて一度カーネルをアップデート。(参考にしたサイト Hisakazu's Programming Notes より)

・以下のサイトにて、Ubuntuの様々なLinux kernelが存在する。

 http://kernel.ubuntu.com/~kernel-ppa/mainline/

 ちなみにUbuntuのバージョンごとのコードネームは公式HP「Ubuntuとは」に記載。

・14.04はコードネームはTrusty Tahr。なのでv3.16.7-ckt23-trustyを選択しておく(cktの意味はわからない)。

・ホームディレクトリまたは適当なフォルダを作っておき、headersとつくファイルでall.debと対応CPU.deb、またimageとつくファイルで対応CPU.debをダウンロードする。

 今回のCPUはintelの64bitなので、

 linux-headers-3.16.7-031607-generic_3.16.7-031607.201601280530_amd64.deb

 linux-headers-3.16.7-031607_3.16.7-031607.201601280530_all.deb

 linux-image-3.16.7-031607-generic_3.16.7-031607.201601280530_amd64.deb

 (genericとはUbuntuカーネル郡のこと。Ubuntu wiki内 「UbuntuStudioTips/Setup/Kernels」 に記載)

・以下のコマンドですべてのファイルを指定して、パッケージインストールをする。ここではdpkg -iを使うが、こうすることで複数バージョンを後からでも切り替えることができる上、後で当該カーネルを消せる利点がある。

 sudo dpkg -i linux-headers-3.16.7-*.deb linux-image-3.16.7-*.deb

  (ここではダウンロードした3ファイルが選べれば良いと思われ。)

・再起動後にsudo update-grubしましょう。

・もしこのバージョンアップしたカーネルで異常が出るなら、他のバージョンを選ぶ。カーネルを削除する際は以下のコマンド

 sudo apt-get remove linux-headers-3.16.7-* linux-image-3.16.7-*

・バージョン管理にはgitを使った賢いやり方もあるんだろうけど、僕gitは使えないんです・・・

余談:UbuntuはRT-Preemptパッチを当てたlowratencyというカーネルを用意している。当方で実験してみたが、intelのx64アーキのCPUならおそらくレイテンシは最大でも200usぐらいだと思う。なおUbuntuをリアルタイム向けに強化してUbuntuStdioという強力なツールも存在するため、簡単にそこそこのリアルタイムのPCを作りたいならこの選択が無難だ。

だって sudo apt-get install linux-lowlatency でリアルタイムカーネルに切り替えてくれるんだから・・・

③Xenomaiパッチ当て (参考にしたサイト jbohren.com, Xenomai 公式HPのインストールページ より)

・ホームディレクトリか適当なフォルダを別に作り、いくつかダウンロードする。

・その前にコンパイル用の下準備、リンク先の英語ページを鵜呑みにして以下のコマンドを実行した。

 sudo apt-get install kernel-package

 sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge

 sudo apt-get build-dep linux

 sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev

  (bzImageを作ってインストールしてもいいけど、めんどくさいのでfakerootでpkgを作るコマンドを実行する腹らしい)

・これが実行できない場合は、一度g++をダウンロードする。

 sudo apt-get install g++

・今後の処理を少し楽にするため、参考サイトに則って環境変数を作っておこう。ここでのLinuxバージョンやXenomaiのバージョンは予め選定してあったものを使用する。Xenomai3はリリースされて日が浅いが、いくつか追加になった機能が存在するらしい。怖い人はXenomai2系を選ぶといいだろう。以下はダウンロードするディレクトリで行っていく(pwdがあるため)。

 export linux_version=3.16.7 #選んだバージョンで

 export linux_tree=`pwd`/linux-$linux_version

 export xenomai_version=3.0.1 #選んだバージョンで

 export xenomai_root=`pwd`/xenomai-$xenomai_version

 export ipipe_version=3.16.7-x86-5 #linuxのバージョンに合わせたほうがいい

 export ipipe_root=`pwd`/ipipe-core-$ipipe_version.patch

・続いて各種ファイルのダウンロード。参考サイトとはリンクが違うので注意。僕がgitが使えれば(ry

 wget https://xenomai.org/downloads/xenomai/stable/xenomai-$xenomai_version.tar.bz2

 tar xvf xenomai-$xenomai_version.tar.bz2

 wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-$linux_version.tar.gz #バージョンによって拡張子が違うので注意

 tar xvf linux-$linux_version.tar.gz

 wget https://xenomai.org/downloads/ipipe/v3.x/x86/older/ipipe-core-$ipipe_version.patch

・configファイルを持ってくる。ここで②をしておくことが生きてくる(と思う)

 cp -vi /boot/config-`uname -r` $linux_tree/.config

・xenomaiのパッチ当て

 cd $linux_tree

 $xenomai_root/scripts/prepare-kernel.sh --arch=x86_64\ #--arch=には該当デバイスの形式を記述

 --adeos=`find $xenomai_root | grep $linux_version-x86`\ #xenomaiの該当は64bit,32bitでもx86らしい?

 --linux=$linux_tree --ipipe=$ipipe_root

 今時はarmにだって入っちゃうんだからすげえよ。

・コンフィグ

 make menuconfig #ここでXenomaiの設定をオンにする。詳しいやり方は参考サイトに譲る

 (ここでつまづくことがおおいので何度かやるといい。ミスったら展開したlinuxカーネルファイルだけを消して、もう一度展開。同様にconfigファイルのコピー以降の手順を繰り返す。)

debファイルの作成。

・ところでdebファイルはdebianベースのOSのみに許されたファイル形式なので、RedHat系のFedoraとか、他の郡のOSだと話はまた変わってくる。

debファイル作成

 export CONCURRENCY_LEVEL=4 #引数 -j4に相当、8とかでもいいと思う。プロセッサ次第。

 fakeroot make-kpkg --bzimage --initrd\

 --append-to-version=-xenomai-$xenomai_version kernel-image kernel-headers modules

・インストール

 cd ..

 sudo dpkg -i linux-image-*.deb linux-headers-*.deb

 これで導入完了です。再起動後にsudo update-grubしましょう。

これ以降のオプションがいろいろありますが、そこは他のサイトに譲ることにします。

arm系マイコンlinuxが入るなら手続きは同様なのかは調査中です。

またクロスコンパイルについてはまだ書く気が起きないので、もしその機会が来たらまた記すことにします。

(shファイル作ると楽かもね。)

あと1週間

お久しぶりです。realteckです。

何とはいえ、こんなに日が空いてしまいました。あけましてry

この2ヶ月で卒検配属先が(正式に)決まったり、カルマンフィルタの教科書を一冊読み切ったり、ipadのプログラムを制作していたり、東京オートサロンに行ったり、新型機のパーツを切り出そうと思ったら加工機が故障したりしてました。最近はPythonしたりLinuxのリアルタイム化したりMATLABしたりであまり二足歩行ロボットはやっていないです。とはいえ予選自動化を掲げる以上そろそろ本腰を上げねばならないと思ったので、作業開始することに。

以下既にツイッターにはあげていたりいなかったりする話。

・機体のマイナーチェンジ

2016-02-06 0時05分

2016-02-06 0時10分

いろいろいじりました。足は既に年明け前にパーツを切り終えてたんですが、胴体が年始までかかり、しかも切り出ししようとしたらNHKロボコン部隊にスケジュールをほとんど取られてしまうなど。善意で加工しつつスケジュールを譲っていたのですが、さすがに胴体の加工は間に合わないと判断し今回は断念。完成していればボディとかバッテリー周りはそんな感じになる予定でしたのに。

・ロボトレースとか

2016-02-06 0時18分

「熱田の杜」大会に出ないかと誘われて出ることに。見ればヒューマノイドもあるようで、「じゃあどっちにもエントリーしよーっと」とエントリーしてしまいました。しかしやればやるほど、ロボトレースは奥が深くて面白いです。

まだいろいろ見せられないよ。


津々浦々

・研究でカルマンフィルタに関わりつつお勉強をしている。

・なんかFPGAにもゴニョゴニョで関われそうなヨカーン。

・最近はもっぱらLinuxのリアルタイム化を担当中

・PCスティック+リアルタイムOS+ロボット制御用ソフトウェア とかいう選択肢

・トレーサーの設計に精を出しすぎて二足が進んでいない。

なんか年末のやりたいことリストといい、どちらかというとソフトメインで開発した方がいいことばかり。

・まだROBO-ONEにエントリーしていない。エントリーしよう。


個人的な話

ここ1ヶ月ほど体調を崩しっぱなしの生活をしていたようで、ちょうど昨日にはっきりとそれを自覚しました。そろそろ研究というフェーズにも向かわなければならない中で、こんな生活もいつまでもできないので、一度ロボットを開店休業状態にしようと思ってます。ブログの更新は続けますが、今後のメインの活動の場はネット上(と年2回のROBO-ONE(笑))のみに限定し、ソフトウェアや回路周り、また二足歩行ロボット用の周辺環境の開発を行っていきたいと思っています。関係各所の皆様にはこれからあまり外で会えないかもしれませんがご容赦ください。

さて、僕のはっきりした目標は予選自動化です。しかしなかなか今までそれに取り組めず、時間がかかってきました。というのもハードウェア開発に固執していたために、ここまでソフトまで手が回らなかったのが主な原因ですが、ここいらでハードウェアの開発に一度区切りを打ち、ソフトウェアやシミュレーションで思う存分やってみようと思います(趣味として続けるにも、シミュレーションベースの方が時間がかからないのでいろいろできると思う)。

これからしばらくは内職的なロボット開発にシフトし、喫緊の課題であるモーションエディタの製作、ロボット用のコントロールボード(ロボメカ用)とサーボ制御基板の開発をやっていけたらなあと思う次第です。あとはRTミドルウェア+コレオノイドをやりたいので、そういったことをしばらくしていると思います。

イムリミットは今年度の終わりまで、残り2ヶ月はロボットに研究に頑張ろうかと思う次第です。

ではではまた次回。