Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

python

非同期実行につかえるconcurrent.futures モジュールはJupyter notebookのセルの中でもつかえる

concurrent.futuresは、Pythonで並列処理を簡単に実装するための標準実装のライブラリです。 With構文とあわせて使うことで、タスクの投入から完了管理までを自動的に処理できます。 あとに残らないのでJupyter notebookのセル内で自己完結できるわけです。…

with構文と前処理・後処理の話

だいぶ以前にwith構文と合わせて使えるcontextlibの話を扱いました。 shuzo-kino.hateblo.jp当時はyield構文スゲー状態だったので、yieldに注目してましたが……後々から考えると開始と終了について明示的に書けるのが、本来のこの構文の強みだったみたいです…

genesisを試す その3:IKを解いてロボットを動かす

実際のところ 公式サンプルをベースに、メソッドなどを切り分けて実装してみます import numpy as np import genesis as gs class FrankaController: def __init__(self, scene): self.scene = scene # エンティティの追加のみを行う self.setup_robot_entit…

pipでいれたパッケージのバージョンをしらべる

実際のところ python-canはバージョンによって一部挙動が異なり、何度かサポートで面倒なめに遭いました…… というわけで $ pip show python-can Name: python-can Version: 4.4.2 Summary: Controller Area Network interface module for Python Home-page: …

ikpyでURDFをもとにシンプルにIKをとく その2:空間角度の指定もやる

つづきRoll 180°、それ以外0°として指定したいものの、このままオイラー角では使えません。 オイラー角を回転行列へ変換します。 実際のところ import numpy as np from ikpy.chain import Chain import os # URDFからチェーンを作成 chain = Chain.from_urd…

ikpyでURDFをもとにシンプルにIKをとく その1:まずは単純に三次元空間をとく

ikpyは名前の通りPythonでikを解く時に使えるシンプルなIK実装です。 作り捨て、単純な挙動をつくるだけ、あるいは私のようにMoveItなんて高尚なものは使えない人におすすめ。 実際のところ URDFファイル 今回は”minimalURDF.urdf.xml”という7軸のロボット…

MG4010I36をPythonで動かす

探してみても、以下のような情報くらいしか出ておらず……肝心のパケットはどこに行ったんだっていう Open CAN Protocol 1. CAN bus parameters and single motor command send and receive message format Bus interface: CAN Baud rate: 1Mbps The format of…

ollamaがツールをコールできるようになったので試す

執筆時点で全部のモデルに対応しているわけでは無いそうで 今週、上級モデルならGPT-4o越えだと話題になったLlama 3.1を導入して遊んでみようと思います 実際のところ llama3.1の導入(してない場合) ollama pull llama3.1 スクリプト import json import o…

ローカルLLM環境を構築できるOllamaをためす その6:業務知識を喰わせる

shuzo-kino.hateblo.jp の続き 私が今回【読書メモ】実践 生成AIの教科書 - Bye Bye Mooreから学んだ概念にRAG(Retrieval-Augmented Generation:情報検索補強生成)というのがあります。 要するに業務知識を喰わせるという事……らしい。 実際のところ 与え…

ローカルLLM環境を構築できるOllamaをためす その3:Pythonでチャットしてみる

実際のところ 導入 $ pip install ollama 実験 反応がないと不安になるのでstreamはTrueに設定 import asyncio from ollama import AsyncClient async def chat(): message = {'role': 'user', 'content': 'Why is the sky blue?'} async for part in await …

cybergearをpythonで弄る その4:複数軸を位置で動かす

実際のところ 複数軸動かすときは、ID毎にインスタンスを生成して操作してあげればよいです。 各軸のIDは先に書き込みしておいてください。 import os import sys # 添加pcan_cybergear库的路径 # パスの追加 sys.path.append(os.path.join("..", "cybergear…

cybergearをpythonで弄る その3:一軸だけ速度で動かす

shuzo-kino.hateblo.jp の続き 今度は速度を変更 実際のところ # モーターの有効化 motor1.set_run_mode(motor1.RunModes.SPEED_MODE) motor1.enable() ## 速度パラメータを指定 motor1.write_single_param("spd_ref", value=0) # ゼロ点に移動 motor1.write…

cybergearをpythonで弄る その2:一軸だけ角度で動かす

実際のところ CANの立ち上げ ### CAN状態の確認 $ ip link show type can ### 既存プロセスの停止 $ sudo ip link set can0 down ### 通信レートの設定 $ sudo ip link set can0 type can bitrate 1000000 ### プロセスのたちあげ $ sudo ip link set can0 u…

cybergearをpythonで弄る その1:環境構築

実際のところ 作業環境 Ubuntu 22.04LTS 使用デバイス Ubuntuが動作する機体で操作するので、USB CANFD変換器を使いますUSB - デュアルチャンネル CANFDコンバーター Raspberry Pi4/Pi3B+/Pi3/Pi Zero(W)/Jetson Nano/Tinker Board/PC用 Windows Linuxソフト…

paramikoをつかいpython3でSSHリモートコマンドをやる その1:とりあえず使う

shuzo-kino.hateblo.jp などでやったリモートコマンドですが……これをsubprocessなりで立ち上げると、毎回毎回立ち上げる羽目になり効率が宜しくありません。 実際のところ 導入 $ pip install paramiko スクリプト import paramiko # SSHクライアントのイン…

"c.NotebookApp.ip = '*' "を設定したのにJupyter NotebookがmDNS経由で実行できないとき、起動時に"ip"オプションをつけると何とかなるかもしれない

"c.NotebookApp.ip = '*' "を設定したのにJupyter NotebookがmDNS経由で実行できないとき、 起動時に"ip"オプションをつけると何とかなるかもしれません 実際のところ ついでに、バックグラウンド処理をするようにします 初回はnohup.outからトークンを回収…

【読書メモ】Pythonによる物理シミュレーションと強化学習: PyBullet + PyTorch

Pythonによる物理シミュレーションと強化学習: PyBullet + PyTorch作者:Tech CodeAmazon

pybulletをJupyter Notebookでつかう その4:addUserDebugParameter

ipywidgetsに似たような機能としてaddUserDebugParameterというのもあります 実際のところ メソッドの説明 paramId = p.addUserDebugParameter(paramName, rangeMin, rangeMax, startValue) スクリプト例 import pybullet as p import time # PyBulletのGUI…

pybulletをJupyter Notebookでつかう その3:addUserDebugLine

実際のところ メソッドの詳細 lineId = p.addUserDebugLine(lineFromXYZ, lineToXYZ, lineColorRGB, lineWidth, lifeTime) 使い方 import pybullet as p p.connect(p.GUI) # 線の開始点と終了点 start_point = [0, 0, 0] end_point = [1, 1, 1] # 線を描画(…

pybulletをJupyter Notebookでつかう その2:ロボットアームを動かす

実際のところ import pybullet as p import time import pybullet_data # GUIモードでpybulletを起動 p.connect(p.GUI) # デフォルトのデータパスを設定 p.setAdditionalSearchPath(pybullet_data.getDataPath()) # 重力の設定 p.setGravity(0, 0, -10) # 平…

pybulletをJupyter Notebookでつかう その1:とりあえずキューブを動かす

実際のところ ライブラリ群の読み込み pybulletは当然として、描画のためにIPython.displayのdisplayとclear_outputよみます。 import pybullet as p import time import pybullet_data from IPython.display import display, clear_output import matplotli…

楕円を重心からN度傾けた場合の点の変化

あらかじめ取得済みの、楕円を描く座標点があります これを重心軸からN度傾けた場合、それらの座標点がどうズレるかを計算する 実際のところ 座標点は全部で8点、これを重心を起点に15度ずらす例は以下の通り、。 折角なので、これをmatplotで描画してみ…

Ubuntu 22 LTSでOpenCALM をためす その3:ファインチューニングなるモン

前回までの実験で、とりあえずローカルでLLMが動いたものの……なんやらトンチカンな回答を返す妙なブラックボックスがプロセスに居座っているだけになっていました。 こいつを目的用に改造するには、ファインチューニングなるモンが必要なようです。 実際のと…

Ubuntu 22 LTSでOpenCALM をためす その2:チャット的な挙動

実際のところ スクリプト argから質問文をとって回答するようにします。 import sys import torch from transformers import AutoModelForCausalLM, AutoTokenizer def generate_answer(question): loadmodel = "cyberagent/open-calm-7b" model = AutoModel…

Ubuntu 22 LTSでOpenCALM をためす その1:環境構築

OpenCALMはCyberAgentさんが開発した大規模言語モデル(LLM)です。 ChatGPTなどと同様、テキスト生成や理解など自然言語処理タスクに利用できますが、 特に日本語の理解に重点をおいているようです。 実際のところ 前提 Ubuntu 22.04LTS python 3.10.12 RTX 4…

Python3でgRPCをつかう その4:リフレクション機能

リフレクション機能は、protoファイルを扱う側の環境が同ファイルを動的に使ったりするときに使うアレコレです。 実際のところ という事で……protoファイルで定義されてない内容も動的に解釈して使う方法をやってみます protoファイル syntax = "proto3"; pac…

Python3でgRPCをつかう その3: Protocol Bufferファイルについてもう少し詳しく

実際のところ 型チェックつきのバイナリである その1でやったように、異なる機器間を高速で通信するために作られた規格です。 バイナリなのでJSONのようなテキストベースと比べてデータ量が軽いです。 加えてエンコード・デコードともに高速なのでオーバー…

Python3でgRPCをつかう その2:サーバーとクライアントをつくる

実際のところ ソースコード サーバー側 from concurrent import futures import grpc import helloworld_pb2 import helloworld_pb2_grpc class GreeterServicer(helloworld_pb2_grpc.GreeterServicer): def SayHello(self, request, context): return hello…

Python3でgRPCをつかう その1:準備

gRPCはGoogleによって開発された、異なるデバイスやアプリケーション間で関数や手続きを呼び出すための*1フレームワークです。 HTTP/2を利用してバイナリ形式でデータをやり取りすることで、アプリケーション間を低遅延で安定した通信網でつなぐ事ができます…

Jupyter Notebookでブラウザを一々起動しない

リモート転送時にオプションなしで起動すると、X Window系のエラーが出て鬱陶しいので、調べてみました。 実際のところ jupyter notebook --no-browser 参考もと docs.jupyter.org