Bye Bye Moore

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

ROS

ros1_bridgeをつかう その2:teleop_twistと接続させる

ROS

実際のところ 前提 Ubuntu 22.04 LTS ROS1 noetic on Docker AgileX Tracerの環境構築済み ROS 2 humble 作業ディレクトリは "~/dev_ws" ROS 1側の用意 $ roscoreターゲットであるtracerのノードを起動 $ roslaunch tracer_bringup tracer_robot_base.launch…

ros1_bridgeをつかう その1:環境構築

ROS

実際のところ 前提 Ubuntu 22.04 LTS ROS1 noetic on Docker ROS 2 humble 作業ディレクトリは "~/dev_ws" 構築 $ cd ~/dev_ws/src $ colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure環境に反映 $ source ~/dev_ws/i…

Ubuntu 22 LTS上に "ROS 1 noetic on Ubuntu 20 LTS "の環境をつくる

ROS

実際のところ Dockerfile # Ubuntu 20.04 LTSをベースイメージとして使用 FROM ubuntu:20.04 # 環境変数を設定 ENV DEBIAN_FRONTEND=noninteractive # ROS Noeticのインストール RUN apt-get update && apt-get install -y software-properties-common && \ …

ROS 2 humbleのcolconでビルドしたlaunchファイルはinstallディレクトリのもの

ROS

そりゃそうだろうという話ですが、なぜか詰まったため 実際のところ ROS 2 humbleのcolconでビルドしたlaunchファイルはinstallディレクトリのものがコールされます。 srcにも同じものがあるので、たとえばlaunchファイルが直下のconfigファイルを参照してい…

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…

ROS2 humbleのRealsense用標準launchファイルにてRGBカメラ/深度センサーの解像度を変更する

ROS

実際のところ depthがmoduleなのに対して、rgbはcamera。 私はこれで数日潰しました。 ros2 launch realsense2_camera rs_launch.py enable_color:=true enable_depth:=true depth_module.profile:=848x480x15 rgb_camera.profile:=848x480x15 pointcloud.en…

Systemdタイマーユニットをつかう

Systemdでプログラムを初期起動させる際、周辺デバイス(たとえばLANとか)の立ち上げが遅くてアプリが起動できないといったケースがあります。 まぁ、疎通するまでリトライするとかすればいいのかもしれませんが。今回は、Systemdのタイマーユニットを使っ…

Float32型をとるrosserviceにマイナスの値を素でくわせたらエラーを吐いた場合

ROS

今回はROS 1のお話。 実際のところ ターゲットがFloat32型をとるとした場合 直接 $ rosservice call /service_name \-12.4とやると、 "no such option: -1" といった塩梅で怒られます。 要するにマイナスでなくオプションとされてるわけです。そこで、バック…

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

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

ros2 run でremapによりトピック名を変える

ROS

実際のところ "remap"に変更元と変更後を記述することで使用可能 ros2 run joy_linux joy_linux_node --ros-args --remap joy:=/lefthand

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:…

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…

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…

BehaviorTreeをつかう その4:rclと連動する

ROS

実際のところ スクリプト #include <behaviortree_cpp_v3/behavior_tree.h> #include <behaviortree_cpp_v3/bt_factory.h> #include <rclcpp/rclcpp.hpp> #include <xarm_msgs/srv/set_int16.hpp> #include <xarm_msgs/srv/set_int16_by_id.hpp> #include <xarm_msgs/srv/move_cartesian.hpp> #include <iostream> #include <string> u…</string></iostream></xarm_msgs/srv/move_cartesian.hpp></xarm_msgs/srv/set_int16_by_id.hpp></xarm_msgs/srv/set_int16.hpp></rclcpp/rclcpp.hpp></behaviortree_cpp_v3/bt_factory.h></behaviortree_cpp_v3/behavior_tree.h>

BehaviorTreeをつかう その3:FallbackとSequence

ROS

実際のところ Fallback => 一個でも成功すればSuccess。色々試してどれかがOKならいいというケース。 Sequence => 一個でも失敗すればFailure。順序事に実行する事が大切なケース。 script #include <behaviortree_cpp_v3/behavior_tree.h> #include <behaviortree_cpp_v3/bt_factory.h> #include <iostream> #include <string> using namespace BT; // </string></iostream></behaviortree_cpp_v3/bt_factory.h></behaviortree_cpp_v3/behavior_tree.h>…

BehaviorTreeをつかう その2:インプットとアウトプット

ROS

実際のところ #include <behaviortree_cpp_v3/behavior_tree.h> #include <behaviortree_cpp_v3/bt_factory.h> #include <iostream> #include <string> using namespace BT; // Example of custom SyncActionNode (synchronous action) // without ports. class ApproachObject : public BT::SyncActionNode { public: ApproachOb…</string></iostream></behaviortree_cpp_v3/bt_factory.h></behaviortree_cpp_v3/behavior_tree.h>

BehaviorTreeをつかう その1:環境構築

ROS

実際のところ パッケージの導入 $ sudo apt update $ sudo apt install ros-$ROS_DISTRO-behaviortree-cpp-v3 ROS2パッケージの作成 作業ディレクトリは"|/dev_ws"とし、サブディレクトリsrcもあるとします。 $ cd ~/dev_ws/src $ ros2 pkg create --build-t…

【読書メモ】ROS 2 Design

design.ros2.orgROS 2のデザイン哲学をまとめたサイトです。 オリジンROSが抱えていた問題をあげつつ、それに対しどういう思想で今のアーキテクチャを採用したかについて、解説されています。

Windows10にChocolately経由でROS2 foxyをいれる

ROS

通常の開発ではUbuntu機を使っているのですが、のっぴきならない事情でWindows機でも検証が必要になりました。 別件で仲間内の企業さんがWindows機でやってたので、多分できるのだとは思っていましたが……。 実際のところ 前提 Chocolately最新版 手順 $ mkdi…

ROS2 topicのレートをしる

ROS

実際のところ $ ros2 topic hz /turtle1/pose average rate: 62.481 min: 0.015s max: 0.017s std dev: 0.00050s window: 64 average rate: 62.487 min: 0.015s max: 0.017s std dev: 0.00050s window: 127 average rate: 62.493 min: 0.015s max: 0.017s st…

rqt_graph

ROS

rqt_graphはROSノードの可視化ツールの一つで、 ROSノードがどのように連携しているか確認したり、 そもそも関係性が適切か確認したりできます。 実際のところ 起動確認 ros-humble-desktopをぶち込んでいれば、素で入っているので $ rqt_graphとやると、空…

Classic GazeboのWorldファイルを自前で書く

ROS

実際のところ $ gazebo --verbose「beer」を選択すると、モデルがでてきます 左クリックで配置です とりあえず、こんな調子で並べてみます 「Ctrl + S」で保存してみます。 参考もと Gazebo : Tutorial : Gazebo Components Gazebo : Tutorial : Building a …

【読書メモ】ROS2とPythonで作って学ぶAIロボット入門

ROS2とPythonで作って学ぶAIロボット入門 (KS理工学専門書)作者:出村公成,萩原良信,升谷保博,タンジェフリートゥチュアン講談社Amazon

ROS2のlifecycleサブコマンドで遊ぶ その1:とりあえず状態遷移を試す

ROS

ROS2から導入されたライフサイクルノードという機能をつかうと、 特定の条件下ですこ~しだけ稼働させたい激重センサーをハンドリングしたり、 メンテナンス時に一定時間ノードを止めるといった処理を一定の仕組みに則って書く事ができます。 実際のところ …

ROS2 nodeのLifespanについて

ROS

参考もと ROS QoS - Deadline, Liveliness, and Lifespan

ROS2のlaunchファイル用のパラメータを色々するLaunchConfiguration

ROS

ROS2からlaunchファイルがPythonで記述できるようになりました 各種拡張もimportで読めるようになったのですが……その中で、パラメータを扱うパッケージとしてLaunchConfigurationというのがあります 実際のところ my_pakageのmy_nodeに対し、my_argsを適用す…