ホーム » コンピュータ (ページ 46)

コンピュータ」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

FOLO robot

{CAPTION}

以前に参加した蟹ロボコンの講習会で実験用にもらった MapleSyrup と FOROを、IchigoJamで動くようにしてみた。

接続とマウント

接続は、こんな感じ。

{CAPTION}

ライントレース用のセンサーの取り付け。Rasbee TCRT5000 IR反射センサ

{CAPTION}最初の取り付け版(金属プレートの入手が難しい)

タミヤ 楽しい工作シリーズ No.157 の軸受部を FOLO 頭部接続部に穴を開けて、長めのシャフトで固定。
IchigoJam は、軸受の穴に結束バンドで固定。軸受の上面に両面テープを貼り、電池ボックスを固定。

ライントレース

10 'FOLO robot         | 腰モータが速くて失敗
20 A=IN()&6            | IN(3),IN(2)だけ残す
30 IF A=6 THEN B=2     | 黒黒→直進
40 IF A=4 THEN B=2+16  | 黒白→左直進
50 IF A=2 THEN B=2+32  | 白黒→右直進
60 IF A=0 THEN B=0     | 白白→停止
70 OUT B : WAIT 10     | 出力, 待ち
80 GOTO 20

問題点

足を歩行させる動きの効率の悪さから直進速度が遅いのに比べ、腰(足)を回転させる動きが速いので、すぐに(白,白)領域にセンサーが入って止まってしまう、もしくは境界で曲がりすぎる。

腰の動きを遅くしたいけど、OUT5はPWM命令を使えばモータの速度を落とせるけど、OUT6はPWM命令が使えない。ソフトウェア的に対応が必要。

改良版

10 'FOLO robot
20 A=IN()&6 : B=0      | IN(3),IN(2)だけ残す
30 IF A=4 THEN B=2+16  | 黒白→左直進
40 IF A=2 THEN B=2+32  | 白黒→右直進
50 IF A=6 THEN B=2     | 黒黒→直進 
60 OUT B : WAIT 1
70 B=B&3               | 方向回転モータは止める
80 OUT B : WAIT 4      | 出力, 待ち
90 GOTO 20
  • ライントレース動作になるためには、前進速度と曲がる速度を調整し、60行 WAIT 1 / 80行 WAIT 4(腰モータのデューティー比(約20%)が良かったかな。(前進はフルスピード設定)
  • 反射型光センサーは赤外線は反射・透過性が高いので、コースをコピー用紙にプリンタで黒印刷だと、プリンタの黒を認識しづらい。以下の動画では床板(黒)とコピー用紙(白)の境界で走行。
  • センサーが微妙なので、センサー周りに内側黒塗りの遮光カバーを付けている。(効果は不明)
  • FOLOは座高が高いため、歩行動作では体の揺れが大きい。このためセンサー・床間の距離が安定しにくい。光センサーをアナログ命令ANA()で取得しても、閾値設定が難しい。
    PCN福井さんの車体では、センサーを床で滑らせて距離を一定に保つことを考えているみたい。

apachectl graceful で segmentation fault

以前からたまに発生していた、夜中になると、Webサーバが停止するトラブル。

確認をすると、logrotate あたりの cron で、“apachectl graceful”を実行すると、apache2 の子プロセスが、segmentation fault で落ちている。

最初は、エラーメッセージに geoip あたりのモジュールのエラーが出ていたので、いろいろ調べたけど改善せず。根本の原因ではなかったようで、更新をダメ元でかけているうちに出なくなった。

以前に、同じ症状で、 php7.2 → php7.0 にしていたけど、改めて最新パッケージにするために、最新の php7.3 に切り替える。これにより、graceful をかけても、落ちなくなった。

$ sudo aptitude install php7.3 php7.3-cli php7.3-common
     php7.3-curl php7.3-gd php7.3-imap php7.3-json
     php7.3-mbstring php7.3-mysql
$ sudo a2dismod php7.0
$ sudo a2enmod php7.3
$ sudo /etc/init.d/apache2 restart

しかし、最新の php7.3 にあげたら、wordpress の投稿時に、以下のようなメッセージが表示されるようになった。PHPのcompact()の説明にも、php7.3から E_NOTICE を出すようになったと書いてある。

Notice: compact() : Undefined variable:...

エラー警告は消したくないけど、デバッグモードを外す。

/* /etc/wordpress/config-default.php */
define( 'WP_DEBUG' , false ) ;

悪質なMegaIndexによるcrawl

なんか、Webのアクセスが多いと思ったら、マナーの悪いサーチエンジンMegaIndexによるクローラ。アクセス元 176.9.146.74 を調べると、所在地はアメリカだけど、UserAgent をみると、”Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler)” なんて書いてあるから、ロシアかな。

robots.txt に、”UserAgent: MegaIndex … Disallow /”を書き加え、参考にしたサイトに記載のあった他の悪質クローラも拒否る。(といっても robots.txt 無視されたら効果ないし。)

中国・ロシアとかは、geoip を使いIPアドレスを国単位で拒否しているけど、所在がアメリカじゃあなぁ…User-Agent でも弾いておくか。

Debian25周年

Debian/GNU Linux も25周年らしい。Linuxを使い始めたのは、0.98 の頃だったと思うけど フロッピーディスク 15枚ぐらいでインストールしてたと思う。途中からアップデートの容易さから、ディストリビューションを Debian に乗り換えたのは、Blog が残ってる 2003 年頃だと思う。Woody あたりか。potato も使った覚えが微妙にあるし、もう少し前かなぁ。

mineo回線のdocomoプラン切り替え

お兄ちゃんは帰省してくると、大学内のシステムに接続する時に、自宅ルータと大学のVPNルータとアドレスが重複するため繋がらない問題があった。このため、帰省中にレポート提出…だと、WiFiルータを貸していたりしたけどやっぱり不便。

携帯でテザリングすれば簡単なんだけど、mineoのauプランは、携帯でのテザリングを許可していない。ということで、テザリグが許可されているdocomoプランへの変更となった。

同じmineoの中のプラン変更といえど、番号を変えないためには新しくSIMを発行して、MNP と同じ手順を踏む必要があって面倒だったけど、無事開通。

夜中にapacheが落ちる

昨日、今日と、夜中に apache が落ちている現象が発生。以前にも同じようなトラブルが起こったよなぁ…と blog に書いた覚えがあって、検索をかけようとしたら、WordPressの検索機能が動かない。phpのmbstringが無いのが原因だった。php のバージョンを php7.0 → php7.2 に変更した際に、php7.2-mbstringが入っていなかったのが原因。”aptitude install php7.2-mbstring”を実行。

php7.2→php7.0に戻す

色々と試すと、apache2 の reload 時に、”apache2ctl graceful” を実行すると、以下のようなエラーが出ている。
Aug  9 18:48:39 perrine kernel: [xxx] apache2[xxx]: segfault at ...
   error 15 in mbstring.so[xxx]
php7.x-mbstring が原因かと思い、消したりしたけど、別のエラーが出る。色々試しても改善せず、ひとまず、php7.2→php7.0 を行う。 そのくせ、php7.0 で動かなかった wordpress の 画像回転とかの php-gd 使ったのが動くようになってるし。

php7.0→php7.2

phpを、php5→php7.0 に更新してから、WordPress の画像回転編集ができなくなっていたが、php7.2 では、使っていた wordpress のプラグインで警告が表示されるのでやめていたけど、php7.2 に更新作業を行った。

警告がでるのが、php のコードを記述できる phpcode widget だった。この機能を使っていたのは、include( “…html” ) を使いたかったため。今回、include ではなく、iframe を使うようにすることで、phpcode を使わないようにした。

ただ、このphpcode のプラグインをアンインストールしようとすると、エラーがでてアンインストールが失敗する。しかたがないので、一時的に php7.2 → php7.0 に切り替えて、phpcode をアンインストールして、再び php7.0 → php7.2 に戻す必要があった。

朝の自動めざましじゃんけんを停止

朝の「めざましじゃんけん」でサーバから赤外線リモコン信号を送ることで、自動で青・赤・緑・黄のボタンを押すプログラムを動かしていた。でも、最近は朝起きた子供が、見たくないニュースやってるとチャンネルを替えるので、機能していないし、週末の応募操作を面倒で忘れるので、自動「めざましじゃんけん」機能を止めた。

一時期は、毎週応募していたけど、最終的に1度もあたらんかったなぁ….

www.googleapis.comの名前引き

自宅では、予定を google-home で自動で喋らせたりするために、gcalcli などのコマンドを使っている。しかし、最近エラーで予定取得に失敗することが増えた。python 関係のライブラリの更新の不整合かと思っていたが、どうも www.googleapis.com の問題のよう。

gcalcli がエラーになったり、成功したりと再現性がないので、エラーメッセージで www.googleapis.com に接続できないっていうし、”nslookup www.googleapis.com” を実行すると、名前引きに失敗する。しかしながら、”nslookup www.googleapis.com 8.8.8.8″ なら成功する。何度か調べていると、通常の nslookup でも名前がひけたりする。意味不明。

bind の設定は….以前、セキュリティ対策で導入した、”OpenDNS (Cisco Umbrella)”を使うようになっている。これが原因か…。bindの設定を修正して、安定して gcalcli が動くようになったかな。
# Cisco Umbrella は、怪しいサイトの可能性の場合、名前引きを失敗させる Open な DNS

Google API を使った攻撃があるのか? OpenDNS にグレー判定されてんの?

暑さの測定

以前購入した、Raspberry-Pi 内蔵の MZ-80C のミニチュアは、温度・湿度・気圧のセンサーを付けて、2Fのトイレに設置していたけど、WiFiが若干不安定だったので、常時サーバで記録はしていなかった。しかし、この暑さなので、エアコンの無い部屋の温度を測定したかったので、改めて設定してみた。

Raspberry-Pi の inetd の echo サーバの所に温度測定スクリプトを記載して、”/usr/bin/nc raspberry-pi 7″ で測定できるように設定し、munin 用のデータ取得スクリプトを書いて設定。このクソ暑い温度を測ってみた。

家の西側の2会のトイレに設置しているので、夕方が最高温度で、家の中でも34℃越え。湿度は、トイレのドアを開放すると、大きく変化するようだ。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報