うごくものづくりのために

技術的な備忘録がメインです。

Ubuntu 16.04 で ワイヤレスネットワークカード Intel Dual BandWireless-AC 8265 が動かなかった話。

結論 Ubuntu16.10なら動く。 が、サポート切れてるのでやるべきじゃない。 いきさつ 諸般の都合があり、今年買った ThinkpadにUbuntu16.04を入れることになりました。 入れたのはいいんですが、ネットワークカード(Intel Dual BandWireless-AC 8265)が全く…

中華製のやっすいロジックアナライザを試してみた。

以前amazonで中華製のやっすいロジックアナライザを購入していました。 24MHz 8CH で1150円(!?)という代物。本当に動くのか。 環境のセットアップから、最終的にはUARTのプロトコルアナライザを動かすところまでやってみたいと思います。 環境 Windows 10 開…

DeepLearningの勉強メモ

明けましておめでとうございます。 正月休み暇なので、「人工知能でなんとかなりませんか」おじさんに対抗できるよう理論武装しておきたいと思います。 なお、この記事は自分用のメモであるため、読んでもあまり参考にはならないかと思います。。。 書籍「ゼ…

Orange Pi 比較表を作った

OrangePi、いいですよね。安い。 が、買おうと思ってもどれがどれだかよくわからなかったので、比較表を作りました。 (公式からデータコピペしてきただけですが、、、) docs.google.com それだけ。

はじめまして、ROS2

めでたくROS2がリリースされたので、Macにインストールして遊んでみようと思います。 環境 OS : Mac OS Sierra 10.12.6 CPU : Core i5 2GHz RAM : 8GB インストール 以下のページを参考にしながら進めます。 github.com 事前に必要なもののインストール ROS2…

Pythonのbytesの生成に関して

勘違いしていたので備忘録。 bytes(255) は b'¥xff' とはならず、 b'¥x00¥x00¥x00 ... ¥x00' と、255個の¥x00で満たされたbytesになる。 a = 255 a.to_bytes(1, "big") とすれば b'¥xff' が得られる。 参考 python3ならintとbytesの変換が楽勝になる - Blank…

Python pandasのメモ

Python pandasが難しいので、メモ。 データ構造 Series : 1次元のデータ DataFrame : 2次元のデータ 時間系 Time Series / Date functionality — pandas 0.20.3 documentation TimestampとPeriodの2種類がある。 Timestampは、ある時点を表す。 Periodは、あ…

Trelloのカード移動をSlackに通知してくれるbotを作った。

Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(1) - うごくものづくりのために Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(2) - うごくものづくりのために 上記の記事で作成したシステムを整理して、b…

Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(2)

前回 の記事で、py-trelloでwebhookの登録をし、Flaskでサーバを立ててTrelloの通知を受け取ることができました。 今回は、拾ってきたTrelloの通知情報をslackに投げるところを作りたいと思います。 ゴール Trelloのウェルカムボードのカードの移動を、Flask…

Python3 + Flask + py-trello + slackerでTrelloの更新情報をslackに流す(1)

弊チーム(https://github.com/SSL-Roots/Roots_home/wiki)では、タスクの管理にTrelloを使っています。 また、最近チャットツールとしてslackを導入したので、チームの活動に関する全情報をslack上に集約したいと思っています。 そこで、TrelloでタスクがDon…

MakerFaireTokyo2017に出展しました。

8/5,6に行われた、MakerFairTokyo2017に、RoboCup SSLチーム Rootsとして出展してきました! はじめに、展示に足をお運び頂いた皆様にお礼を伝えたいと思います。 展示を見て笑顔になって頂いたり、「すごいねー」と子供たちが食いついてくれたりしたことが…

GoogleProtocolBuffer(C++)で、NULL文字(/0, 0x00)を含むデータをパースする方法

GoogleProtocolBufferのC++版で、NULL文字を含むデータをパースする際にハマったのでメモ。 socket通信のrecv()で受け取ったデータをParseFromString()でパースしようとした際、 データに"0x00"が出現するとヌル文字(\0)だと解釈して、パースが正常終了しま…

一つのコールバック関数に複数のSubscriberを割り当てる方法

ROS

タイトルの通りです。 別々のTopicをSubscribeしている複数のSubscriberで、同じコールバック関数を呼び出す方法です。 準備 rostopic pub -r 10 chatter_0 std_msgs/String "message of chatter 0" & rostopic pub -r 15 chatter_1 std_msgs/String "messag…

第49回 情報科学若手の会 に参加してきた

情報科学若手の会 情報科学若手の会という、情報系の若手(?)が集う勉強会に参加してきました。 結構歴史のある勉強会で、バックボーンに情報処理学会がいる、割とちゃんとした勉強会です。 とはいえ、想像していたよりもフランクな雰囲気で、あの空気感で…

rosコード(C++, Python)から現在存在するトピックのリストを取得する方法

C++ c++ - ROS - get current available topic in code (not command) - Stack Overflow roscpp: ros::master Namespace Reference ros::master::V_TopicInfo master_topics; ros::master::getTopics(master_topics); for (ros::master::V_TopicInfo::iterat…

「rostest」 の使い方

rostest - ROS Wiki rostestを使ううれしさ launchファイルと同様の手法で多数のノードを起動したりパラメータを設定した後に、ユニットテストを走らせることができる C++ならgtest, Pythonならunittestによって作成したテストコードを実行可能 使い方 roste…

SSL Referee box のマルチキャストアドレス設定

GitHub - RoboCup-SSL/ssl-refbox: RoboCup Small Size League Referee Box Refboxのディレクトリにある、referee.conf に各種コンフィグが保存されています。 ssl-refbox/referee.conf at master · RoboCup-SSL/ssl-refbox · GitHub (Verの古いやつだと、re…

【メモ】decision_making パッケージの rqt_decision_graphが動かない問題

plugin.xmlに設定されているパスが間違っている <library path="src"> これを <library path="src/rqt_decision_graph"> こう修正 あと、間違ったパスの状態でrqtを起動すると間違ったパスの情報がrqtに残ってしまうらしいので rm ~/.config/ros.org/rqt_gui.ini rqt これで削除</library></library>

navigationスタックで学ぶpluginlibの使い方

navigationスタックはpluginlibによる実装がなされていて、拡張しようと思ったらpluginlibの知識が必要ということなので、勉強しています。 今回は、navigationスタックのソースを追っかけていきながら、pluginlibの基本的な使い方について解説します。 自分…

costmap_2dの障害物情報のクリアについて

勘違いしてました。 costmap_2d/hydro/obstacles - ROS Wiki costmap_2dは、センサ情報としてPointCloudまたはLaserScan型のメッセージを受け取ります。 RoboCup SSLでは、フィールド上部のカメラからロボット及びボールの絶対座標が常に取得できるので、 そ…

C++でのROSのノード開発メモ

ROS

Catkin設定方法 How to do common tasks — catkin 0.6.15 documentation ソースファイルの追加 CMakelist.txtの、add_executable()にファイル名を追加する add_executable(node_name src/filename1.cpp src/filename2.cpp) node_nameの部分は、このファイル…

状態機械を作る"Smach"パッケージの使い方(1)

ロボットに限らずですが、状態機械を用いることで、様々なタスクの遷移をスマートに表現することができます。 ROSの"Smach"パッケージを使えば、状態機械をPythonスクリプトによって比較的簡単に実現できます。 ja/smach - ROS Wiki Smachのチュートリアルペ…

navigationスタックを理解できそう

やっとぼんやりながら正体が掴めつつあるので、メモを随時残していきます 2016/10/11 追記 座標系のところに、REP 105(座標系についてまとめたROSの文章)の一部翻訳を乗せました。(正確ではない可能せがあります) wikiのこれ(下画像)の階層構造 だいたい…

rosserial を用いてROSとArduinoの間の通信を行う

ROS

久方ぶりの記事です。 今回はタイトル通り、rosserialを用いてROSとArduinoを接続します。 ついでに、カスタムメッセージを用いた通信についても解説します。 rosserialとは ja/rosserial - ROS Wiki rosserialは、シリアル通信を用いて、ROSと組み込みボー…

Navigationスタックを使う (1) - 障害物情報のセット

Navigationスタックは、ロボットの移動制御を行うための大規模なスタックです。 このスタックに、目標地点、障害物、マップ、オドメトリの情報をそれぞれ与えると、それらを統合して、台車の速度指令を出力してくれます。 内部的には、グリッドセルに区切っ…

"RefereeBox"のインストール方法

前の記事で、RefereeBoxのインストールに失敗して悩んでいましたが、解決方法がわかりましたので、インストール手順を記しておきます。 最後のほうに、全部自動でインストールしてくれるシェルスクリプトも書いておきます。 ソースファイルのダウンロード、…

"RefereeBox"のインストールをしたかった

Small Size Robot League - referee ソースファイルは、Source (.tar.gz) version 2014 finalからダウンロード。 解凍後のフォルダ内にREADME-LINUX.txtというファイルがあるので、それを参考にしながらインストールを進めます。 sudo apt-get install libpr…

tfは遅い?

現在、grSimとROSの結合作業をしています。 とりあえず、grSimからマルチキャストで送信される各ロボットの座標を、tfでブロードキャストしようと思ったのですが、問題発生。 おおよそ60Hzで座標データが飛んでくるので、その周期に合わせてブロードキャスト…

PythonとGoogleProtocolBuffersを用いてgrSimのデータを取得する

GoogleProtocolBuffers for Pythonのインストール grSimをインストールした時 にダウンロードした GoogleProtocolBuffers のフォルダ内に、Python用セットアップファイルが同梱されているので、それを用いてインストールします。 まずは、このフォルダに移動…

Pythonでマルチキャストのデータを読む

RoboCupSSLでは、チーム間共有のビジョンサーバがフィールド上のカメラ情報を統合し、各ロボットの座標などのデータを取得してくれます。 そのデータは、UDPマルチキャストによって送信されてきます。 その情報を使って、各チームのAIはいろいろと戦略を練っ…