2024-01-01から1ヶ月間の記事一覧

グラムシュミットの直交化

dora.bk.tsukuba.ac.jp Matlabでの実装 clear; close all; a1 = [1 1 0]'; a2 = [0 -1 1]'; a3 = [1 1 1]'; e1 = a1/norm(a1) e2 = a2 - dot(a2,e1)*e1; e2 = e2/norm(e2) e3 = a3 - dot(a3,e1)*e1 - dot(a3,e2)*e2; e3 = e3/norm(e3) % dot(e1,e2) % dot(e1…

DiscordのBotのテスト

Message content intentを有効にしておく必要がある import discord import os intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('We have logged…

Discordで毎週誰がどれだけのメッセージを送信したかカウントしたい

調べた感じ、すぐに使えるBotはないみたいだった。 discord.pyでBotを作成し、メッセージをカウントするたびに誰がコメントしたかをデータベースに残していくのが一番簡単な実装みたい。

VS codeにESP32の開発環境を設定する(ESP−IDF)

github.com

AutowareをDockerでインストールする

NVIDIA GPUつきのUbuntuにインストールする rocker --nvidia --x11 --user --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:humble-latest-prebuiltautowarefoundation.github.io上記でエラーが出たので以下を実行するcould n…

SLERP(球面線形補間:クォータニオンによる大円補間)による補間

swkagami.hatenablog.com(23)式を使えば、クォータニオンq1からクォータニオンq2への補間位置が逐次的に求められる。 このテクニックは「実践ロボット制御」でも単位クォータニオンを用いた大円補間として紹介されていた。 clear; close all; origin = [1,0,…

クォータニオンによる回転演算子の意味

クォータニオンによる回転ではq⊗r⊗q*で回転を表現する。 qを回転行列Rのようにとらえれば、位置ベクトルの「前に」qを置くのは自然に思える。 ところで、なぜ回転を表すqとその共役q*で挟み込むのか、というのが納得できていない。クォータニオンの積q⊗r⊗q*…

ロドリゲスの公式による回転とクォータニオンによる回転

ロドリゲスの公式とクォータニオンによる回転の両方を実装する クォータニオンには主にハミルトン方式とJPL方式の2つの定義があるが、ハミルトンを採用する。最初に間違えてクォータニオンによる回転をq⊗rとしていた。qは回転を表すクォータニオン、rは位置…

Android上で動画をストリーミングしてPCで受信する

LAN経由(AndroidのIP)で動画にアクセスしたい。 Android上でmjpg_streamerを動かすイメージ。このあたりが参考になりそう github.com github.com

可操作楕円体の計算

ヤコビアンJのとき、 JJ^Tの固有ベクトルが長軸、短軸の方向を表し、 JJ^Tの固有値が長軸、短軸の大きさを表す。楕円の関係式 勉強しよう数学解答集: 原点の回りに回転した楕円の方程式から楕円の軸を計算する clear; close all; syms L1 L2 L3; syms th1 th…

微分運動学とレーベンバーグ・マーカート法による逆運動学の計算

微分運動学を用いた逆運動学の解法を考える。 シリアルマニュピレータでは順運動学を幾何的に導くのは簡単だが、逆問題である逆運動学の式を幾何的に導くのは一般的に難しい。 そこで微分運動学を考える。微分運動学を考える理由は、非線形な順運動学の関係…

2次元ロボット(3DOF)の順運動学のアニメーション

theta1を0から90度まで振る clear; close all; syms L1 L2 L3; syms th1 th2 th3; x1 = L1*cos(th1); y1 = L1*sin(th1); x2 = L1*cos(th1)+L2*cos(th1+th2); y2 = L1*sin(th1)+L2*sin(th1+th2); x3 = L1*cos(th1)+L2*cos(th1+th2)+L3*cos(th1+th2+th3); y3 =…

DockerのUbuntuでX11VNCの解像度を上げる その2

$ sudo vim /etc/supervisor/conf.d/supervisord.conf vncの起動時にgeometryオプションをつける。ついでにSSHの起動も設定した。[program:xvfb] priority=10 command=/usr/local/bin/xvfb.sh stopsignal=KILL[program:x11vnc] priority=20 command=x11vnc -…

ROSでKUKAを動かす(RViz)

KR6ではないが、KR5の例があった。 github.comビルドしたら動いた。 $ roslaunch kr5_description start_kr5_description_rviz.launch

ROSパッケージ kuka_experimentalのビルド

catkin buildするだけだが、エラーが出た。 CMake Error at /opt/ros/noetic/share/genmsg/cmake/genmsg-extras.cmake:94 (message): add_message_files() directory not found: /home/ubuntu/catkin_ws/src/my_robot_arm_service/msg Call Stack (most rece…

VNCでx11vncの解像度を調整する

x11vncの起動時オプション、/etc/X11/xorg.confの設定などを試したがうまくいかなかった。 ただ、dockerを再起動したら解像度が大きくなっていた。どうもブラウザを開いてnoVNCで最初にアクセスしたときの解像度が保持される?もしそうならブラウザをなるべ…

Dockerコンテナ(Ubuntu)にSSHで接続する

1. openssh-serverのインストール $ sudo apt install openssh-server 2. SSH起動 $ sudo service sshd start 3. ポートフォワーディングして起動(Dockerコンテナの22をホストの2222に転送) $ docker run -p 2222:22 4. SSHで接続 $ ssh ubuntu@localhost …

XCodeでリモートデバッグ

Androidは何度も接続しなおさないといけないが、iOSでは一度設定すれば大丈夫みたい zenn.dev

XCodeでCocoapodsを使う

忘れてたことがたくさんあった1. XCodeプロジェクトを作成 2. 普通にビルド→成功 3. プロジェクトフォルダに移動してpod init; pod installを実行(空のPodfile) 4. .xcworkspaceが生成されるのでこれを開く(ここがミソ。.xcodeprojを開き続けており、Podf…

実践コンピュータビジョンのサンプルコードを動かす

4.3.cube.pyでsiftモジュールが使われているが、VLfeatから提供されているsiftバイナリがもはや動かないのでOpenCVに書き換える必要がある。 ChatGPTの協力も得て書き直したのが以下。4.3.cube.py #!/usr/bin/python # -*- coding: utf-8 -*- from PIL impor…

モデル予測制御について

qiita.comramune6110.hatenablog.comqiita.commyenigma.hatenablog.com

Phantomの撮影動画を地上でリアルタイムで受信して加工する

以下の2つのAndroidサンプルが動いた。 Android Manifest.xmlにDJIのAPI KEYを設定し、GradleのSDKのバージョン(Javaのバージョン)をJava11に指定した。M1 MacのAndroid Studio(Giraffe)ではビルド・実行できたが、Intel MacのAndroid Studio(Hedgehog…

Real VNC のVNC Viewerで⌘-Tabを有効にしたい

Special keyを無効にする

Androidでエラー "Installed Build Tools revision 31.0.0 is corrupted"

stackoverflow.com # change below to your Android SDK path cd ~/Library/Android/sdk/build-tools/31.0.0 \ && mv d8 dx \ && cd lib \ && mv d8.jar dx.jar

D435のbagファイルを再生する(pyrealsense2使用)

qiita.com pip install pyrealsenseするとビルドエラーが出た ソースからインストールしてみる github.comgit clone https://github.com/IntelRealSense/librealsense mkdir build & cd build cmake ../ -DBUILD_PYTHON_BINDINGS=bool:true make -j4エラーが…

macOSでrealsense-viewerを動かす(D435)

インストール brew install librealsense普通に起動すると落ちた $ realsense-viewer 17/01 08:25:22,736 INFO [0x7ff85e701b80] (context.cpp:336) Found 1 RealSense devices (mask 0xff) 17/01 08:25:22,797 ERROR [0x700003980000] (handle-libusb.h:127…

MatlabでVisual servoing (VS)のサンプルコードを動かす

ここからダウンロード sourceforge.net一応こっちにもおいた github.com 1. ZIPファイルを展開し、vstoolbox_school/ss_R13以下の*.matファイルをvstoolbox_school/vstoolbox_R13に移す2. initHBVS.mを実行3. .mdlファイルを実行(例. IBVS.mdl, PBVS.mdlなど)

noVNCでコピー&ペーストができない

ブラウザでVNCを動かすnoVNCでコピー&ペーストができない ブラウザではなくVNC Viewer(Real VNCのもの)を使ったらできた。 -p 59000:5900でDockerのVNCのポート5900をローカルの59000に転送 $ docker run -v ~/ros1_ws:/home/ubuntu/catkin_ws:cached -p 60…

Pytorchのログをtensorboardで可視化する

ここを参考に www.oio-blog.com qiita.com SummaryWrite()のデフォルトのログ保存先はrunsディレクトリデフォルトだと反映される時間が遅いので、flush_secs=1オプションをつける writer = SummaryWriter(flush_secs=1)以下で起動する $ tensorboard --logdi…

Streamlitで状態を維持する

ここを参考に。 qiita.com以下のsession.pyを使う。 github.comStreamlitのバージョンが上がって動かなかったので以下のように修正した session.py from streamlit.runtime.scriptrunner.script_run_context import get_script_run_ctx from streamlit.runti…