この記事はSSSRC Advent calender 2023 19日目として書かれています.

 

お久しぶりです.B4の池野です.最近全然アメブロ書いていなかった気がする.

 

今日はアマチュア無線ミッションのSSTVについてちょこっとお話しつつ先日走ったマラソンについてお話しようかなと思います.

 

SSTVについて

ご存じの方もたくさんおられると思いますが,一応基本的なところから.
 
SSTVとはSlow Scan Televisionの頭文字で短波帯などの狭帯域幅で画像をやり取りするために用いられる伝送方式です.基本的にはFM,つまり,キャリア波の周波数を上下にシフトさせて送信したい情報を伝送します.その中でも送信方式は様々ありますが,周波数の高低が画素の明暗に対応しています.RGB(赤,緑,青)の輝度情報を順に送信し,地上にて一行ずつ組み合わせていくというのが一般的です.
他にも人間の網膜の色覚の特徴を利用してうまいこと輝度を調整して送信したりする手法(計算が早くなったりするのかな?)もあるようですが,開発中の衛星には使わない方式なので割愛します.
変調周波数は1500Hz~2300Hzの間にします.また,人間の色彩感覚的に100~110分割くらいでしか輝度を判別できないらしく,128通りの輝度を用意することにします.つまり,最も低い周波数を黒として(2300-1500)/128=6.25Hzごとに輝度情報を上げていくことで2300Hzは白を表すことになるというわけです.256通りの輝度だと3.125Hz刻みになるため,干渉などによって正確な復調が難しくなるという問題が生じます.64通りだと12.5Hz刻みですね.もしかしたらこれでも良いかもなあと思い始めてきた.
幅256pxの画像の場合,RGBの輝度情報が256サンプルずつ送信されたあと,1200Hz×5msの水平同期パルスでライン終端が通知され,一行の描画が終了します.画像前にはヘッダが送信され,1900Hz×300msのリーダートーン,1200Hz×10msのブレーク,1900Hz×300msのリーダートーン,伝送モードを識別するVISコードで構成されています.Martin M1では44なので0101100と並ぶわけです.
 
おおざっぱですが,SSTVの概要はこの程度で良いですかね.
 
ちなみに,今回のミッションではMartin M1を使うので以降はMartin M1での実装だと思っておいてください.他のモードのことはわかりません.
 

SSTV実装に向けて

私はひとまず,pysstvというオープンソースのソフトを拾ってきて適当な画像を変調してみました.MMSSTVというSSTV用通信ソフトを使ってデコードしてみることにしました.当初はマイクとスピーカーから音声を流してデコードを試みていましたが,なぜかうまくいかないなといきなり立ち止まりました.
通信系の後輩に聞いてみるとVB-audioの仮想オーディオインターフェースを使ってみてはとのこと.パソコンの音声出力をループ回して直接MMSSTVに入れているらしい.その辺疎いから非常に助かった.これが実際使用した写真とMMSSTVのインターフェース.音声は載せられないのかな.pysstvの中に界隈で有名な外国人の写真が入ってた気がするのでそちらで.
SSTVのなんとなくの流れとコードの仕様を大まかに理解したところでc++で書き始めてみました.そこでようやく気が付いたのですが,pysstvって結構洗練された仕様になっていました.jpgやpngなどの圧縮形式からrowデータに近いppmなどの形式まで殆どの画像ファイルをwavファイルにすることができていたのです.
 
大体,やり始めた当初,画像の形式とか全く興味もないし困りました.
人工衛星に積むカメラの仕様や画像の保存形式などのレギュレーションが決まっていなかったので,とりあえず,簡単そうなpgm(白黒)でコードを書いてみました.これは案外すぐにできたのでppm(カラー)を試みました.ppmは指定した最大値までの数値でRGBの順に10進数のテキストで格納されています.
 
実装してみたのですが3点のミスによりうまくいきませんでした.1点目は凡ミスなのですが,SSTVではR,G,Bの輝度を一行ずつ切り替えているのに対して,ppmではピクセルごとにRGBの輝度を記載していた点にありました.2点目は,SSTVはRGBの順に送られるのではなくGBRの順に送られているという点でした.2点目に関しては抜け穴でしたね.RGBの順になっていると普通は思いませんか.どうやら白黒画像の輝度は基本的に0.30R+0.59G+0.11Bで作られているみたいなのでこれが関係してたりするのかな.でも大事な順ならGRBだよな~とか思っていました.最後に3点目なんですが,各波形のオフセットを考慮していなかったという点です.一番致命的でした.今回も間違いに気づいてくれた後輩に感謝です.ppmではメモリを圧迫してしまうと思ったので画像と音声データを圧縮しようと考えていました.jpgに圧縮することは簡単なのですが,それを改めてppmにするためにはOpenCVとかを使わないといけないのではないかということになり,よりメモリを圧迫しそうになったのでppmで進めることになりました.wavもなんらかの理由で圧縮しないのかな?ちょっと忘れました.
 
SSTVは現在,RGBデータを取得してそれをもとに取られた写真が地球側を向いているのか判断させるコードを書いているところです.これによって地上局と通信できるようになってから次に通信できるようになるまでに最善のショットをSSTVを用いて地球に送ることができるのではないかと考えています.
 
ざっくりとSSTVの話をしましたが日本語大丈夫かな.わかりにくかったらすみません.
 
アマチュア無線ミッションとして行うので,アマチュア無線家の方,興味があれば衛星運用中にデコードしてください!!
 

マラソンについて

もうマラソン書かなくても良いかなと思い始めたんですけど折角なので.
12/10に奈良マラソンを走ってきました.大学院入試直後から練習を始めて3か月程度練習してきました.
 
結果から言うと何とか完走することができました.ただ,残念なのが目標としては4時間以内にゴール(サブ4というらしい)を目指して練習してきたのに,4時間20分と少しオーバーしてしまいました.自分の実力不足を感じつつも,コース悪すぎないかと不満が溜まりました.
 
序盤の方の6キロ程度以外はすべて上り坂か下り坂だったため足への疲労が物凄く溜まります.そんな悪路の中でしたが,30キロ地点までは余裕の走りで予定より3分くらい巻いて到達しました.
しかし,そこから10キロにわたって厳しい坂道の連続が待ち受けていました.31キロ地点では足が止まってしまい,ついに歩いてしまいました.心肺は十分に余裕があるのに足が重くて走れないのです.こんな経験は初めてでした.私は比較的筋肉質な方ですし,ここ半年以上毎日のようにジムに通い大分筋肉を蓄えていたため自分の肉体に限界はないと思っていました.少なくとも42キロ程度なら余裕で走破できると信じていました.30キロ地点まではバナナがおいてあったりしても時間ロスになるため食べようとも思いませんでした.しかし,何か食べないとエネルギー不足で走り切れないと思ったため給水所にある食べ物は片っ端から食べました.もちろん,20キロ地点と30キロ地点でアミノ酸のジェルを口にしていましたが,それだけでは足りない状況だったので.坂道だけではなく,その日は12月にしては異例の20℃まで気温が上がったせいで水分もどんどん奪われていきました.
 
私は問題なかったのですが,終盤の6, 7キロ地点から給水所の水も不足していたらしく,自販機で水を購入しながら走った人もいたとのこと.残り3キロ地点で沿道に立っていた人のプラカードに「お前が申し込んだんだろ!」って書かれていて笑ってしまいました.
 
マラソンは今回限りと思っていましたが,目標タイムを切れなかったため来年も走ろうかなと思っています.もちろん奈良マラソン以外のマラソンを笑.研究にも体力は必要ですし,もしよければ皆さんもマラソンを初めてみてはいかがですか.
 

初めまして,B2の山田です.今回初めてアメブロを担当することになり,何を書いて良いか分からないので,普通にsssrcでの活動について書いていこうと思います.ただし,特別なにかの成果が得られたという訳でもないうえに,初めてのブログで面白いことを書ける自信がないので大目に見てやってください🙏

C&DH系とは?

いきなり具体的な話をするのも脈絡がなくてなんだか良くないような気がするので,まず,自分が担当している系について少しだけ話そうと思います(知っている方は読み飛ばしてください).

 

 

sssrcで現在開発中の衛星にはミッション系,構造系,熱系,電源系,通信系,C&DH系,姿勢系があります.タイトルにもある通り自分はC&DH系を担当しているのですが,今挙げた系のなかで唯一アルファベットが入っていて何をしているのか分かりにくいと思います,初めて見たときは自分も意味が分かりませんでした...

 

 

まず,C&DHとは何の略だと思いますか?正解はCommand and Data Handlingです.Commandとは地上から衛星に送る命令のこと,Data Handlingとは衛星に搭載されているセンサーなどが取得した値を管理することで,これらの設計をしています.値の管理でバグが発生すると衛星が上手く動かなくなるので,とても重要な役割を担っています!!だいぶざっくりしていますが,系の説明はここまでにしておきます.

 

 

文字ばかりになってしまっているので,衛星で使用するマイコン,SONYのSpresenseの写真を下に貼っておきます.一応両面貼っておきます.

    

microSDカード単体試験

次は最近取り組み中のタスク,microSDカードの単体試験の話をしていこうと思います.先ほど話した通り,C&DH系では衛星内のデータを取り扱っているので,その保存に関係しているSDカードの試験をすることになりました.内容は少し前に紹介したSpresenseを使って,SDカードにデータを書き込んでそれを読み出すというものです.内容はシンプルなのですが,恥ずかしながらこれに苦戦してしまっています.
 
 
使った部品の写真を貼っておきます.左から今回使ったmicroSDカード,microSDカードスロット,レベルシフタ(電圧変換用の部品)です.
  
 

 

部品の準備ができたので,調べたサイトの通り回路を組み,プログラムをSpresenseに書き込んだら試験終了!の予定だったはずなのですが,先ほど述べた通り上手くいきませんでした😭

考えられる原因は主に回路,プログラムのミスですが,回路を後日作り直しても解決しなかったので自分は後者が原因だと考えています.ただし,正確な原因の特定はできていません.(本来はできるべきなのかもしれませんが...)どうすれば良いのって状況ですが,解決案は一応考えています.

 

 

実はSpresenseには先ほど紹介したメインボードの他に拡張用のボードがあり,そこにはmicroSDカード用のスロットが搭載されています.更に拡張ボードを用いてmicroSDカードを操作するためのプログラムまでSONY公式が用意してくれています.

 

 

じゃあなんでわざわざ別の回路とプログラムを準備して試験を使用としたのってことになりますが,これは開発中の衛星のサイズが小さく,拡張ボードを搭載してしまうと衛星内部を圧迫してしまうからです.なので拡張ボードのmicroSDに関係する部分の回路を自作で再現して試験をしてみようということになりました.この回路は最初に試験に使ったものより複雑なので避けていましたが,結果的には遠回りになってしまいました.

 

 

回路を変更した結果は!と言いたいところですが,まだこの回路は試せていないのでここまでにしておきます.(本当は回路やプログラムの詳細についても紹介するべきなのですが,写真を撮るのを忘れていた上にアドカレの担当日がもうすぐ終わってしまうので用意できませんでしたすみません🙇)

 

最後に

単体試験に苦戦していたり,先輩方の開発に関する会話についていけないことが多かったりといろいろ情けないところばかりですが,これからもできる限り頑張っていこうと思います!!

 

長々と読みづらい文章を書いてしまってすみません🙇読んでくださった方はありがとうございました.

 

今日のブログはここまでです,まだまだアドカレは続くので楽しみにしていてください!!!

 

 

 

 

 

 

この記事はSSSRC Advent calender 2023 17日目の記事として書かれています。

 

どうも皆さん初めまして。

アメブロに初参戦したB2の鳥羽と申します。

ブログなんて書くの初めてで超緊張しています。多分読みにくい出来になっていると思いますがご容赦ください。

 

アメブロに書く内容をずっと考えていたんですが(開発の内容やエンジニアリングについて詳しく書ける知識は無いし・・・日常にそんな彩があるわけでもないし・・・)、今回は最近使ったオープンロケットっていうフリーソフトのお話をしたいと思います。僕が書ける程度の内容なので多分難しくないです。間違ってたらごめんなさい🙇

 

オープンロケットってなーんだ?

オープンロケットとは、ロケットのモデルを作って、エンジンを選んだら、色々なフライトシミュレーションを見ることが出来るよっていうフリーソフトです。

Windows、mac、Linux、JARのOSに対応しています。ダウンロードも簡単!上記のリンクに入って画面右上にある

「Download」をクリックすると以下の画面に飛びます。

そしたら自分のOSのDownloadって書いてる青いとこをクリックします。その後は、上記の画像の黄色の蛍光マーカーを引いたところ(実際の画面には黄色のマーカーはありません)を押すと、

こんなのが出てきます。全部英語で分かりにくいですが、要は左の画面が出たら、右の太字の内容をクリックしましょうねーということです(というかページ全体google翻訳すりゃええか)。そしたらもう準備完了!

 

早速使ってみよう!

オープンロケットを使うには全部で3ステップあります。

STEP . 1:ロケットのモデルを作ろう!

STEP . 2:エンジンを入れてみよう!

STEP . 3:シミュレーションを回してみよう!

今回は適当なモデルロケットを作ってみましょう。

 

STEP.1ロケットのモデルを作ろう!

オープンロケットを開くと中身はこんな感じ。

 

で囲っているところでノーズコーンやボディ等ロケットの部品を選択すると、で囲った所にモデルが出てきます。まずはノーズコーンを選択してみましょう。この時、で囲った所のサステナーというところを選択しないと、ノーズコーン等を選択できないので注意してください。選択すると以下の二つのポップアップが出てきます。

          

左の方は既製品を使う場合ここから選べますよというもので、自作する場合は閉じてもらって構いません。

(アメリカで売ってるものがあるっぽいですが・・・分かんないので明言は避けます。)

右の方で、ノーズコーンの詳細な設計を決めることが出来ます。基本的に圧力中心の値やシミュレーションの結果などを見て、この設計を試行錯誤していくことになります。まずはいじらずにノーズコーンのモデルを出してみると・・・

はいこれがノーズコーンです。ちなみにこれは側面図で、モデルの左上にある「View Type」ってところをいじれば色々見方を変えることが出来ます。

 

ではこんな感じで、ボディチューブ、フィン、パラシュート等を作っていくと・・・

こんな感じになりました。ここで、青点CGは重心、赤点CPは圧力中心です。ちなみにフィンやパラシュートなど、ボディチューブについているものは、(さっきサステナーを選択してたみたいに)ボディチューブを選択しないと選択できないので注意しましょう。

 

STEP.2エンジンを入れてみよう!

 

では次にこのモデルロケットを飛ばすためのエンジンを入れましょう。今回はB6-4を使ってみようと思います。まず今開いてるロケットデザインの横にある「Moter & Configuration」というところ(上の画像の赤く囲った所)をクリックしてみましょう。そこで「新しいモーター」をクリックすると、以下のポップアップが出てきます。

先程言ったように今回はB6-4というエンジンを使いますので、記号にB6と書いてあるものを選びましょう。また、B6の後ろに付いている「4」という数字がついています。よって赤で囲んである「Ejection charge delay」というところで「4」を選択しましょう。ちなみにこの数字は、推進剤が全て燃焼してからパラシュートを開くためのバックファイアーが出るまでの時間を表しています。

(モデルロケットのエンジンに関しては詳しく話すと長くなりそうなので省略します。)

今回はモデルロケットのエンジンを選びましたが、アメリカにある既製品ならハイブリッドエンジンとかもあります。

(多分)

これでエンジンのモデルが出てきましたね。他にもインナーチューブとか重りとか、必要に応じて入れていきますが、その辺はステップ3ですね。

 

STEP.3シミュレーションを回してみよう!

ようやくロケットのモデルが出来たということで、早速フライトシミュレーションを回してみましょう。「フライトシミュレーション」から「プロット・エクスポート」をクリックすると、以下のようなポップアップが出てきます。

ここで、X軸、Y軸について高度や速度、迎え角、抗力係数など、色々要素を決められます。ですがいっぱいグラフを出してもわけわかんなくなるだけなのでまずは横から見た軌道シミュレーションを見ていきましょう。グラフの種類から「横から見たフライトプロファイル」を選んでみましょう。きっとX軸は「風と垂直方向位置」、Y軸は「高度」となっているはずです。「Plot」をクリックしてグラフを見てみましょう。

高度が大体70mくらい、着地地点が発射地点から18mほど離れていますね。ちょっと高度が低い気がします。こんな風に、ちょっと問題っぽいところが見つかれば、先程のロケットデザインの方をいじって試行錯誤していきます。例えば、先程のデザインのボディチューブ、ノーズコーン、フィンを全体的に軽くすると・・・

高度が大体80mくらいになりました。その分当然落下地点は25m程度と離れましたね。そしたら、フィンやノーズコーンの形状を変えるなどして圧力中心位置の方を変えていきます。基本的には、安定性を大きくしていくと落下分散は小さくなります。

(どこをどのように変えると、圧力中心がどう変わるかは圧力中心の計算方法をちゃんと勉強すれば分かりますが、説明が大変なので割愛します。というか僕がちゃんと分かってない。)

 

最後に

ここまで、オープンロケットの使い方を色々書いてきましたが、少し気に留めておいてほしいのは、これはあくまでシミュレーションの一つであり、完全にそのロケットの航行性能を示すものではないということです。このオープンロケットで全然飛ばないロケットを実際に打ち上げてみると、十分に飛んだりすることがあります。一応このオープンロケットは計算過程がドキュメントとして公開されているので、気になる人は是非見てみてください。

(僕はマジで意味が分からないので見ません)

 

・・・文章、長ッ!そりゃ書くのに時間がかかるわけだ・・・

文章を簡潔にまとめるって難しいですねぇ。冗長に感じられた方がいれば申し訳ありません。

 

最後まで読んでいただきありがとうございます!

明日のアドカレの記事もお楽しみに!