Bye Bye Moore

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

ROS

check_urdfコマンドでURDFモデルのリンクが妥当か確認する

ROS

実際のところ $ ros2 run xacro xacro src/robot_description/urdf/robot_arm.urdf.xacro > /tmp/check.urdf $ check_urdf /tmp/check.urdf robot name is: robot ---------- Successfully Parsed XML --------------- root Link: world has 1 child(ren) ch…

joint_state_publisherノードで角度をイジる

ROS

実際のところ $ sudo apt install ros-humble-joint-state-publisher-gui実行すると、rvizと一緒にこんなのがでる 参考もと ROS Package: joint_state_publisher

DockerのROS2 humbleのイメージ(noVNCつき)が便利

実際のところ Tiryoh氏の作っているこのイメージ、NoVNCが入っているのでブラウザを立ち上げる必要がなくてお得 $ docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:humblehttp://127.0.0.1:6080/ にアクセスすると、デスクトップ画面がでる …

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 以下のような内容をownnoetic.dockerfileとして保存 # Ubuntu 20.04 LTSをベースイメージとして使用 FROM ubuntu:20.04 # 環境変数を設定 ENV DEBIAN_FRONTEND=noninteractive # ROS Noeticのインストール RUN apt-get update && ap…

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