質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

1回答

2434閲覧

C++でマイコンに命令を送るプログラムでのエラー(Boost関連)、read_some() Error = system:995

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2016/07/22 12:21

編集2016/07/22 13:48

大学でC++を学んだレベルの初心者です。

現在、Roombaを制御するプログラムを作成しようとしています。
参考に以下のページで公開されているプロジェクトを利用しています。
http://chicklab.blog84.fc2.com/blog-entry-34.html

まず、RoombaとPCの接続テストを行うために、「clean」命令を送ると、問題なくRoombaが掃除を開始しました。(このときのソースを①とします)

次に、Roombaを自由に動かす練習のため、「drive」命令を送ると、エラーが発生しました。エラーの内容は以下です。

コンソール画面にread_some() Error = system:995と表示されます。
そして、コンソール画面が強制的に閉じられ、
Unhandled exception at at 0x74C0C54F in RoombaSerialTest.exe : Microsoft C++ exception.
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorboost::system::system_error> at memory location 0x00D9FAF0.
と表示されます。

そして、一度成功した①のソースとまったく同じものをもう一度実行しようとすると、同じエラーが発生するようになってしました。

仕方がないので再び上記URLからプロジェクトをDLし、環境構築をしなおし①のソースを実行してみたのですが、また同じエラーがでてしまいました。
Boostの追加はプロジェクトごとにNuGetを利用しているので、再びプロジェクトをDLした際に入れなおしています。

Roombaのリセット(電源ボタン長押しと設定されています)も行ってみたのですが、改善されませんでした。

なぜ一度通っていたソースが通らなくなってしまったんでしょうか。

初心者のため、質問の仕方も下手ですみません。
タイトルももっとわかりやすいものをつけたかったのですが、エラーの状況がわからず、わかりづらいものになってしまいました。
何かヒントになる助言でもいいのでいただけたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pi-chan

2016/07/22 13:42

それはPC側の問題ではなく、プログラムのバグか何かでRoomba側が正常に通信できなくなってしまったからでは? Roombaの電源を入れ直してリセットすれば、再インストールしなくても①が動くように思いますけど。エラー発生時にハードウェア側のリセットが必要になるのは、組み込み系では良くあることです。エラーの原因までは分かりませんけれども。
退会済みユーザー

退会済みユーザー

2016/07/22 13:47

ご回答ありがとうございます。 記述し忘れましたが、随時Roombaのリセット(電源ボタン長押しと設定されています)を行っています。 一度バッテリー等も抜いてみたほうがいいかも知れませんね...。
guest

回答1

0

余程詳細な情報をご連携頂かないと、誰もエラーの原因までは回答できないと思いますが・・・

先ほど少し情報の追加依頼欄に記載しましたが、組み込み系の場合は、エラー発生時にハードウェア的なリセットの必要になるケースが多いので、もしリセットボタンが無いなら電源を切って少しおいてから電源を再投入してみてください。

通常、電源投入時にハードウェアの初期化をする作りになっているので、大抵は回復します。

それと、エラーの原因ですが、参考にされているプロジェクトのプログラムと、ご使用のRoombaはバージョンが合っていますか?

家電製品の多くは、見た目は全く同じでも、数ロット単位で内部仕様がコロコロと変わることも珍しくありません。とりわけRoombaのような製品にはその傾向が強いと思います。

コスト削減の為、数ヶ月すると基盤上に実装されている半導体部品は数が激減します。また、不具合対応や省電力化の為に、内部のファームウェア等もバージョンアップします。

ですから、以前のモデルではうまく動いた制御プログラムがエラーを発生するようになってしまう場合も少なくないです。

製品内部の詳細な仕様が分かり、デバッグに必要なツール類が完備していないと、自力でプログラムを修正するのは難しいかもしれないですね。


<追記>
m1kanch0rさんが参考になさった情報は2011年当時の型番が500というシリーズのものですね。

そのプログラムを作成するに際して参考にした仕様書が今でも公開されていますね。
型番500の内部仕様

同様に、もう少し新しい仕様書も公開されていました。
こちらはVer2のものです

ひょっとしたら、上記二つを比較して、エラーの発生源になっている関数に関連した仕様上の差異を見つけられればプログラム修正の糸口が掴めるかもしれません。

まずは、ご使用のRoombaの型番を調べ「Roomba spec XXX」(XXXは型番)などのキーワードで検索すると、もっと情報が得られるかもしれません。

投稿2016/07/22 13:59

編集2016/07/22 14:22
pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/07/25 15:56

お返事が遅くなってしまい申し訳ございません。 ルンバのリセットについて リセットやバッテリーの入れ替え等をもう一度行ってみたのですが、改善されませんでした。 ルンバのバージョンについて 自分が使用しているルンバは780という型です。型の違いについてなのですが、以前JavaでRoombaの解析をしている方に聞いたところ、780は500の仕様とLEDの部分以外は変更がないと聞いたので、これに関しては大丈夫そうです。(iRobot社の方と交流もある方なので間違いはなさそうです。) ここからが本題で…。 色々試しているときに、ブレッドボードからFT232RLをはずしてみると、24番のGNDの基盤のピンが折れていることがわかりました。 http://akizukidenshi.com/download/kairo/%E3%83%87%E3%83%BC%E3%82%BF/RS232%E3%83%BBUSB%E9%96%A2%E4%BF%82/L023_FT232RL%20USB%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB.pdf 以前clean命令を実行したときに少しFT232RLに力が加わってしまった時があり、その時に折れたものと考えられます。 現在新しいFT232RLを発注中のためまだわかりませんが、これが原因ですかね…。
pi-chan

2016/07/25 22:11

おやおや… 「GNDの基盤のピンが折れている」とは! GNDが浮いた状態だと、出力信号のレベルが安定しないので、信号のパターンによっては規定のレベルに達しないなど不正な信号になってしまう場合があるので、可能性は高いですね。 新品のICを発注済みなのですし、もしハンダゴテをお持ちなら、ピンの折れ方にも依りますが折れた根本の部分をハンダで仮付けして動作確認してみることも出来るかもしれませんね。熱を加え過ぎるとICが壊れますが…昔々にそんなことをやった記憶があります。
退会済みユーザー

退会済みユーザー

2016/07/27 03:36

新しいFT232RLが届いたのですが、やはり改善されませんでした…。 新たに気づいたことはcleanやdrive命令を送るときにエラーを吐いているのかと思っていたのですが、どうやらプログラム終了時にエラーを吐いているようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問