Bye Bye Moore

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

python

Jupyter Notebook から rclpy を読み出す実験 その2:ロボットアーム UFactory Lite6の操作実験

rclpyからUFactory Lite6を操作してみます 実際のところ import rclpy from rclpy.node import Node from xarm_msgs.srv import SetInt16ById, SetInt16, MoveCartesian class XArmServiceClient(Node): def __init__(self): super().__init__('xarm_service…

Jupyter Notebook から rclpy を読み出す実験 その1:環境構築

少しパラメータを変えて実験したい場合に一々コマンドを叩くのも面倒になってきたので Jupyter Notebookからrclpyを呼び出して少し実験を楽にする方法を試してみました 実際のところ 前提条件 Ubuntu 22 LTS mDNS構築済み 導入 $ sudo apt install jupyter-c…

rclpyでROS2のトピックを扱う その3:service

実際のところ 実践例として、xArm の ROS2 humble用パッケージのサービスをコールしてロボットアームを動かしてみます。 $ cd ~/dev_ws/ $ source install/setup.bash スクリプト import rclpy from rclpy.node import Node from xarm_msgs.srv import SetIn…

Rhino + Grasshopperでロボットアームの動作計画をつくる その4:GrasshopperとPythonを連動させる

実際のところ 参考もと Rhino - Learn to use Rhino Rhino - Your First Python Script in Grasshopper

http.cookiesを使ってみる その2:有効期限を設定

実際のところ from http.cookies import SimpleCookie cookie = SimpleCookie() cookie["user"] = "admin" # user の Morsel オブジェクトを取得 morsel = cookie["user"] # 有効期限を設定 morsel["expires"] = "Thu, 01 Jan 2030 00:00:00 GMT" 参考もと h…

http.cookiesを使ってみる その1:簡単にフォームに表示

実際のところ shuzo-kino.hateblo.jp のThreadつきCGIをベースに、index.htmlにcookieの内容を反映するサンプルを考えてみます。 index.html <html> <body> <p>Name from cookie: {name}</p> <p>Value from cookie: {value}</p> <form action="/setcookie" method="post"> Name: <input type="text" name="name"><br> Value: <input type="text" name="value"></form></body></html>

Python3の標準ライブラリのみでCGI その3:認証をつける

実際のところ import http.server import socketserver import threading import base64 import json class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer): daemon_threads = True class CGIHandler(http.server.CGIHTTPRequest…

Python3の標準ライブラリのみでCGI その2:多少の並行処理ができるようにする

前回の例ではhttp.serverの仕様上、リクエストを一個しか処理できません そこで、複数処理ができるようにthreadingを使って逃げてみます ……pythonで並列処理ってあまりいい思い出が無いですけどね(白目 実際のところ import http.server import socketserve…

Python3の標準ライブラリのみでCGI その1:とりあえず簡単なモノ

業態上、作るシステムは小型なのが多いです。 大規模アクセスはそもそも仕様外なのでCGIでも十分なケースは少なくありません。 CGIというとPHPのイメージがあるのですが、仕組み上はPythonだろうがLispだろうが実行はできるおのこと。 実際のところ とりあえ…

Python3でUNIXソケットを経由して受信する

UNIXソケットはシステム内のプロセス間で完結する通信であれば、早くて安全です。 要はローカルファイルの読み書きなので 実際のところ UNIXソケット"/tmp/my_socket"を受信し、 パケットのバリデーション(今回は12ケタで英小文字と数値)を実施するスク…

"command data1 data2"なテキストを判定する単純な話

I2C等等、単純な文字列でくるパケットのソートのお話 今まではgrepで処理やってました が、これスペース区切りである事が前提であれば、区切り文字で配列に突っ込むだけで良い 実際のところ def send_response(str): # 本来は何か素敵な出力をしてくれます p…

試験用にランダムなメールアドレスを生成してみる

実際のところ import random import string # ドメインの設定 DOMAIN = "example.com" # 英単語のリスト (必要に応じて追加・変更してください) WORDS = ["apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew"] def generate_ema…

4-5次ルンゲ=クッタ法とオイラー法の比較

ロボットアーム制御の勉強をしていたところ、ルンゲ=クッタ法なる言葉がでてきました。 将来位置・速度の予想という事でオイラー法は何となく知ってましたが……ルンゲ=クッタ法は言葉も思い出せず(実際やっていないかもしれない)。 というわけで、どうも一…

OpenCV for pythonでMJPEG用のテスト画像をつくる

import cv2 class MyVideoCapture(): def createTestImage(self,count): # 画像の解像度 image = np.zeros((480, 640, 3), dtype=np.uint8) # テキストのフォントとスケール font = cv2.FONT_HERSHEY_SIMPLEX font_scale = 2.0 # テキストの色(白) text_co…

BottleでUSBカメラの動画を配信する簡易サイトをつくる その2:MotionJPEGにOpenCVで細工する

shuzo-kino.hateblo.jp から発展して、OpenCVで加工して出力するようにします 実際のところ 参考もと

tkinterで指定秒ごとに実行する処理

実際のところ import tkinter as tk def say_hello(): print("Hello, world!") root = tk.Tk() root.after(2000, say_hello) # 2秒後にsay_hello関数を呼び出す root.mainloop()

tkinterでメッセージボックスの確認まで処理を待つ挙動を実装する

実際のところ import tkinter as tk import tkinter.messagebox def preprocess(): #ここに前処理めいたの print("preprocess") def mainprocess(): #ここに本処理 print("main process") def button_click(): print("Button clicked") preprocess() result …

Azure Functionsをつかう その3:Azure IoT Hubと連動する

実際のところ Azure from azure.iot.device import IoTHubDeviceClient, Message import json import time import random import os # Read the config file with open('config.json', 'r') as f: config = json.load(f) CONNECTION_STRING = config['CONNEC…

Raspberry Pi Pico Python SDK その3:I2Cマスター

実際のところ from machine import Pin, I2C import utime slaveAddress = 0x42 registerAddress = 0x06 writeData = b'123' i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000) #接続先を調べる i2c.scan() #slaveAddressに対し書き込み i2c.writeto(slave…

Raspberry Pi Pico Python SDK その2:アナログ入力

実際のところ from machine from utime adc = machine.ADC(26) #26番pinを割り当て white True: value = adc.read_u16 #16bitな値で読み取り print(value) utime.sleep(1) 4だと内部温度計を使える模様 参考もと PythonSDK公式資料 GitHub - raspberrypi/pic…

Raspberry Pi Pico Python SDK その1:デジタル入出力

実際のところ 出力 from machine import Pin led = Pin("LED", Pin.OUT) #出力として設定 led.value(1) #High led.value(0) #LOW 入力 from machine import Pin pin16 = Pin(16, Pin,IN, Pin,PULL_UP) #16番ピンをプルアップで入力待ち pin16.irq(lambda pin…

AzureのIoT系をつかう その10:データを取得してstreamlitで出す

実際のところ config.json { "IOT_HUB_CONNECTION_STRING": "Your IoT Hub Connection String", "DEVICE_ID": "Your IoT Device ID", "INTERVAL": 10 } streamlit_azure.py import streamlit as st import time import json from azure.iot.hub import IoTHu…

Raspberry Pi 3B+とRaspberry Pi Picoを連動させる その1:下準備

実際のところ Raspberry Pi Picoの開発環境 本来の性能を活かすのであればC/C++なのですが……今回はmicroPython MicroUSBコネクタ近くについてるBOOTSEL ボタンを押下したままの状態でUSBをPCに接続。「RPI-RP2」みたいな外部ストレージとして認識されるので…

AzureのIoT系をつかう その10:RasPi用Grove拡張基盤と連動した動きをつくる

これまでの総決算としてRasPi用Grove拡張基盤を経由したサンプルを作ります。 実際のところ 装置まわり これまでと同様、機体はRaspberry Pi 3B+にRaspberryOS 64bitを使用。これに、SeeedStudioのGroveBaseHATを追加します。SeeedStudio Grove Base HAT for…

AzureのIoT系をつかう その8:実物RasPiで指令データをうける

実際のところ config.json { "connectionString": "Your Primary Connection String Here", "interval": 2000 } index.js(node.js版) 新しいライブラリとしてonoffを導入します $ npm install onoffこの状態で const fs = require('fs'); const device = req…

AzureのIoT系をつかう その7:実物RasPiからデータを送る

実際のところ shuzo-kino.hateblo.jp でデバイス登録とRasPiにIoT Hub用のnodeJs環境が構築されている状態を想定します。 config.json { "connectionString": "Your Primary Connection String Here", "interval": 2000 } index.js(node.js版) const fs = re…

python-fuで画像を弄る その2:画像の自動生成

実際のところ from gimpfu import * def create_image_with_text(filename, text): # Create a new image image = gimp.Image(320, 320, RGB) # Create a new layer layer = gimp.Layer(image, "Background", 320, 320, RGB_IMAGE, 100, NORMAL_MODE) # Add …

python-fuで画像を弄る その1:とりあえず使ってみる

実際のところ Gimpを開いて「フィルター」 =>「 Python-fu」 手元環境では何故かPython2.7系と古い上に、メソッド中で空白を入れるとインデント不正で怒られる……。 試す 外付けストレージ"D"の特定パターンの画像に赤い丸を from gimpfu import * import glo…

Jupyter Notebookを本体ごととめる

実際のところ pythonのプロセスを(一時的にでも)とめる 起動したプロセスをpsで調べても 6836 ? Ssl 0:02 /usr/bin/python3 -m ipykernel_launcher -f /home/shuzo/.local/share/jupyter/runtime/kernel-89930c09-2f34-421e-bd36-1956961c76ee.jsonという…

データサイエンスに向いたPython用可視化ツールstreamlit その5:表示をカラム分けする

実際のところ import streamlit as st import sqlite3 import pandas as pd import plotly.express as px from datetime import datetime, timedelta # Connect to SQLite database con = sqlite3.connect("logging_data.db") # Get data from loggingData t…