NEW ENTRY

no image

2021/12/3

MacでAtCoder:g++の#includeのコンパイルエラーを回避

which -a g++ type -a g++ (-a : 全てのコマンドの場所を表示)   g++ -v % g++ -v Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 13.0.0 (clang-1300.0.29.3) Target: arm64-apple-darwin21.1.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin   ここから「stdc++.h」ファイルを取ってくる。 include-dirに指定されている場所にbitsディレクトリつくって、中にstdc++.hを設置。 無事にコンパイルできるようになりました。

ReadMore

no image

2021/12/2

NLP:すぐできる形態素解析。C++でMeCabとIPA辞書を使った形態素解析(Linux、Mac)

形態素解析を実装する必要があったのでメモ。 思った以上に簡単に始められた。 MeCabのインストール データのダウンロード MeCab、IPA辞書(Googleドライブのためwgetなど不可) インストール //一般的なフリーソフトウェアと同じ手順でインストールできます。 tar zxfv mecab-X.X.tar.gz cd mecab-X.X ./configure --with-charset=utf8 make sudo make install //辞書のインストール tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz mecab-ipadic-2.7.0-XXXX ./configure make sudo make install iTerm2やTerminalが文字化けしてしまう場合 こちら参考で解決できました。 形態素解析 #include <iostream> #include <mecab.h> int main(int argc, char **argv) { //解析する文章 char input[1024] = "司馬牛君子を問う。子曰く、君子は憂えず懼れず、と。曰く、憂えず懼れざれば、斯ち之を君子と謂うか、と。子曰く、内に省みて疚しからざれば、夫れ何をか憂え何をか懼れん、と。"; // 1語づつ品詞分類 MeCab::Tagger *tagger = MeCab::createTagger(""); // スペース区切りの文章に出力 // MeCab::Tagger *tagger = MeCab::createTagger("-Owakati"); const char *result = tagger->parse(input); //ターミナルに出力 std::cout << result << std::endl; delete tagger; } main.cppとして保存して、以下を実行。(main.cppとtext.txtは同じディレクトリに置いて、そのフォルダで実行) g++ `mecab-config --cflags` main.cpp `mecab-config --libs` && ./test.out | head -n 30 http://www.mwsoft.jp/programming/nlp/mecab_cpp.html 品詞ごとの登場頻度を調べる。 #include <fstream> #include <string> #include <vector> #include <map> #include <iostream> #include <mecab.h> using namespace std; vector<string> split(string s, string c) { vector<string> ret; for (int i = 0, n; i <= s.length(); i = n + 1) { n = s.find_first_of(c, i); if (n == string::npos) n = s.length(); string tmp = s.substr(i, n - i); ret.push_back(tmp); } return ret; } typedef map<string, int>::const_iterator map_freq_it; typedef std::vector<map_freq_it>::const_iterator vec_stu_citer_t; bool compare(const map_freq_it &a, const map_freq_it &b) { return (a->second > b->second); } int main(int argc, char **argv) { ifstream fin("./text.txt"); //同じフォルダの「text.txt」 string str; char c; while (fin.get(c)) { str.push_back(c); } MeCab::Tagger *tagger = MeCab::createTagger(""); const MeCab::Node *node = tagger->parseToNode(str.c_str()); map<string, int> freq; map<string, int>::iterator it; for (node = node->next; node->next; node = node->next) { vector<string> strvec = split(node->feature, ", "); if (strvec[0] == "動詞")//品詞を指定 { string noun = strvec[6]; it = freq.find(noun); if (it != freq.end()) { it->second += 1; } else { freq.insert(pair<string, int>(noun, 1)); } } } vector<map_freq_it> sorted; for (map_freq_it mfi = freq.begin(); mfi != ...

ReadMore

no image

2021/11/16

Arduino IDEの開発環境づくり

M5-Core2 値段:6,600円(スイッチサイエンス)   追加パッケージ情報 https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json ボードマネージャー M5stack(130Mb) 追加ライブラリ   ESP32(販売元Espressif) スペック(ESP32-WROVER-E) 値段:1360円(秋月) Wi-Fi、Bluetooth(BLE)標準対応、M5stackの中身 特徴 いろんな種類のがある。無線付き便利。Micro-ROS対応。Arduino上位互換。 出会い 秋月で目が合ったから。 追加パッケージ情報 https://dl.espressif.com/dl/package_esp32_index.json ボードマネージャー esp32 by Espressif Systems Seeeduino(販売元seeed) ボード名:Seeeduino XIAO M0 スペック 値段:683円(スイッチサイエンス) コネクタ:Type-C CPU:Arm Cortex-M0+ 32ビット 48 MHz(SAMD21G18) ストレージ:256 KB Flash、32 KB SRAM ピン数:14(入出力 ×11、5 V ×1、3.3 V ×1、GND ×1) インターフェース: I2C ×1、UART ×1、SPI ×1 LED数:4(ユーザLED ×1、電源LED ×1、シリアルポートLED ×2) リセットボタン:基板上に二つのリセット用ランド(ショートすることでリセットできます) 給電 / 通信インターフェース:USB Type-C 電源パッド:バッテリ電源用 開発環境:Arduino IDE 回路保護用の突起カバー サイズ:20 × 17.5 × 3.5 mm ※GPIOピンの出力は3.3 Vです。 特徴 小さい、ハイスペ、安い、手に入りやすい。 出会い 飛行体をつくるのに軽量マイコンを探して。   追加パッケージ情報 https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.jsonz ボードマネージャー Seeduino SAMD Boards

ReadMore

no image

2021/11/14

M1 Macにbrew、Atcoder-cli、python jupyterを入れる。

Mac操作メモ WordPress 段落と見出し:Control + option + 1~6(英数) これ見つけるのに苦労。笑 一般 削除:comand + delete ディレクトリ上下:command + 上下 全画面移動(横):control + 左右 ウィンドウ一覧(Win + Tab) : control + 下 全画面一覧:control + 上 Home/End:command + 左右 PageDown/Up:fn + 上下 スクショ(4一部、3全体):「shift」「command」「4」の 3 つのキーを同時に長押し 使い慣れてなさすぎて、基本操作すらままならない。笑 Macに環境構築 brewを入れる 公式の手順通りに進める。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/yuri/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" brew install wgetでエラー。。。なんでやねん。 brew doctor #Warning: Homebrew/homebrew-core was not tapped properly! Run: # rm -rf "/opt/homebrew/Library/Taps/homebrew/homebrew-core" # brew tap homebrew/core #Warning: Some taps are not on the default git origin branch and may not receive #updates. If this is a surprise to you, check out the default branch with: # git -C $(brew --repo homebrew/core) checkout master rm -rf "/opt/homebrew/Library/Taps/homebrew/homebrew-core" brew tap homebrew/core git -C $(brew --repo homebrew/core) checkout master 言われるがまま修復。前にちょっとトライした時になんか失敗してたのかも。 無事にインストール完了。 Python環境作る(Miniforge)参考 Miniforgeの方がAnacondaより良いと言い切ってたので、ここを参考にした。(使ったことないの使うの好きw) wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh bash Miniforge3-MacOSX-arm64.sh source ~/.zshrc conda create --name py39_test python=3.9 conda activate py39_test Jupyter入れる conda install jupyterlab conda install -c menpo opencv jupyter lab 無事にJupytelab構築。 メモ jupyter lab #起動 conda activate 環境名 conda deactivate #環境から抜ける #環境は(環境名)$ 入力補完と思ってオートコンプリート入れたけど、なんか古いから動かない? conda install -c anaconda argcomplete   VSCode:参考 VS Codeで以下実行。 >Python: Create Terminal >Python: Select Interpreter ⇨Python3.9選択 参考にあったノート新規作成はコマンドなかった。 ノートブック作ってから、VSCodeからファイル開いたら無事に動いた。 atcoder-cli curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash ターミナル再起動 nvm install node npm install -g npm pip -V #pip21.3 - python3.9 npm -v #8.1.3 npm install -g atcoder-cli pip3 install online-judge-tools acc login oj login https://beta.atcoder.jp/ 完成!      

ReadMore

no image

2021/11/7

ESP32で/Joyトピックをサブスクライブする。

RMW_QOS_POLICY_DURABILITY QoSを揃えてみたら行けるかと思って、ベストエフォートに変更。⇨変わらず。 https://micro.ros.org/docs/tutorials/programming_rcl_rclc/pub_sub/ https://micro.ros.org/docs/tutorials/programming_rcl_rclc/qos/ ライブラリーの場所 ~/uros_ws/esp32/firmware/toolchain/esp-idf/components/freertos/include/ /opt/ros/foxy/include/ ${workspaceFolder}/firmware/freertos_apps/microros_esp32_extensions/build/compile_commands.json エラー① けど、ノードにデータ送ると(↓)エラーでESP32が自動再起動してしまう。クラッシュしてるぽい。 yaki@ubu20l15:~/uros_ws/esp32$ ros2 topic info /joy -v シリアルで吐き出されるデータ観ると、 Received: 0 Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled. Core 0 register dump: PC : 0x4015636a PS : 0x00060b30 A0 : 0x8014ff54 A1 : 0x3ffd1450 A2 : 0x00000000 A3 : 0x00000000 A4 : 0x00000000 A5 : 0x00000000 A6 : 0x3ffd1770 A7 : 0x00000004 A8 : 0x3ffae920 A9 : 0x3ffae920 A10 : 0x3ffae978 A11 : 0x3ffd1460 A12 : 0x000000ff A13 : 0x0000ff00 A14 : 0x00ff0000 A15 : 0xff000000 SAR : 0x0000000c EXCCAUSE: 0x0000001c EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff ELF file SHA256: 8ad241366caf8f10 Backtrace: 0x40156367:0x3ffd1450 0x4014ff51:0x3ffd1760 0x400d5c0b:0x3ffd17b0 0x400d8fa5:0x3ffd17d0 0x400d91cd:0x3ffd1810 0x400d9648:0x3ffd1850 0x400d9699:0x3ffd1890 0x400d5cd7:0x3ffd18d0 0x400874dd:0x3ffd19e0 Rebooting... 「Guru Meditation Error: Core 0 panic'ed」でエラー。(Guru Meditation(Wiki)) 参考1、参考2、 解決策① データ型が間違ってたぽいので、修正。 sensor_msgs/Joy Messageの型を確認(公式)してみると、 std_msgs/Header header  ⇨uint32 seq   time stamp ⇨int32 sec uint32 nanosec   string frame_id float32[] axes int32[] buttons テスト① デモのC言語プログラムを少しいじって、テスト。 yaki@ubu20l15:~/uros_ws/esp32$ ros2 topic info /joy -v Type: sensor_msgs/msg/Joy Publisher count: 0 Subscription count: 1 Node name: yaki_joy_subscriber Node namespace: / Topic type: sensor_msgs/msg/Joy Endpoint type: SUBSCRIPTION GID: 01.0f.82.bf.39.8c.00.00.01.00.00.00.00.00.01.04.00.00.00.00.00.00.00.00 QoS profile: Reliability: RMW_QOS_POLICY_RELIABILITY_RELIABLE Durability: RMW_QOS_POLICY_DURABILITY_VOLATILE Lifespan: 2147483651294967295 nanoseconds Deadline: 2147483651294967295 nanoseconds Liveliness: RMW_QOS_POLICY_LIVELINESS_AUTOMATIC Liveliness lease duration: 2147483651294967295 nanoseconds 無事にノードは動いた。(↓プログラム) #include <rcl/rcl.h> #include <rcl/error_handling.h> #include <rclc/rclc.h> #include <rclc/executor.h> #include <stdio.h> //メッセージ型を読み込み #include <sensor_msgs/msg/joy.h> //FreeRTOS読み込み #include "freertos/FreeRTOS.h" #define RCCHECK(fn) \ { \ rcl_ret_t temp_rc = fn; \ if ((temp_rc != RCL_RET_OK)) \ { \ printf("Failed status on line %d: %d. Aborting.\n", __LINE__, (int)temp_rc); \ return 1; \ } \ } #define RCSOFTCHECK(fn) \ { \ rcl_ret_t temp_rc = fn; \ if ...

ReadMore