この記事はロ技研秋のブログリレー11回目の記事です。
皆さんこんにちは.Assist研のみやたです.
今回は自作したラジコンカーの紹介をしたいと思います.
東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
この記事はロ技研秋のブログリレー9回目の記事です。
皆さんこんにちは、最近PCの自作・改造ばかりしている17-yotaです。今週の自作PC界隈はRTX3070発売やRDNA2(RX6000番台)発表、そしてZen3のベンチマークの噂などで熱いですね。ですが今回はCPUやGPUなどのPCパーツではなく、とある補強パーツを作成した話をしようと思います。
私が3か月前に組み立てたPC ですが、こちらの記事でも触れた通り7月中旬に一応ほぼ完成したものの、1つだけ3Dプリンタで作成したい補強パーツが残っており、10月になってようやく着手することにしました。
そのパーツですが、実はPCケースが140mmファンに対応していないのにも関わらず、冷却システムに280mm簡易水冷を採用しました。当然ファンとマザボが物理干渉したので、図のように手前にずらして適当に固定した結果、ファンの取り付けが不安(は?)だったので作ることにしました。
ただ補強するといっても既に接する面でネジ止めしたので外側から固定する必要があります。結果的に図のようにケース(左上のコの字型で固定)とファン(右下の爪で固定)を挟むクランプのようなパーツになりました。できればコの字と爪を別に作成し、ネジで圧着したかったのですが…
他の工作機械は扱える自信が全くなかったので3Dプリンタを選びましたが、こちらも使用経験が少なく確実に1回は失敗するだろうと思い、まずはプロトタイプを印刷することにして、PCに嵌まることを優先しサイズ的には少し緩めに作成しました。
出来上がったものを見てなんか小さい気がしたので取り付けようとしたら…縮尺間違えてました。察してください。
(上 : 2回目, 下 : 1回目)
縮尺に関してはstl変換前と後で辺の長さを比較した結果、10倍に拡大するのが正解だったようです(cmがmmに変換されたのかも?)。他にも、
などの修正をしました。
1回目は入力こそ違ったものの印刷自体は正常だったので、ひとまずプロトタイプとして完成するかと思ってました。しかし、印刷が終わったので部室に行ったら…何これ??
どうやら幅2mmだと積層できないっぽいので3mmに戻しました。爪側は思ったように印刷できたのでPCに取り付けて細かい調整をしました。
結果的に1回目の細部変更バージョンになったので積層では失敗しないと思いながら印刷していたのですが…プリンタの隣で祈りながら記事を書いてたら突然バリバリ!と音を立てたので、何かと思って中をみたら前回失敗した面と同じ箇所が割れていました。1回目は上手く印刷できた箇所なのに、無念。
結局3連続で失敗したため目標の10月中には完成できませんでしたが、今後は薄く積層できるようにサポート材をつけたり肉抜きをしたりしつつ、上手くいったら上下別で作成しネジで圧着する仕組みに変えようと思います。
まあ、たまには失敗した話をするのも現実的でいいですよね(逃避)
皆様こんにちは.18のhiraと申します.普段は水中ロボットを作るアクア研で活動し,情報通信系の平均点を底から支えています(引きずり下ろしているともいう).
さて,海で泳いだことがある人も多いかと思いますが,水の中はどうも見えにくいですよね.特に「青緑がかっていて暗い」と感じるのではないでしょうか.そして肉眼だけでなく,カメラで撮った写真も同様に色味の無く暗い写真になってしまいます.
この画像の様に水中においては,それも遠ければ遠いほど急速に青緑がかり暗く写ってしまいます.せっかく極彩色で美しいサンゴ礁を撮っても,見直したくなる画像とはならないでしょう.
せっかくダイビングをしたというのに真っ暗な写真ばっかりでは面白くありません.理系が恥も外聞も耐え忍びキラキラした海に繰り出すというのなら,桃色のサンゴ,真っ黄色の魚,紫の貝殻などなど,ただ海を楽しみに来た至極真っ当な方々の目では見ることのできない総天然色の「本物の色」を見てみたいですよね?
この記事はロ技研秋のブログリレー6回目の記事です
こんにちは、16のマッキーです。
みなさんはアイドルマスターシャイニーカラーズをやっていますでしょうか?やっていない方は今すぐ始めよう!→ https://shinycolors.idolmaster.jp/
現在そのアイドルマスターシャイニーカラーズの声優さんが個人で出演されているニコ生の番組が無限に増えています。今年に入ってから新しいニコニコチャンネルが10個以上できて、元からあったチャンネル内の番組としても10個ほど番組が新しくできています。
つまり何がいいたいのかというと
_人人人人人人人人人_
> 時間が足りない <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
そして番組のスケジュールが把握しきれないという問題があります。
(番組にもいろいろあって毎週完全に時間が決まっている番組もあれば、月一回で時間は不定の番組も数多くあるのです)
そこでニコニコ生放送の予定をGoogleカレンダーと同期するやつを作りました。
Googleカレンダーがこんな感じになります。明らかに番組被りすぎてるところがあるんだよなぁ…
やることは簡単
1.Googleカレンダーから現在登録されている番組を取得
2.チェックするチャンネルのこれからの番組をニコニコのAPIから取得
3.未登録の番組をGoogleカレンダーに追加
この3つです。今回はこれをPythonでやってみました(Pythonを選んだ理由は自分が慣れていただけなので深い理由は特にないです)
今回解説するのは・PythonからGoogleカレンダーにアクセスする部分とニコ生APIから番組の取得する部分です。
最初にGoogleカレンダーについてですが、GoogleカレンダーのAPIのページにいろいろ書いてあります。 https://developers.google.com/calendar/quickstart/python
またこちらのページを参考にしました。
https://non-dimension.com/python-googlecalendarapi/
1.Google Calender APIの有効化Google Calender APIよりEnable the Google Calendar APIボタンから
credentials.json
をダウンロード
2.以下のコマンドよりクライアントライブラリのインストールする
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
3.以下のコードを実行するとGoogleカレンダーの権限を要求されるので許可するとtoken.pickle
というファイルが生成されます。
このファイルがあると次回から何も聞かれずカレンダーにアクセスできます。
操作したいGoogleカレンダーの操作したいカレンダーの”設定と共有”からカレンダーIDをコピーしてきてgoogle_calendarId
に代入して操作するカレンダーを指定します。
以下Googleカレンダーの読み書きをする例です。
import os import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request from datetime import datetime, timezone, timedelta TIMEZONE = '+09:00' google_calendarID='ここにカレンダーID' SCOPES = ['https://www.googleapis.com/auth/calendar'] ## Add calender creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) print(creds) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.pickle', 'wb') as token: pickle.dump(creds, token) print(token) service = build('calendar', 'v3', credentials=creds) event = { 'summary': 'title', 'location': 'location', 'description': 'description', 'start': { 'dateTime': '2020-10-27T20:00:00+09:00', 'timeZone': 'Japan' }, 'end': { 'dateTime': '2020-10-27T21:00:00+09:00', 'timeZone': 'Japan' } } print(event) event = service.events().insert(calendarId=google_calendarID,body=event).execute() ## Read calender creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token/token.pickle', 'wb') as token: pickle.dump(creds, token) service = build('calendar', 'v3', credentials=creds) timefrom=datetime.now().isoformat()+TIMEZONE timeto= (datetime.now() + timedelta(days=60)) timeto=timeto.isoformat()+TIMEZONE events_result = service.events().list(calendarId=google_calendarID, timeMin=timefrom, timeMax=timeto, singleEvents=True, orderBy='startTime').execute() events = events_result.get('items', []) print(events)
次にニコニコのAPIについてです。例えば
のようにAPIエンドポイントhttps://api.search.nicovideo.jp/api/v2/live/contents/search
の後ろにクエリパラメータをいろいろ付けてあげるとデータが返ってきます。これをブラウザなどのURLを入れるところに入れれば検索結果が返ってきます。
pythonでの例は以下の通り
import requests import urllib.parse nicolive_API_endpoint='https://api.search.nicovideo.jp/api/v2/live/contents/search' q_='一般(その他)' #タグ q=urllib.parse.quote(q_) targets='tags' #タグ検索 fields='contentId,channelId,title,startTime,liveEndTime,description' filters_channelId='&filters[channelId][0]='+str('2644423') #チャンネルのID filters_liveStatus='&filters[liveStatus][0]=reserved' #enum('past','onair','reserved') _sort='-startTime' _context='nico live to google calendar' _limit=str(60) url=nicolive_API_endpoint+'?q='+q+'&targets='+targets+'&fields='+fields+filters_channelId+filters_liveStatus+'&_sort='+_sort+'&_context='+_context+'&_limit='+_limit res = requests.get(url).json() print(res)
ニコニコのAPIの説明はこちら
https://site.nicovideo.jp/search-api-docs/search.html
基本的にはこれでいろいろ取得できるはずです。
以上の2つを使っていろいろ見やすくしたり、LINE LIVEに対応したりして実際に使ってるのはこちら↓
https://github.com/mmaakkyyii/NicoLive2GoogleCalendar
私はこれを毎日自動で実行するようにしているので最新のニコ生の情報が同期するようになって最高になりました(番組を見る時間は足りない)
この記事はロ技研秋のブログリレー5回目の記事です。
タイトルにある六分儀というのは星や太陽、月と水平線の間の角度を測定することができる装置です。星の位置が分かれば緯度が、現在の時刻と星の位置が分かれば経度が分かるので昔は航海などに使われていました。
後は三角関数を使ってビルとかの高さを計ることもできます。
詳しい使い方とかはwikipediaとか見てください。 “六分儀作ってみた” の続きを読む
ロ技研秋のブログリレー2020の4回目の記事です。
こんにちは.皆さん,回転数計測してますか?
ロボットの関節がどれくらい曲がったかや,タイヤが何メートル進んだかを知るには,それを駆動するモーターがどれくらい回転したのかを知る必要があります.
一般的にこの測定にはエンコーダーと呼ばれる機器を使用することをご存じの方も多いでしょう.
一口にエンコーダーといっても色々な種類が存在しますが,これらは主に「磁気エンコーダー」「光学式エンコーダー」「容量性エンコーダー」に分類できます.
今回は構造も簡単でモーターが発生させる磁気の影響もうけにくい「光学式エンコーダー」を自作していきます. “なるだけ安く光学式エンコーダーを自作する” の続きを読む
ロ技研秋のブログリレー2020の3回目の記事です。
こんにちは。18ゆいです。
ブログリレーに合わせて、ここで告知し、9/27に開催したオンラインロボコンの結果を報告をします。(いまさら)
画像はトロフィー授与の様子です。
ロ技研秋のブログリレー2020の2回目の記事です。
みなさんこんにちは。ふらいです。
why we created julia を読むと多くの人がjuliaを使ってみたくなると思います。
僕たちが欲しい言語はこんな感じだ。まず、ゆるいライセンスをもったオープン ソース言語。 そこに、Cの速さとRubyの動的さが欲しい。 Lispのような同図像性があって真のマクロを使えるけど、Matlabのように分かりやすくて自然な数学的記述もできる言語だ。 そのうえ、Python並みに汎用プログラミングに使えて、R並みに簡単に統計分析ができて、Perl並みに文字列処理を自然にできて、Matlab並みに線形代数計算に強くて、シェル並みにうまくプログラムをつなぎ合わせることができる。 さらに、すっごい簡単に覚えられるけど、凄腕ハッカーも満足させられるものだ。 インタラクティブに使えて、かつコンパイルもできる。
どんな人にでも使ってみて欲しいですが特に
juliaはパッケージ管理機能があって、標準ライブラリで行列演算ができて、Cの関数を呼び出せて、pythonも呼び出せて、ROSのパッケージもあって、webフレームワークもあって、…と紹介しているときりがないので、今回は特にjuliaではこんな書き方ができて楽しいよというのをいくつか紹介しようと思います。
こんにちは。18のゆいです。
オフラインでの活動がほとんどできていないので、新歓イベントも兼ねてオンラインロボコンを開催します。