メインコンテンツまでスキップ

reBot Arm B601-DM ROS2 連携ガイド

reBot Arm B601-DM


License: MITROS2 Humble | JazzyPython VersionVersion v0.2.3Platform

ROS2 Control · RViz 可視化 · MoveIt2 対応

このチュートリアルでは、reBot Arm B601-DM 向けの ROS2 control ワークスペース rebotarm_ros2 の実行方法を説明します。このワークスペースは、低レベルの reBotArm_control_py Python SDK を ROS2 のトピック、サービス、アクションにラップし、上位レベルのプランニング、ビジュアルグラスピング、RViz 可視化、およびカスタムアプリケーション開発との統合を容易にします。

注記

このチュートリアルでは、Ubuntu 24.04 + ROS2 Jazzy + Python 3.12 を主な参照環境として使用します。ROS2 Humble / Ubuntu 22.04 でも、対応する ROS2 ディストリビューションを用いれば同じワークフローに従うことができます。

プロジェクトの特長

  1. 標準的な ROS2 インターフェース
    /joint_statesFollowJointTrajectoryGripperCommandMoveToPose などの一般的な ROS2 インターフェースを提供し、MoveIt2、ビジュアルグラスピングパイプライン、タスクレベルシステムとの統合を容易にします。

  2. すぐに使える運動学・軌道・重力補償ノード
    順運動学 / 逆運動学、軌道実行、重力補償、および RViz 可視化のサポートをすぐに使える形で提供します。

  3. MoveIt 2 との統合
    完全な MoveIt 2 設定とアプリケーションデモを含み、RViz MotionPlanning プラグインによるシミュレーションプランニングと実機実行をサポートします。

仕様

このチュートリアルで使用するハードウェアは、Seeed Studio によって提供されています。

パラメータ仕様
ロボットアームモデルreBot Arm B601-DM
自由度6-DOF + グリッパ
モーターバージョンDAMIAO モーターバージョン
通信方式USB2CAN シリアルブリッジ経由の CAN バス
デフォルトシリアルポート/dev/ttyACM0
推奨システムUbuntu 24.04 + ROS2 Jazzy + Python 3.12
参考システムUbuntu 22.04 + ROS2 Humble + Python 3.10

部品表(BOM)

コンポーネント数量同梱
reBot Arm B601-DM ロボットアーム1
グリッパ1
USB2CAN シリアルブリッジ1
電源アダプタ(24V)1
USB-C / 通信用ケーブル1
Ubuntu ホスト PC1自前で用意

配線

  1. USB2CAN シリアルブリッジをロボットアームの CAN バスに接続します。
  2. 24V 電源を接続し、USB2CAN アダプタをホスト PC に接続します。
  3. ホストがシリアルデバイスを認識していることを確認します:
ls /dev/ttyACM*

シリアルポートの権限を一時的に付与する必要がある場合:

sudo chmod 666 /dev/ttyACM0

代わりに、現在のユーザーを dialout グループに追加することを推奨します。変更を有効にするには、一度ログアウトしてから再度ログインしてください:

sudo usermod -a -G dialout $USER

動作環境要件

項目推奨要件
オペレーティングシステムUbuntu 24.04、Ubuntu 22.04 は参考として使用可能
ROS2Jazzy、Humble は参考として使用可能
Pythonシステム Python。Jazzy では通常 3.12、Humble では通常 3.10 を使用

インストール手順

ステップ 0. ロボットアームの基本セットアップを完了する

ROS2 連携を開始する前に、reBot Arm B601-DM Getting Started Guide を完了してください。組み立て、モーター ID 設定、ゼロ位置初期化、および基本的な接続確認が含まれます。

ステップ 1. 使用している Ubuntu システムに対応する ROS2 バージョンをインストールする

公式 ROS2 ドキュメントを参照してください:

ヒント

Ubuntu 24.04 を使用している場合は、ROS 2 Jazzy をインストールしてください。

Ubuntu 22.04 を使用している場合は、ROS 2 Humble をインストールしてください。

ステップ 2. ビルドツールと ROS 依存パッケージをインストールする

colcon、pip、Git、およびこのワークスペースに必要な ROS パッケージをインストールします:

sudo apt update
sudo apt install -y python3-colcon-common-extensions python3-pip git
sudo apt install -y \
ros-jazzy-control-msgs \
ros-jazzy-trajectory-msgs \
ros-jazzy-tf-transformations \
ros-jazzy-robot-state-publisher \
ros-jazzy-rviz2 \
ros-jazzy-pinocchio

インストールを確認します:

source /opt/ros/jazzy/setup.bash
python3 -c "import pinocchio; print('pinocchio', pinocchio.__version__)"

ROS2 Humble を使用する場合は、ros-jazzy-* パッケージ名を ros-humble-* に置き換え、/opt/ros/humble/setup.bash を source してください。 source /opt/ros/humble/setup.bash.

ステップ 3. コードリポジトリをクローンする

デフォルトでは Seeed-Projects の公式リポジトリを使用します:

git clone https://github.com/Seeed-Projects/reBotArmController_ROS2.git rebotarm_ros2
cd rebotarm_ros2

現在の開発用リポジトリを使用することもできます:

git clone https://github.com/EclipseaHime017/reBotArmController_ROS2.git rebotarm_ros2
cd rebotarm_ros2

ステップ 4. motorbridge をインストールする

公式 PyPI ソースから motorbridge をインストールします:

python3 -m pip install --user --break-system-packages --index-url https://pypi.org/simple motorbridge

ステップ 5. 低レベル SDK を取得する

mkdir -p third_party
git clone https://github.com/vectorBH6/reBotArm_control_py.git third_party/reBotArm_control_py

ステップ 6. ワークスペースをビルドする

source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
source install/setup.bash

実行可能エントリを確認します:

ros2 pkg executables rebotarmcontroller

想定されるエントリには次のものが含まれます:

rebotarmcontroller reBotArmController
rebotarmcontroller GravityCompensation
rebotarmcontroller GripperControl
rebotarmcontroller MoveTo
rebotarmcontroller MoveToPose

クイックスタート

注意

ロボットを使用する前に、次の点に注意してください:アームコントローラは高い自由度を持ちます。コントローラを有効にする前やアームに給電する前に、作業空間に人や障害物がないことを確認してください。事故を避けるため、すべての動作コマンドを慎重に確認してください。危険な操作は固く禁じられており、その結果については自己責任となります。

フルシステムを起動する

フルブリングアップでは次のものが起動します:

  • reBotArmController 制御ノード
  • robot_state_publisher
  • オプションの RViz
cd your/path/to/rebotarm_ros2
source install/setup.bash
ros2 launch rebotarm_bringup bringup.launch.py channel:=/dev/ttyACM0 #Do not open the RViz visualization interface when starting communication
ヒント

新しいターミナルを開くたびに、最初に次の 2 つのコマンドを実行する必要があります

cd your/path/to/rebotarm_ros2
source install/setup.bash

シリアルポートが /dev/ttyACM0 でない場合は、実際のデバイス名に置き換えてください:

ros2 launch rebotarm_bringup bringup.launch.py channel:=/dev/ttyACM1

RViz 可視化を起動する

ros2 launch rebotarm_bringup bringup.launch.py channel:=/dev/ttyACM0 use_rviz:=true   #Open the RViz visualization interface when starting communication

RViz でモデルが小さすぎる場合は、左側の Views パネルからビューを調整します:

  • Target Framebase_link に設定
  • Distance1.01.5 などに調整
  • マウスホイールでズーム
  • Fixed Framebase_link に設定されていることを確認

制御ノードのみを起動する

URDF と RViz が不要な場合:

ros2 launch rebotarm_bringup driver.launch.py channel:=/dev/ttyACM0

ノードを直接実行することもできます:

ros2 run rebotarmcontroller reBotArmController
ヒント

driver.launch.pyrebotarm_bringup/config から設定ファイルを渡しますが、コントローラーを直接実行すると、デフォルトの SDK アーム設定にフォールバックします。通常の使用では、ROS 経由で起動することを推奨します。

ROS2 名前空間

デフォルトの名前空間は次のとおりです:

/rebotarm

したがって、すべてのトピック、サービス、アクションには /rebotarm がプレフィックスとして付きます。例:

/rebotarm/joint_states
/rebotarm/enable
/rebotarm/move_to_pose

複数のロボットアームが必要な場合や、他の ROS2 システムと並行して実行したい場合は、起動時に名前空間を変更できます:

ros2 launch rebotarm_bringup bringup.launch.py arm_namespace:=left_arm

この場合、/rebotarm/joint_states/left_arm/joint_states になります。

共通 API

ステータストピック

API説明
/rebotarm/joint_statessensor_msgs/msg/JointState6 軸の関節位置、速度、およびトルク
/rebotarm/arm_statusrebotarm_msgs/msg/ArmStatus制御モード、有効状態、ステートマシン、およびエラーコード
/rebotarm/joints/<joint>/staterebotarm_msgs/msg/JointMotorState単一関節モーターの状態
/rebotarm/gripper/staterebotarm_msgs/msg/JointMotorStateグリッパーモーターの状態

例:

ros2 topic echo /rebotarm/joint_states --once
ros2 topic echo /rebotarm/arm_status --once

サービス

API説明
/rebotarm/enablestd_srvs/srv/Triggerロボットアームを有効化
/rebotarm/disablestd_srvs/srv/Triggerロボットアームを無効化
/rebotarm/safe_homestd_srvs/srv/Triggerセーフホーム位置に戻す
/rebotarm/set_moderebotarm_msgs/srv/SetModemitpos_velvel の間で切り替え
/rebotarm/set_zerorebotarm_msgs/srv/SetZeroすべての関節または単一関節のゼロ位置を設定
/rebotarm/move_to_pose_ikrebotarm_msgs/srv/MoveToPoseIKIK 事前チェックと目標関節解の取得
/rebotarm/gripper/setrebotarm_msgs/srv/SetGripperグリッパーモーター位置を rad 単位で設定
/rebotarm/gravity_compensation/startstd_srvs/srv/Trigger重力補償を開始
/rebotarm/gravity_compensation/stopstd_srvs/srv/Trigger重力補償を停止

アクション

API説明
/rebotarm/move_to_poserebotarm_msgs/action/MoveToPoseエンドエフェクタ姿勢のモーション
/rebotarm/follow_joint_trajectorycontrol_msgs/action/FollowJointTrajectory標準的な関節軌道互換エントリポイント
/rebotarm/gripper/commandcontrol_msgs/action/GripperCommand標準的なグリッパーアクション

基本制御の例

1. ロボットアームを有効化する

ros2 service call /rebotarm/enable std_srvs/srv/Trigger

2. エンドエフェクタ姿勢へ移動する

ros2 action send_goal /rebotarm/move_to_pose rebotarm_msgs/action/MoveToPose \
"{target_pose: {position: {x: 0.30, y: 0.0, z: 0.30}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, duration: 2.0}"

3. 関節ターゲットを送信する

ros2 action send_goal /rebotarm/follow_joint_trajectory \
control_msgs/action/FollowJointTrajectory \
"{trajectory: {joint_names: ['joint1','joint2','joint3','joint4','joint5','joint6'],
points: [{positions: [0.1,0,0,0,0,0], time_from_start: {sec: 5}}]}}"

4. セーフホームと無効化

ros2 service call /rebotarm/safe_home std_srvs/srv/Trigger
ros2 service call /rebotarm/disable std_srvs/srv/Trigger

デモ例

すべての例は、reBotArmController がすでに実行中であることを前提としています:

cd your/path/to/rebotarm_ros2
source install/setup.bash
ros2 launch rebotarm_bringup bringup.launch.py channel:=/dev/ttyACM0

関節モーションの例

6 つすべての関節を同時に制御します。単位は rad です:

ros2 run rebotarmcontroller MoveTo -- \
0.20 -0.20 -0.20 -0.20 0.10 -0.10 \
--duration 8.0

1 つの関節だけを制御します:

ros2 run rebotarmcontroller MoveTo -- --joint joint3 --position -0.20 --duration 5.0

エンドエフェクタ姿勢の例

ros2 run rebotarmcontroller MoveToPose -- --x 0.30 --y 0.0 --z 0.30 --qw 1.0 --duration 2.0

重力補償の例

ros2 run rebotarmcontroller GravityCompensation

このスクリプトは最初に /rebotarm/enable を呼び出し、その後に重力補償を開始します。Ctrl+C を押すと、スクリプトは次のサービスをこの順序で呼び出します:

  1. /rebotarm/gravity_compensation/stop
  2. /rebotarm/safe_home
  3. /rebotarm/disable

これにより、まず重力補償を停止し、その後アームをセーフホーム位置に戻して無効化します。

サービスを手動で呼び出すこともできます:

ros2 service call /rebotarm/enable std_srvs/srv/Trigger
ros2 service call /rebotarm/gravity_compensation/start std_srvs/srv/Trigger
ros2 service call /rebotarm/gravity_compensation/stop std_srvs/srv/Trigger
ros2 service call /rebotarm/safe_home std_srvs/srv/Trigger
ros2 service call /rebotarm/disable std_srvs/srv/Trigger

インタラクティブグリッパーの例

ros2 run rebotarmcontroller GripperControl

起動後、次を入力します:

o / open    Open the gripper
c / close Close the gripper
q / quit Quit

設定

デフォルトの設定ファイルは次の場所にあります:

src/rebotarm_bringup/config/
ファイル説明
arm.yaml6 つのアーム関節のモーター、フィードバック ID、および制御パラメータ
gripper.yamlグリッパーモーター ID、フィードバック ID、ベンダー、および制御パラメータ
driver_params.yamlROS パラメータの例

一般的な launch パラメータ:

パラメータデフォルト説明
arm_configbringup に含まれる組み込みの arm.yamlアーム設定ファイルのパス
gripper_configbringup に含まれる組み込みの gripper.yamlグリッパー設定ファイルのパス
channel空文字列デフォルトで YAML を使用。空でない場合はシリアルポートを上書き
joint_state_rate100.0/rebotarm/joint_states の配信レート
cmd_arbitrationrejectアーム軌道実行中の低レベルコマンドの仲裁方法。reject または preempt。グリッパーの低レベルコマンドはアーム軌道をプリエンプトしません
arm_namespacerebotarmROS 名前空間プレフィックス
frame_idbase_linkロボットアームのベースフレーム
ee_frame_idend_linkエンドエフェクタフレーム
use_rvizfalseRViz を起動するかどうか

低レベルコマンドトピック

ROS2 ワークスペースには、低レベルモーターデバッグ用のトピックも用意されています:

API説明
/rebotarm/joints/<joint>/cmd/mitrebotarm_msgs/msg/JointMitCmd単一関節の MIT 生コマンド
/rebotarm/joints/<joint>/cmd/pos_velrebotarm_msgs/msg/JointPosVelCmd単一関節の位置・速度生コマンド
/rebotarm/joints/<joint>/cmd/velrebotarm_msgs/msg/JointVelCmd単一関節の速度生コマンド
/rebotarm/gripper/cmd/mitrebotarm_msgs/msg/JointMitCmdグリッパーの MIT 生コマンド
/rebotarm/gripper/cmd/pos_velrebotarm_msgs/msg/JointPosVelCmdグリッパーの位置・速度生コマンド
/rebotarm/gripper/cmd/velrebotarm_msgs/msg/JointVelCmdグリッパーの速度生コマンド
注意

低レベルコマンドトピックはデバッグおよび実験用途を想定しています。IK、軌道計画、URDF 制限チェックは行いません。アプリケーションレベルのモーションには、/move_to_pose/follow_joint_trajectory/gripper/set などのサービスやアクションを優先して使用してください。

MoveIt 2

MoveIt 2 は、ここで使用されているモーションプランニングフレームワークであり、逆運動学、衝突チェック、軌道計画および実行を行います。デモはそれぞれ独立したパッケージに分離されており、アプリケーションフローがベースドライバから分離された状態を保ちます。 詳細については、公式の MoveIt 2 Documentation を参照してください。

MoveIt 関連の内容は 2 つのパッケージに分かれています:

パッケージ目的
rebotarm_moveit_configロボットモデル、SRDF、運動学、関節制限、コントローラおよび RViz 設定
rebotarm_moveit_demosMoveIt 2 ベースのアプリケーションデモ

MoveIt 環境は、ros2_control を介したシミュレートされたハードウェアと、計画と実行のための move_group を使用します。これは、RViz 内でモデル、IK、軌道計画、およびデモフローを検証することを目的としています。

このリポジトリは実機ハードウェアもサポートしています。実機を接続する前に、アームのゼロ設定、関節方向、関節制限、速度制限、およびグリッパー範囲がすべて正しいことを確認するか、リポジトリのデフォルト設定を維持してください。

MoveIt 環境セットアップ

まず ROS2 環境が利用可能であることを確認してください。現在 source されている ROS ディストリビューション向けに、ROS_DISTRO を通じてパッケージをインストールできます:

sudo apt update
sudo apt install -y \
ros-${ROS_DISTRO}-moveit \
ros-${ROS_DISTRO}-moveit-configs-utils \
ros-${ROS_DISTRO}-moveit-kinematics \
ros-${ROS_DISTRO}-moveit-planners-ompl \
ros-${ROS_DISTRO}-moveit-simple-controller-manager \
ros-${ROS_DISTRO}-ros2-control \
ros-${ROS_DISTRO}-ros2-controllers \
ros-${ROS_DISTRO}-xacro

MoveIt の設定とデモは、このワークスペースに含まれています。依存関係をインストールした後、ワークスペースを再ビルドします。

cd your/path/to/rebotarm_ros2
colcon build --symlink-install
source install/setup.bash

MoveIt パッケージとデモのエントリーポイントを確認します。

ros2 pkg list | grep rebotarm_moveit
ros2 pkg executables rebotarm_moveit_demos

想定されるエントリには、以下が含まれます。

rebotarm_moveit_demos draw_square
rebotarm_moveit_demos pick_place

MoveIt を使用する

MoveIt のプランニングは、RViz の GUI または ROS ノードを通じて、シミュレーションおよび実機の両方のシーンで使用できます。

シミュレーションで MoveIt を使用する

MoveIt は RViz シミュレーションのために ros2_control 仮想ハードウェアインターフェースを使用します:

cd your/path/to/rebotarm_ros2
source install/setup.bash
ros2 launch rebotarm_moveit_config demo.launch.py

デフォルトでは、これにより以下が起動します。

  • move_group
  • robot_state_publisher
  • ros2_control_node
  • joint_state_broadcaster
  • rebotarm_controller
  • gripper_controller
  • MoveIt MotionPlanning プラグイン付きの RViz

RViz は自動的に開き、ロボットの URDF モデルを読み込みます。GUI 左側のパネルからモーションを制御できます。

RViz なしで MoveIt 環境を実行するには:

ros2 launch rebotarm_moveit_config demo.launch.py use_rviz:=false

reBotArm ハードウェアで MoveIt を使用する

実機ロボットの場合は、まず仮想コントローラではなくハードウェアインターフェースでコントローラを起動し、その後ハードウェア用の MoveIt 環境を起動します:

ros2 launch rebotarm_bringup driver.launch.py channel:=/dev/ttyACM0

別のターミナルで:

cd your/path/to/rebotarm_ros2
source install/setup.bash
ros2 launch rebotarm_moveit_config hardware.launch.py

改めて: 実機でデモを実行する前に、作業スペースに人や障害物がないことを確認し、RViz で計画された経路を確認し、いつでもコントローラーを停止できるようにしておいてください。

draw-square デモを実行する

まず MoveIt 環境を起動し、その後別のターミナルで次を実行します:

cd your/path/to/rebotarm_ros2
source install/setup.bash
ros2 launch rebotarm_moveit_demos draw_square.launch.py

draw_square は、gripper_tcp を同一平面上の長方形の 4 つの角に沿って移動させます。 デフォルトパラメータ:

src/rebotarm_moveit_demos/config/draw_square.yaml

共通パラメータ:

パラメータ説明
start_pointデモ開始前の関節リセット位置
rectangle_centerbase_link における長方形の中心
rectangle_width / rectangle_heightメートル単位の長方形の寸法
tcp_rpyTCP の姿勢。デフォルトは下向きのグリッパー
tcp_yaw_offsets大きな joint6 の回り込みを避けるために使用される代替 IK yaw 値

ピック&プレースデモを実行する

まず MoveIt 環境を起動し、その後別のターミナルで次を実行します:

cd your/path/to/rebotarm_ros2
source install/setup.bash
ros2 launch rebotarm_moveit_demos pick_place.launch.py

デフォルトパラメータ:

src/rebotarm_moveit_demos/config/pick_place.yaml

共通パラメータ:

パラメータ説明
ready_pointピック/プレースの前後で使用される待機関節位置
pick_positionbase_link における物体の底面中心位置
pick_tcp_rpy / place_tcp_rpyピックおよびプレース用の TCP 姿勢
object_dimensionsメートル単位のプランニングシーン内オブジェクト寸法
max_gripper_widthグリッパーの合計最大開口幅。デフォルトは 0.09m
open_gripper_position / closed_gripper_positionシミュレートされた片側グリッパー関節の開閉位置
hardware_open_gripper_position / hardware_closed_gripper_positionハードウェアグリッパーモーターの開閉位置
grasp_gripper_to_object_width物体の幅から把持位置を計算

MoveIt 設定ファイル

ファイル説明
rebotarm_moveit_config/config/rebotarm.urdf.xacroMoveIt が使用するロボットモデル
rebotarm_moveit_config/config/rebotarm.srdfMoveIt のグループ、エンドエフェクタ、デフォルト状態
rebotarm_moveit_config/config/kinematics.yamlIK ソルバー設定
rebotarm_moveit_config/config/joint_limits.yamlMoveIt プランニングで使用される関節制限
rebotarm_moveit_config/config/moveit_controllers.yamlMoveIt 軌道実行コントローラ設定
rebotarm_moveit_config/config/ros2_controllers.yamlros2_control コントローラ設定
rebotarm_moveit_config/config/initial_positions.yamlシミュレートされたハードウェア用の初期関節位置
rebotarm_moveit_demos/config/draw_square.yaml四角形描画デモのパラメータ
rebotarm_moveit_demos/config/pick_place.yamlピック&プレースデモのパラメータ

FAQ

1. 起動時に open serial port /dev/ttyACM0 failed が表示される

これはデフォルトのシリアルポートが存在しないか、デバイス名が変更されたことを意味します。まず実際のシリアルデバイスを確認します:

ls /dev/ttyACM*

その後、channel で指定します:

ros2 launch rebotarm_bringup bringup.launch.py channel:=/dev/ttyACM1

2. 起動時に Device or resource busy が表示される

これはシリアルポートがすでに別のプロセスに占有されていることを意味します。よくある原因としては、以前に起動した ROS2 ノード、SDK のサンプル、終了していないデバッグスクリプトなどがあります。まずプロセスを確認します:

ps aux | grep -E "reBotArmController|ros2|python"

シリアルポートを占有しているプロセスを停止してから再起動してください。アームとグリッパーは同じローレベル Controller を共有する必要があります。アームとグリッパーで同じシリアルポートを別々に開かないでください。

3. Permission denied

シリアルデバイスは存在するが、パーミッションが拒否される場合:

sudo usermod -a -G dialout $USER

変更を有効にするには、一度ログアウトしてから再度ログインしてください。一時的なデバッグであれば、次を実行することもできます:

sudo chmod 666 /dev/ttyACM0

4. RViz にロボットモデルが表示されない

次の点を確認してください:

  • ワークスペースが source 済みか:source install/setup.bash
  • Fixed Framebase_link に設定されているか
  • robot_state_publisher が正しく起動しているか
  • URDF のメッシュパスが package://rebotarm_bringup/description/meshes/... になっているか

5. FastDDS SHM ポートの警告が表示される

ターミナルに次のような表示が出る場合:

[RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7002: open_and_lock_file failed

これは通常、以前の ROS2 プロセスが異常終了した後に残った FastDDS の共有メモリロックファイルが原因です。サービスやアクションが正常に応答している場合、この警告は通常制御に影響しません。

クリーンアップするには、まず関連する ROS2 プロセスを停止し、その後次を実行します:

pkill -f ros2
pkill -f reBotArmController
rm -f /dev/shm/fastrtps_port*

一時的に共有メモリトランスポートをバイパスしたい場合は、ROS2 を起動する前に次を設定します:

export FASTDDS_BUILTIN_TRANSPORTS=UDPv4

6. Humble を使用している場合は?

Humble ユーザーも同じワークフローに従い、コマンド内の jazzyhumble に置き換え、Humble の公式ドキュメントに従って対応する依存関係をインストールしてください。ROS2 ディストリビューションを切り替えた後は、再度 colcon build を実行します。

7. pinocchio が見つからない

ノードや検証コマンドが次のように報告する場合:

ModuleNotFoundError: No module named 'pinocchio'

まず、使用している ROS2 ディストリビューション向けの Pinocchio パッケージがインストールされていることを確認します:

sudo apt install -y ros-jazzy-pinocchio

次に、現在のターミナルで ROS2 環境が source 済みであることを確認します:

source /opt/ros/jazzy/setup.bash
python3 -c "import pinocchio; print(pinocchio.__version__)"

それでも見つからない場合は、現在の Python 検索パスに ROS2 の Python パッケージパスが含まれているか確認します:

python3 -c "import sys; print('\n'.join(sys.path))"

Jazzy を source した後は、 /opt/ros/jazzy/lib/python3.12/site-packages のようなパスが表示されるはずです。Humble を使用している場合は、コマンド内の jazzyhumble に置き換えてください。

連絡先

参考資料

Loading Comments...