息子、国立二次試験を終える [4コマ漫画]
少し前のことですが、息子が国立二次試験受験から帰ってきました。航空宇宙がしたいということで、第一志望は地方国立大学です。
せっかく受験から開放されたというのに、あまり元気がない。英語の問題が難しかったのと、緊張で全く頭が働かず解答用紙が埋まらなかったと落ち込んでいます。
よくよく聞いてみると、英語以外はいつも通り解答できた模様。私から見れば、まったく問題ないレベル。しかも、いろいろ調べてみると、今年は英語が例年に比べ格段難しくなったようで、もはや英語の問題というより国語の問題に等しいとか。日本語でも難しい問題を英語で出すなよと…
第2志望の都内私立大学はもう受かっているので、父親としては第一志望に受かってほしいけど、親元を離れてしまうのは寂しいので第2志望でもいいかなと、ちょっと複雑な気分です。
(´・ω・`)
せっかく受験から開放されたというのに、あまり元気がない。英語の問題が難しかったのと、緊張で全く頭が働かず解答用紙が埋まらなかったと落ち込んでいます。
よくよく聞いてみると、英語以外はいつも通り解答できた模様。私から見れば、まったく問題ないレベル。しかも、いろいろ調べてみると、今年は英語が例年に比べ格段難しくなったようで、もはや英語の問題というより国語の問題に等しいとか。日本語でも難しい問題を英語で出すなよと…
第2志望の都内私立大学はもう受かっているので、父親としては第一志望に受かってほしいけど、親元を離れてしまうのは寂しいので第2志望でもいいかなと、ちょっと複雑な気分です。
(´・ω・`)
FRUITION Group 2 (国立大学二次試験対策 英語長文問題)
- 作者: 中央図書編集部
- 出版社/メーカー: 中央図書
- 発売日: 2020/02/29
- メディア: ペーパーバック
ドクブン50―長文を読んで覚える英文法 (英語の超人になる!アルク学参シリーズ)
- 出版社/メーカー: アルク
- 発売日: 2008/05/26
- メディア: 単行本
「AIきりたん」こいつは凄いぞ! [DTM(音楽)]
久しぶりの音楽ネタです。Twitterを漁っていると、最近やたら「AIきりたん」というキーワードに出くわすので、まとめサイトをちょっと覗いてみました。
https://note.com/amasaka/n/n3b816501ead3
つよすぎるAIシンガーAIきりたんの基本的な使い方。【無料】
この【無料】という魅惑的な言葉。早速ダウンロードして試してみました。
【STEP1】AIきりたんをダウンロードし解凍する
次のサイトから「AIきりたん」を入手できます。ダウンロードにサインイン等は必要ありません。圧縮ファイルでも900MB近いサイズ。ダウンロードに少し時間がかかります。
https://n3utrino.work/
インストーラーなどはないので、そのまま解凍するだけです。「NEUTRINO」というフォルダに”きりたん”が格納されています。
【STEP2】MusicScore をインストールする
「AIきりたん」は音声合成のみなので、作曲用ソフトが必要です。「MusicScore 3」というソフトを使ってみました。こちらも無料ダウンロード!サインインが必要です。
https://musescore.org/ja
【STEP3】MusicScoreで楽譜を作る
何から何まで無料でできてしまう世の中、こんなんで良いのですかねー。と思いながら、「かえるの歌」のスコアを入力。一つ一つの音符に歌詞を入れるのがちょっと面倒(音符クリック+Ctrl+Lで入力できます)ですが、「きりたん」に歌わせるには必須です。
【STEP4】作った楽譜を muscixml 形式で出力する
楽譜ができたら、「ファイル」→「エクスポート」で、非圧縮musicxml ファイルとして出力します。今回は、"kaeru.musicxml"として出力しました。
このファイルを、AIきりたんが格納されている「NEUTRINO」フォルダの”score”フォルダに置きます。
【STEP5】「AIきりたん」の設定ファイルを編集する
次に”Run.bat”を開いて、6行目の「set BASENAME=sample1」を「set BASENAME=kaeru」に変更します。ちなみに、”set MODELDIR=KIRITAN” を YOKO にかえると熟年おばさんの声で合成できます。
^^;
【STEP6】「AIきりたん」で音声合成する
それができたら、”Run.bat”をクリックして起動します。するとコマンドプロンプトが開いて何やら動き始めます。
コマンドプロンプトが閉じたら、「NEUTRINO」フォルダの”output”フォルダに”kaeru_syn.wav”というファイルが出来上がります。これが音声合成の出力結果です。
簡単ですねー。
【STEP7】「AIきりたん」の歌声を聞く
「AIきりたん」の歌声を聞いてみましょう。張りがあって元気な歌声です。
しかし、これが音声合成で作ったものだなんて、知らされないと分からないですよね。いよいよ歌手も本格的にバーチャルな時代に突入でしょうか。
ちなにみ「AIようこ」の歌声も作ってみましたので聴き比べてみてください。
私は”きりたん”の歌声のほうが好みだなぁ。(^^;
https://note.com/amasaka/n/n3b816501ead3
つよすぎるAIシンガーAIきりたんの基本的な使い方。【無料】
この【無料】という魅惑的な言葉。早速ダウンロードして試してみました。
【STEP1】AIきりたんをダウンロードし解凍する
次のサイトから「AIきりたん」を入手できます。ダウンロードにサインイン等は必要ありません。圧縮ファイルでも900MB近いサイズ。ダウンロードに少し時間がかかります。
https://n3utrino.work/
インストーラーなどはないので、そのまま解凍するだけです。「NEUTRINO」というフォルダに”きりたん”が格納されています。
【STEP2】MusicScore をインストールする
「AIきりたん」は音声合成のみなので、作曲用ソフトが必要です。「MusicScore 3」というソフトを使ってみました。こちらも無料ダウンロード!サインインが必要です。
https://musescore.org/ja
【STEP3】MusicScoreで楽譜を作る
何から何まで無料でできてしまう世の中、こんなんで良いのですかねー。と思いながら、「かえるの歌」のスコアを入力。一つ一つの音符に歌詞を入れるのがちょっと面倒(音符クリック+Ctrl+Lで入力できます)ですが、「きりたん」に歌わせるには必須です。
【STEP4】作った楽譜を muscixml 形式で出力する
楽譜ができたら、「ファイル」→「エクスポート」で、非圧縮musicxml ファイルとして出力します。今回は、"kaeru.musicxml"として出力しました。
このファイルを、AIきりたんが格納されている「NEUTRINO」フォルダの”score”フォルダに置きます。
【STEP5】「AIきりたん」の設定ファイルを編集する
次に”Run.bat”を開いて、6行目の「set BASENAME=sample1」を「set BASENAME=kaeru」に変更します。ちなみに、”set MODELDIR=KIRITAN” を YOKO にかえると熟年おばさんの声で合成できます。
^^;
@echo off setlocal enabledelayedexpansion cd /d %~dp0 : Project settings set BASENAME=kaeru set NumThreads=0 : musicXML_to_label set SUFFIX=musicxml : NEUTRINO set ModelDir=KIRITAN : WORLD set PitchShift=1.0 set FormantShift=1.0
【STEP6】「AIきりたん」で音声合成する
それができたら、”Run.bat”をクリックして起動します。するとコマンドプロンプトが開いて何やら動き始めます。
コマンドプロンプトが閉じたら、「NEUTRINO」フォルダの”output”フォルダに”kaeru_syn.wav”というファイルが出来上がります。これが音声合成の出力結果です。
簡単ですねー。
【STEP7】「AIきりたん」の歌声を聞く
「AIきりたん」の歌声を聞いてみましょう。張りがあって元気な歌声です。
しかし、これが音声合成で作ったものだなんて、知らされないと分からないですよね。いよいよ歌手も本格的にバーチャルな時代に突入でしょうか。
ちなにみ「AIようこ」の歌声も作ってみましたので聴き比べてみてください。
私は”きりたん”の歌声のほうが好みだなぁ。(^^;
YAMAHA ヤマハ ボーカロイドエディター VOCALOID4 Editor
- 出版社/メーカー: ヤマハ(YAMAHA)
- 発売日: 2014/12/26
- メディア: エレクトロニクス
AIを作るお仕事とは? [4コマ漫画]
三連休で、久しぶりに家でゆったり。という訳にもいかず、会社の仕事を家に持ち帰り三連休で挽回しようと仕事をしていると、娘が私の仕事に興味をもったらしく、私が仕事で何をしているのか聞いてきました。
その時は、ディープラーニングの学習用データをひたすら収集していたところだったので、"AIとか作ってんだよー"と答えたところ、娘の持っているAIの開発のイメージとは、かなりかけ離れていたようです。
そう、AI開発の実態はひたすらデータ取り…。世の中の人はAIという言葉にかなり幻想を持っているようですが、実はものすごく地味な仕事です。組込みソフト作ってるほうがよっぽどアカデミック…。
(´・ω・`)
その時は、ディープラーニングの学習用データをひたすら収集していたところだったので、"AIとか作ってんだよー"と答えたところ、娘の持っているAIの開発のイメージとは、かなりかけ離れていたようです。
そう、AI開発の実態はひたすらデータ取り…。世の中の人はAIという言葉にかなり幻想を持っているようですが、実はものすごく地味な仕事です。組込みソフト作ってるほうがよっぽどアカデミック…。
(´・ω・`)
エンジニアなら知っておきたいAIのキホン 機械学習・統計学・アルゴリズムをやさしく解説
- 作者: 梅田 弘之
- 出版社/メーカー: インプレス
- 発売日: 2019/01/21
- メディア: Kindle版
AIにできること、できないこと、ビジネス社会を生きていくための4つの力
- 出版社/メーカー: 日本評論社
- 発売日: 2019/02/19
- メディア: 単行本
タグ:日常
SPRESENSE メインボードとカメラの消費電力を測定してみた [SPRESENSE]
AIカメラを作ってみましたが、メインボードとカメラの消費電力が気になったので、早速測定をしてみました。今回もリポバッテリを直接つないで測定しています。
スケッチは次の4パターンで測定してみました。スケッチはこの記事の末尾に掲載していますので、参考にしてください。
カメラのストリーミング(320 x 240)だけを行うスケッチ
カメラで定期的に静止画(1280x960)を撮るだけのスイッチ(SDカードには記録しない)
カメラのストリーミング(320 x 240)をしながら定期的に静止画(1280x960)を撮るスケッチ
カメラをDeepSleepしながら定期的に静止画(1280x960)を撮るスケッチ
気になる測定結果は次のようになりました。写真のように測定装置は市販のテスターを使っていますので精度はよくありません。だいたいの傾向を掴む程度にご利用ください。
撮影時電流はピーク時の値です。撮影時間は1.5秒弱でした。撮影時に消費される電流の総和は単純増加減少していると考えると1回の撮影に消費される電流は Ah 換算で、(( 1.5 sec x 90mA ) ÷ 2 ) / (60 sec * 60 min) = 18 uAh といったところです。ピーク電流さえ供給できれば長時間もちそうですね。
いろいろ部品をとれば、もっと電力を減らすことはできそうですが、これでもかなりの省電力カメラと言えるでしょう。(ラズパイと比べたら特に)
次はタイムラプスカメラを作ってみて、どれだけもつか試してみようかな。
( ・∇・)
スケッチは次の4パターンで測定してみました。スケッチはこの記事の末尾に掲載していますので、参考にしてください。
気になる測定結果は次のようになりました。写真のように測定装置は市販のテスターを使っていますので精度はよくありません。だいたいの傾向を掴む程度にご利用ください。
条件 | 消費電流 |
@156MHz / Streaming (320x240) | 70mA |
@32MHz / Streaming (320x240) | 65mA |
@156MHz /takePicture (1280x960) | 6mA (Sleep時) |
@156MHz /takePicture (1280x960) | 90mA (撮影時ピーク電流) |
@32MHz /takePicture (1280x960) | 3.6mA (Sleep時) |
@32MHz /takePicture (1280x960) | 85mA (撮影時ピーク電流) |
@156MHz / Streaming (320x240)+ takePicture (1280x960) | 70mA (Streaming時) |
@156MHz / Streaming (320x240)+ takePicture (1280x960) | 90mA (撮影時ピーク電流) |
@32MHz / Streaming (320x240)+ takePicture (1280x960) | 65mA (Streaming時) |
@32MHz / Streaming (320x240)+ takePicture (1280x960) | 85mA (撮影時ピーク電流) |
@156MHz /takePicture (1280x960) | 380uA (DeepSleep時) |
@156MHz /takePicture (1280x960) | 90mA (撮影時ピーク電流) |
@32MHz /takePicture (1280x960) | 380uA (DeepSleep時) |
@32MHz /takePicture (1280x960) | 85mA (撮影時ピーク電流) |
撮影時電流はピーク時の値です。撮影時間は1.5秒弱でした。撮影時に消費される電流の総和は単純増加減少していると考えると1回の撮影に消費される電流は Ah 換算で、(( 1.5 sec x 90mA ) ÷ 2 ) / (60 sec * 60 min) = 18 uAh といったところです。ピーク電流さえ供給できれば長時間もちそうですね。
いろいろ部品をとれば、もっと電力を減らすことはできそうですが、これでもかなりの省電力カメラと言えるでしょう。(ラズパイと比べたら特に)
次はタイムラプスカメラを作ってみて、どれだけもつか試してみようかな。
( ・∇・)
#include < Camera.h > #define DEEP_SLEEP //#define LOWPOWER_32MHz //#define STREAMING #define TAKE_PICTURE #define SLEEP_TIME 5 #if defined(DEEP_SLEEP) || defined(LOWPOWER_32MHz) #include < LowPower.h > #endif // DEEP_SLEEP || LOWPOWER_32MHz #ifdef STREAMING void CamCB(CamImage img) { if (img.isAvailable()) { Serial.println("."); } } #endif unsigned long ptime = 0; void setup() { Serial.begin(115200); Serial.println("bootup"); #if defined(DEEP_SLEEP) || defined(LOWPOWER_32MHz) LowPower.begin(); Serial.println("Low Power begin"); #ifdef LOWPOWER_32MHz LowPower.clockMode(CLOCK_MODE_32MHz); Serial.println("Clock mode : 32MHz"); #endif #endif // DEEP_SLEEP || LOWPOWER_32MHz #if defined(DEEP_SLEEP) || defined(STREAMING) ptime = millis(); theCamera.begin(); Serial.println("Camera begin @setup"); #ifdef STREAMING theCamera.startStreaming(true, CamCB); Serial.println("Start Streaming"); #endif // STREAMING #endif // DEEP_SLEEP || STREAMING } void loop() { #ifdef TAKE_PICTURE #if !defined(DEEP_SLEEP) && !defined(STREAMING) ptime = millis(); theCamera.begin(); Serial.println("Camera begin @loop"); #endif // !DEEP_SLEEP || !STREAMING theCamera.setStillPictureImageFormat(1280 ,960 ,CAM_IMAGE_PIX_FMT_JPG); CamImage img = theCamera.takePicture(); if (img.isAvailable()) { Serial.println("take picture"); } #ifndef STREAMING theCamera.end(); ptime = millis() - ptime; Serial.println("Camera end (processing time: " + String(ptime) + " msec"); #endif // !STREAMING #ifdef DEEP_SLEEP Serial.println("Go to deep sleep in " + String(SLEEP_TIME) + " sec"); LowPower.deepSleep(SLEEP_TIME); #else Serial.println("Go to sleep in " + String(SLEEP_TIME) + " sec"); sleep(SLEEP_TIME); #endif // DEEP_SLEEP #endif // TAKE_PICTURE }
SONY SPRESENSE メインボード CXD5602PWBMAIN1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SONY SPRESENSE カメラモジュール CXD5602PWBCAM1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SPRESENSE で小型AIカメラを作ってみた! [SPRESENSE]
SPRESENSEにOLEDがついたので、今度はカメラをつけてAIカメラにしてみようと思います。久しぶりにNeural Network Console を使います。
1. 画像を準備
まず、画像を用意します。ネットから適当に集めてきた”鳥”、”馬”、”うさぎ”、”人”、”壁”の画像を使いました。
2. 画像を加工
これらを、ImageMagick を使って、28x28pixel 8bit (256階調)のグレースケールの画像に変換し、ニューラルネットワークのデータセットとして登録します。(詳細は、また別の機会に)
3. ニューラルネットワークをデザイン
Neural Network Console を開いてニューラルネットワークをデザインします。今回は LeNet ベースで作ってみました。(Spresenseに入るように少し改造しています)
4. ニューラルネットワークを学習・評価
登録したデータセットを使って、デザインしたニューロンを学習・評価します。
5. ニューロンモデルの出力
SPRESENSEで解釈できるニューロンモデル(model.nnb)を出力します。
6. Arduino スケッチの作成・焼き込み
ArduinoのAIスケッチを作成します。AIカメラを小さくしかったので、ニューロンモデルはSPRESENSEメインボードのフラッシュの中に格納してみました。
動作の様子は動画でどうぞ!!( ^ω^ )/~
関連記事
SPRESENSEでSony Neural Network Console を使ってみた!
https://makers-with-myson.blog.ss-blog.jp/2019-07-14
1. 画像を準備
まず、画像を用意します。ネットから適当に集めてきた”鳥”、”馬”、”うさぎ”、”人”、”壁”の画像を使いました。
2. 画像を加工
これらを、ImageMagick を使って、28x28pixel 8bit (256階調)のグレースケールの画像に変換し、ニューラルネットワークのデータセットとして登録します。(詳細は、また別の機会に)
3. ニューラルネットワークをデザイン
Neural Network Console を開いてニューラルネットワークをデザインします。今回は LeNet ベースで作ってみました。(Spresenseに入るように少し改造しています)
4. ニューラルネットワークを学習・評価
登録したデータセットを使って、デザインしたニューロンを学習・評価します。
5. ニューロンモデルの出力
SPRESENSEで解釈できるニューロンモデル(model.nnb)を出力します。
6. Arduino スケッチの作成・焼き込み
ArduinoのAIスケッチを作成します。AIカメラを小さくしかったので、ニューロンモデルはSPRESENSEメインボードのフラッシュの中に格納してみました。
#include <Camera.h> #include <Flash.h> #include <DNNRT.h> #include <File.h> #include "Adafruit_GFX.h" #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define BAUDRATE 115200 #define OFFSET_X 48 #define OFFSET_Y 8 #define BOX_WIDTH 224 #define BOX_HEIGHT 224 #define DNN_IMG_WIDTH 28 #define DNN_IMG_HEIGHT 28 DNNRT dnnrt; DNNVariable input(DNN_IMG_WIDTH*DNN_IMG_HEIGHT); String gStrResult = ""; void CamCB(CamImage img) { if (!img.isAvailable()) return; img.convertPixFormat(CAM_IMAGE_PIX_FMT_RGB565); Serial.println("start clip and resize"); gStrResult = ""; int x; int index = 0; static uint8_t label[5] = {0, 1, 2, 3, 4}; CamImage small; CamErr camErr = img.clipAndResizeImageByHW(small ,OFFSET_X ,OFFSET_Y ,OFFSET_X+BOX_WIDTH-1 ,OFFSET_Y+BOX_HEIGHT-1 ,DNN_IMG_WIDTH ,DNN_IMG_HEIGHT); if (!small.isAvailable()) { Serial.println("Error Occured at making a target image"); if (camErr) Serial.println("CamErr: " + String(camErr)); return; } uint16_t* buf = (uint16_t*)small.getImgBuff(); float* input_buffer = input.data(); for (int i = 0; i < DNN_IMG_WIDTH * DNN_IMG_HEIGHT; ++i, ++buf) { input_buffer[i] = (float)(((*buf & 0x07E0) >> 5) << 2) ; // extract green } Serial.println("DNN forward"); dnnrt.inputVariable(input, 0); dnnrt.forward(); DNNVariable output = dnnrt.outputVariable(0); float max_value = 0.0; for (int i = 0; output.size() > i; ++i) { if (output[i] > max_value) { max_value = output[i]; index = i; } } Serial.print("Result : "); Serial.println(label[index] + " (" + String(output[index]) + ")"); if (label[index] != 10) { gStrResult += String(label[index]); } else { gStrResult += String(" "); } display.clearDisplay(); display.setTextSize(3); // Normal 1:1 pixel scale display.setCursor(0, 0); // Start at top-left corner display.cp437(true); // Use full 256 char 'Code Page 437' font switch (index) { case 0: display.println("BIRD"); break; case 1: display.println("HORSE"); break; case 2: display.println("HUMAN"); break; case 3: display.println("-----"); break; case 4: display.println("RABBIT"); break; } display.display(); Serial.println("Recognition Result: " + gStrResult); } void setup() { Serial.begin(BAUDRATE); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } display.display(); delay(2000); // Pause for 2 seconds // Clear the buffer display.clearDisplay(); // Draw a single pixel in white display.drawPixel(10, 10, SSD1306_WHITE); display.display(); delay(2000); display.setTextSize(1); // Normal 1:1 pixel scale display.setTextColor(SSD1306_WHITE); // Draw white text display.setCursor(0, 0); // Start at top-left corner display.cp437(true); // Use full 256 char 'Code Page 437' font for(int16_t i=0; i<256; i++) { if(i == '\n') display.write(' '); else display.write(i); } display.display(); Serial.println("Loading network model"); File nnbfile = Flash.open("model.nnb", FILE_READ); if (!nnbfile) { Serial.println("nnb not found"); while(1); } Serial.println("Initialize DNNRT"); int ret = dnnrt.begin(nnbfile); if (ret < 0) { Serial.println("DNNRT initialize error."); while(1); } theCamera.begin(); theCamera.startStreaming(true, CamCB); } void loop() { /* do nothing here */ }
動作の様子は動画でどうぞ!!( ^ω^ )/~
関連記事
SPRESENSEでSony Neural Network Console を使ってみた!
https://makers-with-myson.blog.ss-blog.jp/2019-07-14
ソニー開発のNeural Network Console入門【増補改訂・クラウド対応版】--数式なし、コーディングなしのディープラーニング
- 出版社/メーカー: リックテレコム
- 発売日: 2018/11/14
- メディア: 単行本(ソフトカバー)
SONY SPRESENSE メインボード CXD5602PWBMAIN1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SONY SPRESENSE カメラモジュール CXD5602PWBCAM1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
深宇宙から16日周期で届く謎の信号はホワイトホールからか!? [トンデモ学説]
久しぶりの天文ネタです。トロント大学のチームが5億光年離れた銀河から地球に向けて16日周期で発する謎の信号を受信したというニュースがありました。
その発生源は「SDSS_J015800.28+654253.0」という名もない銀河の赤丸の部分です。
深宇宙から16日周期で届く謎の信号の正体とは? - GIGAZINE
https://gigazine.net/news/20200210-16-day-cycles-fast-radio-burst/
論文を斜め読みをしてみると、データを見つけることができました。こんなグラフを見ると発見した人たちの興奮が伝わってきますね。
ビームの周波数は 1.7GHz中心で600Mhzくらいの帯域幅のようです。どこの携帯キャリアの割当電波かな?という感じの信号ですね…。
ただ、この現象、銀河の広範囲に影響を及ぼしているようです。銀河をよく見ると銀河の腕にも影響を与えているのが見ることができます。
正体はブラックホールをもつ連星か、極端な強い磁場を持つ中性子星「マグネター」ではないか?という仮設が出ていますが、マグネターは天の川銀河の周辺でも発見されており、ここまで広範囲に影響を及ぼす天体現象とは思えません。(磁場の影響範囲は狭いですし)
あり得るとすると銀河中心クラスのブラックホールですが、こんな銀河の辺境で巨大なブラックホールが発生するとは思えません。
ここからは勝手な想像ですが、銀河中心ブラックホール並の高エネルギーを発生させる現象で、他に考えられるのはホワイトホールくらいではないかと…。
どこかの巨大ブラックホール(ひょっとしたらこの銀河の)の出口となる回転しているホワイトホールと考えると、周期的に電波を地球に向けて放出し、かつ銀河の形にも影響を与えるほどの高エネルギー現象となるのは納得できます。
いずれにしても正体が明らかになるのが楽しみです!
( ^ω^ )
その発生源は「SDSS_J015800.28+654253.0」という名もない銀河の赤丸の部分です。
深宇宙から16日周期で届く謎の信号の正体とは? - GIGAZINE
https://gigazine.net/news/20200210-16-day-cycles-fast-radio-burst/
論文を斜め読みをしてみると、データを見つけることができました。こんなグラフを見ると発見した人たちの興奮が伝わってきますね。
ビームの周波数は 1.7GHz中心で600Mhzくらいの帯域幅のようです。どこの携帯キャリアの割当電波かな?という感じの信号ですね…。
ただ、この現象、銀河の広範囲に影響を及ぼしているようです。銀河をよく見ると銀河の腕にも影響を与えているのが見ることができます。
正体はブラックホールをもつ連星か、極端な強い磁場を持つ中性子星「マグネター」ではないか?という仮設が出ていますが、マグネターは天の川銀河の周辺でも発見されており、ここまで広範囲に影響を及ぼす天体現象とは思えません。(磁場の影響範囲は狭いですし)
あり得るとすると銀河中心クラスのブラックホールですが、こんな銀河の辺境で巨大なブラックホールが発生するとは思えません。
ここからは勝手な想像ですが、銀河中心ブラックホール並の高エネルギーを発生させる現象で、他に考えられるのはホワイトホールくらいではないかと…。
どこかの巨大ブラックホール(ひょっとしたらこの銀河の)の出口となる回転しているホワイトホールと考えると、周期的に電波を地球に向けて放出し、かつ銀河の形にも影響を与えるほどの高エネルギー現象となるのは納得できます。
いずれにしても正体が明らかになるのが楽しみです!
( ^ω^ )
ブラックホールホワイトホール―正反対の顔をもつ「時空の二つの穴」 (ニュートンムック Newton別冊サイエンステキストシリーズ)
- 作者: 福江純
- 出版社/メーカー: ニュートンプレス
- 発売日: 2020/02/16
- メディア: ムック
タグ:天文
SPRESENSE で小型OLEDディスプレイを使ってみた! [SPRESENSE]
SPRESENSEにカメラと小さなディスプレイをつけて、カメラを対象に向けたら写ったものが何か表示する、というよくあるAIカメラのデモを作ってみたいなと思い試しに小型OLEDディスプレイをつけてみました。
なんと、あっけなく1.8V IO で動いてしまいました。レベルシフター不要なのは助かるー♪
使用したライブラリは Adafruit のものです。2つ必要です。一つはSPRESENSE用のGFXライブラリ。次の github から入手できます。
https://github.com/kzhioki/Adafruit-GFX-Library
もうひとつは、Adafruit の OLED用ライブラリです。
https://github.com/adafruit/Adafruit_SSD1306
この2つのライブラリをZIPでダウンロードして、Arduino IDE を使ってインストール。「スケッチ例」 から「ssd1306 _128x32_i2c」を選択してコンパイルしてみます。
最初は、いつものお約束ですが、コンパイルエラーに出くわします。エラーメッセージを見ると次のような内容が出力されています。
Adafruit_SSD1306.cpp を開いて、485行目を見てみます。
どうも、HAVE_PORTREG が定義されているとマズイみたいです。
Adafruit_SSD1306.h 内に HAVE_PORTREG で定義されているところがないか探してみました。案の定あったので、試しに SPRESENSE の場合は定義を無効にするように追記してみました。(57~59行目)
これで無事にコンパイルが通り動作するようになりました。いやはや、なんともあっけない。Arduino は本当によくできたプラットフォームです。
このOLEDディスプレイは、SPRESENSEメインボードとちょうどよい大きさで、アドオンに載せるとコンパクトに可愛くまとまりそうなので、少しがんばってアドオンボードにしてみました。
なかなかいい感じです。これで小型のAIカメラができるかなー。
( ^ω^ )
なんと、あっけなく1.8V IO で動いてしまいました。レベルシフター不要なのは助かるー♪
使用したライブラリは Adafruit のものです。2つ必要です。一つはSPRESENSE用のGFXライブラリ。次の github から入手できます。
https://github.com/kzhioki/Adafruit-GFX-Library
もうひとつは、Adafruit の OLED用ライブラリです。
https://github.com/adafruit/Adafruit_SSD1306
この2つのライブラリをZIPでダウンロードして、Arduino IDE を使ってインストール。「スケッチ例」 から「ssd1306 _128x32_i2c」を選択してコンパイルしてみます。
最初は、いつものお約束ですが、コンパイルエラーに出くわします。エラーメッセージを見ると次のような内容が出力されています。
C:\Documents\Arduino\libraries\Adafruit_SSD1306-master\Adafruit_SSD1306.cpp: In member function 'boolean Adafruit_SSD1306::begin(uint8_t, uint8_t, boolean, boolean)': C:\Documents\Arduino\libraries\Adafruit_SSD1306-master\Adafruit_SSD1306.cpp:485:69: error: 'digitalPinToPort' was not declared in this scope dcPort = (PortReg *)portOutputRegister(digitalPinToPort(dcPin))
Adafruit_SSD1306.cpp を開いて、485行目を見てみます。
484 #ifdef HAVE_PORTREG 485 dcPort = (PortReg *)portOutputRegister(digitalPinToPort(dcPin)); 486 dcPinMask = digitalPinToBitMask(dcPin); 487 csPort = (PortReg *)portOutputRegister(digitalPinToPort(csPin)); 488 csPinMask = digitalPinToBitMask(csPin); 489 #endif
どうも、HAVE_PORTREG が定義されているとマズイみたいです。
Adafruit_SSD1306.h 内に HAVE_PORTREG で定義されているところがないか探してみました。案の定あったので、試しに SPRESENSE の場合は定義を無効にするように追記してみました。(57~59行目)
43 #if defined(__AVR__) 44 typedef volatile uint8_t PortReg; 45 typedef uint8_t PortMask; 46 #define HAVE_PORTREG 47 #elif defined(__SAM3X8E__) 48 typedef volatile RwReg PortReg; 49 typedef uint32_t PortMask; 50 #define HAVE_PORTREG 51 #elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && !defined(ARDUINO_ARCH_MBED) 52 typedef volatile uint32_t PortReg; 53 typedef uint32_t PortMask; 54 #define HAVE_PORTREG 55 #endif 56 57 #if defined(ARDUINO_ARCH_SPRESENSE) // added by taro 58 #undef HAVE_PORTREG 59 #endif // added by taro
これで無事にコンパイルが通り動作するようになりました。いやはや、なんともあっけない。Arduino は本当によくできたプラットフォームです。
このOLEDディスプレイは、SPRESENSEメインボードとちょうどよい大きさで、アドオンに載せるとコンパクトに可愛くまとまりそうなので、少しがんばってアドオンボードにしてみました。
なかなかいい感じです。これで小型のAIカメラができるかなー。
( ^ω^ )
SONY SPRESENSE メインボード CXD5602PWBMAIN1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SONY SPRESENSE カメラモジュール CXD5602PWBCAM1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
SPRESENSEでLowPowerカメラ? [SPRESENSE]
SPRESENSEのカメラ機能と、LowPowerライブラリでLowPowerカメラを作ってみました。クロックも32MHzに落としています。
一分毎に写真を取って、次の撮影までDeepSleepに落ちて電力を落とします。ファイル名が重なってはいけないので、番号をEEPROMに記録するようになっています。
電力はまだ測定していないのですが、拡張ボード使っているのでそこまで落ちていないだろうなぁ。そのうち、カメラをつけた場合の電力も測定もしてみたいと思います。(環境作るのメンドクサイ…)
(´・A・`)
関連記事
SPRESENSE で DeepSleep から GPS をホットスタート!
https://makers-with-myson.blog.ss-blog.jp/2020-01-26
SPRESENSE の Low Power ライブラリをバッテリー給電で試してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-12-08
SPRESENSE の Low Power ライブラリをUSB給電で試してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-12-01
一分毎に写真を取って、次の撮影までDeepSleepに落ちて電力を落とします。ファイル名が重なってはいけないので、番号をEEPROMに記録するようになっています。
#include <Camera.h> #include <SDHCI.h> #include <LowPower.h> #include <EEPROM.h> #define LOWPOWER_32MHz SDClass theSD; File myFile; int addr = 0; byte val = 0; void setup() { LowPower.begin(); #ifdef LOWPOWER_32MHz LowPower.clockMode(CLOCK_MODE_32MHz); #endif Serial.begin(115200); Serial.println("bootup"); theCamera.begin(); bootcause_e bc = LowPower.bootCause(); if ((bc == POR_SUPPLY) || (bc == POR_NORMAL)) { Serial.println("Power on reset"); val = 0; } else { val = EEPROM.read(addr); Serial.println("Read sequence number: " + String(val)); } } void loop() { theCamera.setStillPictureImageFormat(320 ,240 ,CAM_IMAGE_PIX_FMT_JPG); CamImage img = theCamera.takePicture(); if (img.isAvailable()) { char filename[16] = {0}; sprintf(filename, "PICT%03d.JPG", val); File myFile = theSD.open(filename, FILE_WRITE); myFile.write(img.getImgBuff(), img.getImgSize()); myFile.close(); ++val; Serial.println("taken picture to " + String(filename)); EEPROM.write(addr, val); } theCamera.end(); LowPower.deepSleep(60); }
電力はまだ測定していないのですが、拡張ボード使っているのでそこまで落ちていないだろうなぁ。そのうち、カメラをつけた場合の電力も測定もしてみたいと思います。(環境作るのメンドクサイ…)
(´・A・`)
関連記事
SPRESENSE で DeepSleep から GPS をホットスタート!
https://makers-with-myson.blog.ss-blog.jp/2020-01-26
SPRESENSE の Low Power ライブラリをバッテリー給電で試してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-12-08
SPRESENSE の Low Power ライブラリをUSB給電で試してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-12-01
設計と営業に挟まれて… [4コマ漫画]
普段、ほとんど職場におらず、お客さんまわりとかセミナーとか、外をほっつき歩いていることがほとんどです。とは言うものの、一応プロジェクトリーダーという職責を負っている立場なので、色々な部署の方たちとの間を取り持つこともあります。
外ばかり行ってるので職場で起きていることに、たまに疎くなることもあります。この仕事はあまり設計と営業が喧嘩することはないのですが、珍しく揉めごとがあった模様。
まぁ、今回の場合は、私も知らない内容だったので、きちんと現場に説明していなかった上の責任もありますが、営業も設計チームに一言いってくれればよかったのになぁと思います。
ビジネスは営業と設計の両輪がきちんと噛み合ってうまく進むものなので、情報をきちんと共有するのは大事だなとあらためて思いました。
(´・ω・`)
外ばかり行ってるので職場で起きていることに、たまに疎くなることもあります。この仕事はあまり設計と営業が喧嘩することはないのですが、珍しく揉めごとがあった模様。
まぁ、今回の場合は、私も知らない内容だったので、きちんと現場に説明していなかった上の責任もありますが、営業も設計チームに一言いってくれればよかったのになぁと思います。
ビジネスは営業と設計の両輪がきちんと噛み合ってうまく進むものなので、情報をきちんと共有するのは大事だなとあらためて思いました。
(´・ω・`)
なぜ人と組織は変われないのか――ハーバード流 自己変革の理論と実践
- 出版社/メーカー: 英治出版
- 発売日: 2013/10/24
- メディア: 単行本
最新版 飛び込みなしで「新規顧客」がドンドン押し寄せる「展示会営業」術
- 作者: 清永健一
- 出版社/メーカー: ごま書房新社
- 発売日: 2019/03/28
- メディア: 単行本
社内格差を感じるとき… [4コマ漫画]
先日、久しぶりに社内の研究所の人たちと会合がありました。そろそろ、この先の計画が固まってきたこともあり、今後の計画についてそれぞれ情報交換をすることになりました。
私が所属しているのは事業部なので利益出してなんぼの部署。一方研究所はすばらしい技術や社会貢献をしてなんぼの部署。性質が全く異なる部署なので、計画もまったく異なります。でも、この時ばかりは社内格差というものを感じてしまう時です。
ビジネスをしているとお客さんと直接触れ合えますし、自分の作ったものが世の中に評価されると嬉しい。逆に直接お客さんと触れ合うことで苦労も多いです。
自分がどのような形で社会と触れ合っていきたいか?それによってビジネスがいいか研究がよいか、、ですね。研究者だと自分の専門性をより高めることができますが、社会との関係は希薄になりますよね。
私は、先が見通せなくても、リアルな現実と触れ合っていきたいのでビジネスのほうが向いているんだろうなぁ。でも研究所いいなぁ。
(´・ω・`)
私が所属しているのは事業部なので利益出してなんぼの部署。一方研究所はすばらしい技術や社会貢献をしてなんぼの部署。性質が全く異なる部署なので、計画もまったく異なります。でも、この時ばかりは社内格差というものを感じてしまう時です。
ビジネスをしているとお客さんと直接触れ合えますし、自分の作ったものが世の中に評価されると嬉しい。逆に直接お客さんと触れ合うことで苦労も多いです。
自分がどのような形で社会と触れ合っていきたいか?それによってビジネスがいいか研究がよいか、、ですね。研究者だと自分の専門性をより高めることができますが、社会との関係は希薄になりますよね。
私は、先が見通せなくても、リアルな現実と触れ合っていきたいのでビジネスのほうが向いているんだろうなぁ。でも研究所いいなぁ。
(´・ω・`)
事業を創るとはどういうことか――「温度ある経済の環」を生み出すビジネスプロデューサーの仕事
- 作者: 三木 言葉
- 出版社/メーカー: 英治出版
- 発売日: 2019/09/19
- メディア: 単行本(ソフトカバー)