Bye Bye Moore

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

python

ROS2 humbleでxArm公式力覚センサーを使えるようにする

実際のところ サービスを有効化し、力覚センサーを有効化する 設定ファイル $ cd ~/dev_ws/install/xarm_api/share/xarm_api/config/ $ vim xarm_params.yaml最終的に、falseになっている以下の行をtrueにして有効化。 ft_sensor_enable: true ... get_ft_se…

SSHリモートコマンドで接続先のJupyterNotebookファイルを実行する

接続先のJupyterNotebookファイルはWebsocketを使うとスマートに実行できるそうなのですが……私はそんな凄い技術は使えないので、遅くとも慣れたSSHリモートコマンドでやっていこうと思いました( 実際のところ 接続先が「user@remote.local」で、実行するJup…

Jupyter Notebookの接続トークンを知りたいのに"jupyter notebook list"で情報が得られないとき

Jupyter Notebookのトークンをしらべる 実際のところ 通常のjupyterなら、ここでトークンがでてきます が、ご覧の通りOT-2ではそれらしい表記がありません # jupyter notebook list Currently running servers: http://0.0.0.0:48888/ :: /var/lib/jupyter/n…

Jupyeter Notebookのファイルのすべてを実行させる

実際のところ $ jupyter nbconvert --to notebook --execute --inplace MyNotebook.ipynb"--to notebook --execute"で出力フォーマットとしてノートブックを指定し実行します。。 "--inplace"は、元のノートブックファイルを実行結果で上書きします。つまり…

cv2でRealsenseのカラー画像をRGBに明示的に変換

import pyrealsense2 as rs import numpy as np import cv2 # RealSenseの設定オブジェクト conf = rs.config() # カラー画像を取得 conf.enable_stream(rs.stream.color, width, height, rs.format.bgr8, fps) # Realsenseの画像受け取りパイプの解放 pipe …

【読書メモ】Pythonで学ぶ画像認識 機械学習実践シリーズ

Pythonで学ぶ画像認識 機械学習実践シリーズ作者:田村 雅人,中村 克行インプレスAmazon

UFactory Lite6のPython SDKで” API -> set_tgpio_digital(ionum=0, value=1) -> code=1”なるエラーがでるとき、グリッパーは明示的にオンにしておく

実際のところ [SDK][ERROR][2022-10-27 15:48:42][base.py:340] - - API -> set_tgpio_digital(ionum=0, value=1) -> code=1 なとき myip = "192.168.1.X" arm = XArmAPI(myip) arm.set_gripper_enable(True) 参考もと Lite6 - Gripper API Causes Errors · …

xArm Python SDKをUbuntu 22.04 LTSに構築する その2:位置制御・軸制御

実際のところ from xarm.wrapper import XArmAPI ## アーム接続先の決定 robot_ip = '192.168.1.195' arm = XArmAPI(robot_ip) #>> ROBOT_IP: 192.168.1.195, VERSION: v2.3.102, PROTOCOL: V1, DETAIL: 7,13,CS1304,DC1303,v2.3.102, TYPE1300: [1, 1] #>> …

xArm Python SDKをUbuntu 22.04 LTSに構築する その1:環境構築

実際のところ 必要なパッケージ $ sudo apt install git $ sudo apt install python-is-python3 リポジトリの用意 $ git clone https://github.com/xArm-Developer/xArm-Python-SDK.git 導入 $ cd xArm-Python-SDK $ python setup.py installfrom xarm.wrapp…

ROS2のlaunchファイルで引数を与える

実際のところ UFactory Lite6用ノード Joystick用ノード JoystickでUFactory Lite6を動かすpythonアプリ の三つを起動する例を考えます。 from launch_ros.actions import Node from launch.actions import DeclareLaunchArgument, ExecuteProcess from laun…

rclpyを活用しJoystickでロボットアームを動かす その2:Joyとxarmを連動する

実際のところ rclpyでやる せっかくVelもあるので xarm_ros2/xarm_msgs/srv/MoveVelocity.srv at humble · xArm-Developer/xarm_ros2 · GitHub import rclpy from rclpy.node import Node from xarm_msgs.srv import SetInt16ById,SetInt16, MoveVelocity fr…

rclpyを活用しJoystickでロボットアームを動かす その1:Joyの環境をROS2 humbleに構築

実際のところ 導入 $ sudo apt install ros-$ROS_DISTRO-joy*一緒に導入されるteleop_toolsはこれのこと GitHub - ros-teleop/teleop_tools: A set of generic teleoperation tools for any robot. つかう デバイス名の確認 $ lsusb ... Bus 001 Device 004:…

リスト内包表記なる魔界記法 その3:メソッドを連続して実行させてデータをつくる

存在ごと忘れていましたが……PythonにもRuby黒魔術めいた匂いのする暗黒記法「リスト内包表記」というやつがあります。 lambdaでぶん回すみたいなアレです。 実際のところ depth_info_topic_publisherのクラス内変数recent_valueを6回とって、 それを格納し…

rclpyの購読ノードに値を保存して読み出す

実際のところ ROS2標準メッセージのPointを購読し、 その値を内部の変数"recent_value"に格納するようなケースを考えます import rclpy from rclpy.node import Node from geometry_msgs.msg import Point # グローバル変数 global_value = None class Point…

ROSBOARDがQoS設定由来のエラーでROS2で使えないときの対処

このエラー対応は、恐らく近い将来本体にマージされます。 実際のところ ROS2 humble用のプロジェクトでもROSBOARDを使ってみようとしたところ、以下のようなエラーが。 [INFO] [XXX.YYY] [rosboard_node]: Subscribing to /camera/camera/color/camera_info…

C++からpython3スクリプトをコールする

実際のところ #include <cstdlib> int main() { // "helloworld.py" Pythonスクリプトを実行 int returnCode = system("python3 helloworld.py"); if (returnCode != 0) { // エラー処理 } return 0; } 参考もと cstdlib - cpprefjp C++日本語リファレンス</cstdlib>

Jupyter Notebook から rclpy を読み出す実験 その7:SubしてPubする

すでにあるトピックを購読、加工して再配布というような処理を考えます。 今回はD435の値を一定の書式にしてmsgとして配布する方法を試してみました。 実際のところ 前提 Ubuntu 22 LTS Jupyter スクリプト import rclpy from rclpy.node import Node from s…

Jupyter Notebook から rclpy を読み出す実験 その6:timer callback

実際のところ import rclpy from rclpy.node import Node import time class MyTimerNode(Node): def __init__(self): super().__init__('my_timer_node') self.timer = self.create_timer(1.0, self.timer_callback) # 1秒ごとにコールバック self.count = …

Jupyter Notebook から rclpy を読み出す実験 その5:Realsense D435の値を取得する

shuzo-kino.hateblo.jp のシリーズ 実際のところ 前提条件 Ubuntu 22 LTS Jupyter Notebook から rclpy を読み出す実験 その1:環境構築 - Bye Bye Mooreの手順を実装済み librealsense2のROS2用環境を構築済み スクリプト import rclpy from rclpy.node im…

【読書メモ】PythonでまなぶSQLiteデータベース入門 上巻: Excelデータベースからのステップアップ

PythonでまなぶSQLiteデータベース入門 上巻: Excelデータベースからのステップアップ作者:NSシステムズAmazon

実行中のクラスメソッド名をしらべる

ずいぶん前にRubyでクラスメソッドを調べるinspectメソッドをやりましたが shuzo-kino.hateblo.jpPythonにも、そういうのがあります。 実際のところ 組込みモジュールなので、特に導入の必要なし。 import inspect class MyClass: def method_one(self): pri…

画像ファイルのURLを指定するとBase64にして変数に格納するPythonスクリプト

実際のところ import requests import base64 import sys def download_file_as_base64(url): if not url: sys.stderr.write("Error: No URL provided.\n") sys.exit(1) response = requests.get(url) if response.status_code == 200: # ファイルの内容をBa…

ThreadでAPI処理待ちのアスキーアニメーションをだす

OpenAPIの処理が延々とかかって心理的にアレなので 実際のところ from openai import OpenAI from dotenv import dotenv_values import threading import time import sys def loading_animation(event): animation_chars = ['|', '/', '-', '\\'] i = 0 whi…

GPT-4をPythonで使う(再戦) その3:ビジョン判定をする

実際のところ 前提条件 公式サンプルで引用されているWikipediaの画像をsample.jpgとしてローカルに保存 スクリプト from openai import OpenAI from dotenv import dotenv_values import sys import base64 # Function to encode the image def encode_imag…

dotenvをPythonでつかう

shuzo-kino.hateblo.jp 10年近く前にRubyでは使っていたdotenvがOpenAIのPythonインターフェイスでも推奨だったので、使ってみることに。 実際のところ 導入 使い方 以下のような野蛮で不用心なスクリプトが from openai import OpenAI yourclient = OpenA…

複数多種のリポジトリを引っ張らないといけないとき、vcstoolが使えるかもしれない

ROSプロジェクトなど、各所に散らばっているリポジトリを一々手で入力してるとミスする可能性が増えてきます。 そんな時、vcstoolが使えるかもしれません 実際のところ $ pip install -U vcstool 標準入力からいれる こんなファイルがあったとして $ echo ro…

YDLiDAR X4の一番近い距離についてROS2 humbleのtopicとして流す

実際のところ import rclpy from rclpy.node import Node from rclpy.qos import QoSProfile, ReliabilityPolicy from sensor_msgs.msg import LaserScan from std_msgs.msg import Float32 class ClosestDistancePublisher(Node): def __init__(self): supe…

ROS2のlaunchファイルを用意する

実際のところ $ cd ~/dev_ws/src $ mkdir -p rpi_cpu_temp/launch $ touch rpi_cpu_temp/launch/cpu_temp_launch.py ROS1ではXMLだった気がしますが……ROS2からlaunchファイルはpython風の記法が使えるようになったそうで cpu_temp_launch.py from launch imp…

rclpyでROS2 paramsを使ってみる

以前つくったcpu温度をtopicで配信するcpu_tempの応用として、 nodeの挙動にパラメータを与える「ROS2 params」の実験をしてみます 適切に使えばビミョーな値の変更で毎回ビルドを変更しなくてよくなります 実際のところ 前提 shuzo-kino.hateblo.jp をベー…

rclpyでRaspberry Pi 4BのCPU温度を積算するActionを実装する

動作状態や途中介入を実現できるActionもやってみる事にしました 簡単化のため、CPU温度を積み上げる様式にします 実際のところ actionのビルド $ cd ~/dev_ws $ ros2 pkg create --build-type ament_cmake cpu_temp_action_msgs $ mkdir cpu_temp_action_ms…