Wikiに戻る

AgileX UGV SDK <unk>ユニバーサルCANプラットフォーム SDK

AgileX ugv_sdk C++ ライブラリおよびpyagxrobots Python 結合に関する完全な参照.インストール,CAN 設定,サポートされたプラットフォーム (SCOUT,RANGER,BUNKER, TRACER,HUNTER,LIMO),ROS2 使用,プロトコル詳細をカバーします.

このページ

  • [概要]
  • [サポートされたプラットフォーム]
  • [設置] T33
  • [C++図書館]
  • [パイトン結合]
  • [キャンの設定]
  • [一度の設定]
  • [継続的な設定]
  • [プロトコル詳細]
  • [ROS2の使用]
  • ゲゼボシミュレーション
  • T42

AgileXページ

  • [ハブ すべてのプラットフォーム]
  • ゲート・デスク
  • [SCOUTシリーズ]
  • ランガーシリーズ
  • T47
  • [トラッカー +ハンター]
  • リンゴは49.
  • T50

ハードウェアガイド

  • ローボット (VLAI L1)
  • リンクボットO6
  • [DK1 双手作業組]
  • T54
  • T55
  • [BrainCo Revo II]
  • [パクシニセンサー]
  • 武井手 T58

参照

T0 C++ ライブラリとT1 Python 結合の完全な参照 AgileXモバイルプラットフォームのすべてのための統一インターフェース CAN 2.0Bで500 kbps.

ライブラリ: T2 パイトン: T3 インターフェース: CAN 2.0B @ 500 kbps GitHub: agilexrobotics/ugv_sdk

C++ Python CAN バス ROS2 すべてのプラットフォーム

1 概要

ugv_sdk は,AgileX RoboticsのオープンソースのC++ライブラリで,CANバスの上ですべてのAgileXモバイルプラットフォームに統一されたソフトウェアインターフェースを提供します.プラットフォーム特有のドライバではなく,ugv_sdkは,基礎となるCANプロトコルを一貫したAPIに抽象化します.

図書館は,2つのプロトコルバージョンをサポートしています. ** プロトコル V1** (レガシー) と ** プロトコル V2** (現在の). 2021年以降に生産されたすべてのプラットフォームは プロトコル V2 を使用します. プロトコル V1 サポートは古いスクーート,スクーートミニ,ハンター 1.0 およびバンカーユニットとの後戻り互換性のために保持されています.

Pythonユーザにとって,pyagxrobots**パッケージは,Pythonで書かれたナビゲーションスタックと迅速なプロトタイプ作成と統合を許可し,直接C++ライブラリをコンパイルせずに,pipeを通じて ugv_sdk の Python 結合を提供します.

1つのSDK,すべてのプラットフォーム. ugv_sdk は,すべてのAgileX ROS2 パッケージ (T4,T5,T6,T7,など) が共有する単一の依存性です.一度インストールすると,プラットフォーム特有のすべてのROS2ドライバーが自動的にそれを発見します.

2\ サポートされたプラットフォーム

下の表では,AgileXプラットフォームの各バージョンのサポート,利用可能なインターフェース,現在のサポート状態を示しています.

Robot Protocol V1 Protocol V2 UART CAN Status
Scout 2.0 Y Y N Y Active
Scout Mini (Skid) Y Y Y Active
Scout Mini (Omni) Y Y Y Active
Hunter 1.0 Y Y Y Active
Hunter 2.0 Y Y Active
Bunker Y Y Y Active
Tracer Y N Y Active
Ranger Mini 2.0 Y Y Active
Ranger Mini 3.0 Y Y Active
Ranger Y Y Active

プロトコル V2 はすべての新しい開発に推奨されます. プロトコル V1 サポートは古いハードウェアに存在します.あなたのプラットフォームがプロトコル V2 (2021年以降すべてのユニット) を搭載している場合は,V1 を有効にしない場合,新しいファームウェアで予想外の行動を引き起こす可能性があります.

3 設置

C++ ライブラリ

ソースから ugv_sdk を構築しインストールする.ライブラリには CMake 3.10+,C++14対応のコンパイラ,および SocketCAN 開発ヘッダ (T8) が必要です.

# 依存をインストールする (Ubuntu 20.04 / 22.04) sudo apt インストール 構築必須のcmake libsocketcan-dev

資料庫をクローンする git clone T74 cd ugv_sdk && mkdirビルド && cdビルド

構築・インストール 製造 .. &&製造 -j4 sudo をインストールする

インストール後,ヘッダは T9と図書館は T10で利用できます. CMakeLists.txt で T11 にリンクします.

パイthon 結合 (pyagxrobots)

Python の最初のワークフローでは,Python の公式なバインドを pip でインストールしてください. C++ のコンパイルは必要ありません.

パイプを設置する

Python 結合には,動作する CAN インターフェースが必要です.* T12 は C++ 図書館と同じ SocketCAN インターフェースでハードウェアと通信します. T13 は pyagxrobots API を呼び出す前に実行されていることを確認してください (下記の CAN セットアップを参照してください).

4. CAN バスセット

すべてのAgileXプラットフォームは 500 kbpsで **CAN 2.0Bを使用します. GS_USB対応のUSB-to-CANアダプタ (例えば,CANable,Waveshare USB-CAN-A) が必要です.下記のコマンドを実行する前にロボットのCANポートに接続してください.

CANインターフェースを表示する

# GS_USBカーネルモジュールをロードする sudo モッドプローブ gs_usb

速度を500 kbpsに上げます sudo ipリンクセットは0 upタイプは500000 bitrate

\ # インターフェースが稼動していることを確認する ipリンク表示は0

選択可能:診断のために原始のCANフレームを捨てます の缶

リボートで継続的な設定

各プラットフォームのROS2パッケージは,持続性を自動処理する2つのシェルスクリプトを搭載します.

# アダプターを設定するために最初のハードウェア接続後に一度実行します バッシュ設定_can2usb.bash

# ROS2ノードを起動する前に,次の起動ごとに実行する バッシュを連れて来

両脚本もプラットフォーム特有の ROS2 パッケージの T14 ディレクトリ (例えば, T15) にあります.

提示: 脚本を手動で実行せずに自動的に起動するCANインターフェースを欲する場合は,~/.bashrcまたはsystemdサービスに bringupを追加します.

5 議定書詳細

Parameter Value
CAN standard CAN 2.0B (extended frame support)
Bitrate 500 kbps
Byte order Motorola (big-endian)
Timeout protection 500 ms — platform stops if no command received
Minimum command rate 10 Hz (recommended: 20–50 Hz)
Protocol versions V1 (legacy), V2 (current, all 2021+ units)

500 msの安全タイムアウト.* 制御ノードが500 ms以上故障または停止した場合,ロボットは自動的に停止します.これは意図的です.制御ループを設計してコマンドを最小10 Hzで送信します.遠隔操作では,スムーズな動きのために50 Hz が推奨されます.

6. ROS2の使用

すべてのAgileXプラットフォームは,同じROS2発射パターンを遵循する. T16をプラットフォーム名: T17, T18, T19, T20, T21,または T22に置き換える.

プラットフォームの ROS2 パッケージをインストールする

# SCOUTの例 プラットフォームで"スカウト"を置き換える cd ~/ros2_ws/src git clone T75 cd ~/ros2_ws rosdep をインストールする --from-paths src --ignore-src - r - y コールコンビルド --symlink-install ソースインストール/セットアップ.bash

ベースドライバーを起動する

# まずCANインターフェースをアップします (既にアップしていない場合は) バッシュ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

ローボットベースドライバーを起動する ローズ2発射偵察_ベース偵察_ベース.発射.pyポート_名:=キャナ0

キーボードの2番目の端末で ローズ2を実行する キーボード キーボード

速度コマンドトピック

すべてのプラットフォームは,T23 (タイプ:T24) に登録し,オドメトリをT25,ロボットステータスをT26に公開する.トピック名とメッセージタイプはすべてのプラットフォームで一致する.

# ドライバーを起動した後,利用可能なトピックをチェック ros2 テーマリスト

# 手動速度のコマンドを送信する (0.3 m/s 前へ, 0 角) ローズ2 トピックパブ /cmd_vel ジオメトリ_msgs/msg/Twist \ "{線形: {x: 0.3, y: 0.0, z: 0.0},角形: {x: 0.0, y: 0.0, z: 0.0}}"

**nav2対応.**AgileXプラットフォームROS2パッケージはすべてROS2 nav2ナビゲーションスタックと対応している.ベースドライバは, nav2が要求するT27を公開し,T28 →T29 TF変換を放送する.

7.ガゼボシミュレーション

AgileXは,すべての UGVプラットフォームに統一されたGazeboシミュレーションパッケージを [ugv_gazebo_sim] (T64) で提供しています.シミュレーションは実際のハードウェアと同じROS2トピックインターフェースを使用しているため,シミュレーションで開発されたコードは変更なしに物理的なロボットに転送されます.

# ガゼボシムパケットをクローンする cd ~/ros2_ws/src git clone T76 cd ~/ros2_ws && コールコンビルド --symlink-install ソースインストール/セットアップ.bash

ゲーゼボでSCOUT 2.0を起動する (プラットフォームで"スカウト"を置き換える) ロズ2発射偵察_説明偵察_gazebo.launch.py

8 キーリンク

Resource URL
ugv_sdk GitHub github.com/agilexrobotics/ugv_sdk
Gazebo Simulation github.com/agilexrobotics/ugv_gazebo_sim
Python binding pypi.org/project/pyagxrobots
AgileX GitHub org github.com/agilexrobotics (87 repos)
AgileX website www.agilex.ai
Technical support support@agilex.ai

すべてのAgileXプラットフォーム AgileXプラットフォームハブ を検索して,SCOUT,RANGER,BUNKER,TRACER,LIMO,Piperをカバーする製品ページを検索してください.

プラットフォームモデルと出力 T30について質問があるか?