Bye Bye Moore

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

python

Google ColabとOpen3D

https://shuzo-kino.hateblo.jp/entry/2018/07/06/232654 でやったツールがOpen3dと使えるようになったのでメモ 実際のところ ! pip install open3d import open3d as o3d dataset = o3d.data.LivingRoomPointClouds() pcds = [] pcds.append(o3d.io.read_po…

pygcodeでgcodeを生成 その2:接続先機体の情報の予想値をだす

実際のところ 仮想マシンの予定位置 from pygcode import Machine from pygcode import GCodeRapidMove, GCodeStartSpindleCW,GCodeFeedRate,GCodeLinearMove,GCodeStopSpindle gcodes = [ GCodeRapidMove(Z=5), GCodeStartSpindleCW(), GCodeRapidMove(X=10…

pygcodeでgcodeを生成 その1:環境構築

実際のところ 導入 $ pip3 install pygcode スクリプト from pygcode import * gcodes = [ GCodeRapidMove(Z=5), GCodeStartSpindleCW(), GCodeRapidMove(X=10, Y=20), GCodeFeedRate(200), GCodeLinearMove(Z=-1.5), GCodeRapidMove(Z=5), GCodeStopSpindle…

numpngwで画像を色々生成してみる

shuzo-kino.hateblo.jp で使った画像生成ライブラリnumpngwを色々と試してみる 実際のところ 今書いてまs 参考もと GitHub - WarrenWeckesser/numpngw: Functions that create PNG and animated PNG files from numpy arrays.

Pybullet上のxarmをcolaboratry上で動かしてみる

Pythonでリアルタイム衝突シミュレーションをやるライブラリPyBullet - Bye Bye Moore の続き表示するだけでは旨みが少ないので、xarmを動かしてみます 実際のところ 前回と同様、xArmのURDFを導入 %%time !pip install pybullet import pybullet as p impor…

Pythonでリアルタイム衝突シミュレーションをやるライブラリPyBullet

物理シミュレーションはROSなしでは苦しいと思ってましたが……あるとこにはあるんですねぇ。 実際のところ 今回目的としているxArmのURDFモデルはライブラリにデフォでついてきます。 GitHub - bulletphysics/bullet3: Bullet Physics SDK: real-time coll…

Raspberry Pi (というかOpenGL ESを使うARM系Linuxボード)はOpen3Dで表示は考えない方が良い

Raspberry PiはOpenGL ESを使っているので、元祖OpenGLを使うOpen3Dの描画系は使用を考えない方が良いという話。 実際のところ $ cat result.txt | python3 myOpen3DMake.py [Open3D WARNING] GLFW Error: GLX: Failed to create context: GLXBadFBConfig [O…

shlexでsubprocessに渡すシェル文生成で楽をする

実際のところ import shlex shlex.split("mount -o remount, rw /") # ['mount', '-o', 'remount,', 'rw', '/'] スペースを空けまくるという陰湿な嫌がらせにも対応 >>> shlex.split("mount -o remount, rw / ") # ['mount', '-o', 'remount,', 'rw', '/'] …

sys.stdin.bufferがバイナリファイルを扱える

shuzo-kino.hateblo.jp で stdin = sys.stdin.buffer.read()という感じで標準入力からバイナリデータを扱いました。最初は以下の様にそのまんまstdinからreadしていたのですが、これだと素では文字列型になってしまいます stdin = sys.stdin.read()公式ドキ…

標準入力から画像ファイルを読んでcv2に渡す

これまでのARコードサンプルでは過去のヤラカシ由来の私怨からファイルに書き出してから読んでいました。 これだと、書き出し分の処理時間がありますし、 実際のところ import cv2 import numpy as np import sys aruco = cv2.aruco dictionary = aruco.getP…

【読書メモ】前処理大全  データ分析のためのSQL/R/Python実践テクニック

前処理大全[データ分析のためのSQL/R/Python実践テクニック]作者:本橋 智光技術評論社Amazon何事も段取りが大切といわれますが、それは所謂機械学習でも変わりません。 本書「前処理大全」は機械学習やデータ成形の段取り第一段階である、データの前い処理…

単調増加する内部タイマーをつかうmonotonicメソッド

とあるロボットのプログラムを読んでいた時にmonotonicメソッドなるものを見つける time.monotonic() #>> 3585.757559266 Python公式によると Return the value (in fractional seconds) of a monotonic clock, i.e. a clock that cannot go backwards. The …

globalメソッドとlocalメソッド

前回はevalメソッドをつかって文字列をメソッドとして解釈する方法をやりましたが 今回は組み込みメソッドのglobalメソッドやlocalメソッドをつかって実行する方法について 実際のところ argsdict = {'name': 'Joe', 'family': 'Brand'} globals()['fullName…

evalメソッドでJSON文字列をよろしくパースしFunctionとして実行

JSONで記述された動作レシピがあり、こいつを何とかして Rubyをバリバリ書いていた時はevalとかlambdaをやってたな~と思いだし、Pythonでも同じアプローチ方向でやってみる事に 実際のところ Functionとして呼ぶ場合、カッコが必要なのでお忘れなく……。 imp…

D405で遊ぶ その2:librealsence for Pythonの環境を構築する

説明を半端に読んでなかったせいでそこそこ苦労したのでメモ 実際のところ $ git clone https://github.com/IntelRealSense/librealsenseか、 Releases · IntelRealSense/librealsense · GitHub からソースコードを入手以下はgitから落とした場合なので、ソ…

Bottleで特殊ヘッダーつきPOSTコマンドの受け口をつくる

curlコマンドのヘッダーの要素を追加 - Bye Bye Moore で扱った、ヘッダに固有命令である旨をつけてPOST命令で結果を返す方法を自分でもやってみる Bottleで画像を受け取る - Bye Bye Moore を拡張する形で作っていきますbottleでヘッダを呼び出すには"reque…

xArm Python SDK で動いてるものに名前付きパイプで他所から位置情報をながす

ArUcoとの連動を前提としますが、まずはロボットアームのみを実験 実際のところ 実行環境 Nano Pi Neo 2 Ubuntu Core 20LTS 受け手側(実行側)のPython import os import sys import time sys.path.append(os.path.join(os.path.dirname(__file__), '../../…

二個のArUcoマーカーを角として領域を切り取る その2:領域内のマーカー位置を表示

shuzo-kino.hateblo.jp の続き 実際のところ まず模擬的な移動マーカーを生成 $ composite -geometry 48x48+270+220 ar12.png target.png target_1.png $ composite -geometry 48x48+360+260 ar12.png target.png target_2.png $ composite -geometry 48x48+…

二個のArUcoマーカーを角として領域を切り取る

実際のところ 重心を使いましたが、気になる人は内側の角にするのもよさそう。 import cv2 import numpy as np aruco = cv2.aruco dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) img_src = cv2.imread("target.png", 1) corners, ids, rej…

ArUcoのマーカーを基準に検知域を表示

ロボットの動作領域など、ある程度範囲は決まっているが当日の状況に応じて少し変更する場合 設定ファイルで細かいパラメータを設定する方法もありますが…… 今回は固定USBカメラからArUcoのマーカーを読み取り、その重心を基準に右下方向に伸びる動作領域を…

BottleでArUcoマーカーを追跡し四隅情報をコンソールに出す

前回の成果を活かして、Arucoを追跡する 実際のところ ハード NanoPi Neo 2 Fifine K420 camera.py フレームの出力をバイト列ではなく、imencodeのままで実施。 今回はArUcoのマーカー追跡を使うため、画像として渡さないといけないため。 import cv2 class …

BottleでUSBカメラの動画を配信する簡易サイトをつくる その1:MotionJPEGで出す

mjpeg-streamerやGstreamerでカメラの画像を配信する方法は何度か触りました。確認するには便利でしたが、少し手の込んだ事をやろうとすると苦労したりするので、 今回は学習をかねてこれらの機能を簡易的に再現してみようと思います。 実際のところ WEB鯖は…

blenderでpythonやる その5:テクスチャをはりつける

実際のところ import bpy mat = bpy.data.materials.new(name="foobar") mat.use_nodes = True bsdf = mat.node_tree.nodes["Principled BSDF"] texImage = mat.node_tree.nodes.new('ShaderNodeTexImage') texImage.image = bpy.data.images.load("C:\\User…

blenderでpythonやる その4:頂点を追加してPointCloud的な

実際のところ import bpy def point_cloud(ob_name, coords, edges=[], faces=[]): """Create point cloud object based on given coordinates and name. Keyword arguments: ob_name -- new object name coords -- float triplets eg: [(-1.0, 1.0, 0.0), (…

blenderでpythonやる その3:カメラを動かしたりアニメーションしたりする

実際のところ カメラを動かす デフォではこんな感じ ここで、カメラを動かすと D.objects[0].location.x += 2 D.objects[0].location.y += 2 アニメーションする import bpy from math import sin start_pos = (0,0,0) ob = bpy.context.object frame_num = …

blenderでpythonやる その2:基本のcubeで遊ぶ

shuzo-kino.hateblo.jp の続きで、色を変えたり並べたり 実際のところ 色を変える デフォ画面ではCubeは"[1]"に入ってるので、それにマテリアルをセットします。 最後にrenderで描画。 mat = bpy.data.materials.new('C1') mat.diffuse_color = (51 / 256, 1…

blenderでpythonやる その1:コンソールの基本的なこと

3DCGから動画編集まで何でもできる謎のツールBlender。 およそ4年前にギョームで使う説明CGのために少し触り、凄腕モデラーの前に挫折して放棄してましたが……。当時注目していた機能の一つとしてPythonをインターフェイスとするスクリプト機能がありました…

RasPi4b + Webcam + ArUcoでARマーカー追従のロボット その3:マーカーの位置によって

実際のところ 前回のをベースに、中心点から一定量以上動いた場合に右か左かを判定するような簡単なのを。 #! /bin/python import cv2 aruco = cv2.aruco img = cv2.imread("1.jpg") dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) corners…

標準入力をwhileループで待ち受けるpython3スクリプトに名前付きパイプ越しに別の端末から文字列を送り付ける

なんだかクッソ長いタイトルですが……要は python3側はwhileループで標準入力にきた結果を待ち構えている 標準入力には別の端末で生成された文字列を送り込みたい という課題を、これまで作ってきたモンの寄せ集めで作ってみましたという話 実際のところ 名前…

pythonでwebDAVサーバー

webDAVはブラウザ上でファイルマネージャー的な事をやれる機能です。 ディレクトリにファイルが生成されているか確認する等々、非エンジニアに依頼するときに少し便利。 自分でやる分にはnetcatでやるのが楽なんですけどね……。 実際のところ ~$ pip install …