質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ROS2

ROS2は、Robot Operation Systemの略称。ロボット開発のためのミドルウェアであるROS1の次世代バージョンです。複数台のロボットを同時に制御でき、組込み系のプラットフォームにも対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

807閲覧

Raspberry Pi 4 の ROS2 Humble で Dynamixel を動かしたい

yukimeat1999

総合スコア20

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ROS2

ROS2は、Robot Operation Systemの略称。ロボット開発のためのミドルウェアであるROS1の次世代バージョンです。複数台のロボットを同時に制御でき、組込み系のプラットフォームにも対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2023/09/04 18:05

編集2023/09/13 08:52

実現したいこと

Raspberry Pi 4 Model B の Ubuntu 22.04.2 LTS のROS2 HumbleでDynamixelSDKをインストールして動かしたい。

前提

ROBOTISDynamixelXL430-W250-Tを1つ繋いでいます。
通信は3線のTTLです。
インターフェースはU2D2を使ってます。
電源はACアダプターとSMPS2Dynamixelを使用。

現在、Raspberry Pi 4 Model BUbuntu 22.04.2 LTSROS2 HumbleDynamixelSDKをインストールしました。
しかし、以下のエラーが発生しパッケージがありませんと言われます。

ちなみに、私は~/ros2_ws/src/ossをワークスペースとして使用しています。
なので、この~/ros2_ws/src/oss内にDynamixelSDKがクローンされています。

発生している問題・エラーメッセージ

DynamixelSDKをインストールしたワークスペースからdynamixel_sdk_examplesのサンプルプログラムread_write_nodeを実行しようとすると次のエラーがでます。

Linux

1$ ros2 run dynamixel_sdk_examples read_write_node 2Package 'dynamixel_sdk_examples' not found

試したこと

このQiitaYouTubeを参考にインストールしました。

まず、ワークスペースにDynamixelSDKをクローンし、インストールします。

Linux

1$ cd ~/ros2_ws/src/oss 2$ git clone -b $ROS_DISTRO-devel https://github.com/ROBOTIS-GIT/DynamixelSDK 3$ cd ~/ros2_ws 4$ colcon build --symlink-install 5$ source /opt/ros/humble/setup.bash 6$ . install/local_setup.bash

Linux

1$ sudo usermod -aG dialout <linux_account>(自分のRPiのyukiと入れた)

デバイス名を調べる。

Linux

1root@yuki-RPi:/home/yuki# sudo su 2root@yuki-RPi:/home/yuki# dmesg | grep tty 3[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 4snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 5video=HDMI-A-1:720x480M@60 smsc95xx.macaddr=DC:A6:32:DB:A2:DC 6vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 zswap.enabled=1 7zswap.zpool=z3fold zswap.compressor=zstd dwc_otg.lpm_enable=0 console=tty1 8root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash 9[ 0.000434] printk: console [tty1] enabled 10[ 0.880312] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 19, base_baud = 0) is a 11PL011 rev2 12[ 7.402851] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0 13[ 80.457996] input: ELECOM TK-FBP102 Keyboard as 14/devices/platform/soc/fe201000.serial/tty/ttyAMA0/hci0/hci0:11/0005:056E:1068.0005/input/i 15nput8 16[ 4777.088469] input: ELECOM TK-FBP102 Keyboard as 17/devices/platform/soc/fe201000.serial/tty/ttyAMA0/hci0/hci0:11/0005:056E:1068.0006/input/i 18nput9 19[ 4899.391092] input: ELECOM TK-FBP102 Keyboard as 20/devices/platform/soc/fe201000.serial/tty/ttyAMA0/hci0/hci0:11/0005:056E:1068.0007/input/i 21nput10

これより、デバイス名は/dev/ttyUSB0とわかる。

次にサンプルプログラムを修正。
dynamixel_sdk_examples/srcにあるread_write_node.cppのデフォルトセッティングのうちボーレートとシリアル通信のデバイス名を変更。
50行目あたり

cpp

1// Default setting 2#define DXL1_ID 1 // DXL1 ID 3#define DXL2_ID 2 // DXL2 ID 4#define BAUDRATE 57600 // Default Baudrate of DYNAMIXEL X series 5#define DEVICE_NAME "/dev/ttyUSB0" // [Linux] To find assigned port, use "$ ls /dev/ttyUSB*" command

今回はそのまま

それから、実際に動作させてみる。

Linux

1$ ros2 run dynamixel_sdk_examples read_write_node 2Package 'dynamixel_sdk_examples' not found 3~$ ros2 topic pub -1 /set_position dynamixel_sdk_custom_interfaces/SetPosition "{id: 1, 4position: 1000}" 51694594854.798480 [1] ros2: config: 6//CycloneDDS/Domain/Internal/MinimumSocketReceiveBufferSize: setting moved to 7//CycloneDDS/Domain/Internal/SocketReceiveBufferSize[@min] 8(/home/yuki/cyclonedds_config/cyclonedds_config.xml line 6) 9Waiting for at least 1 matching subscription(s)... 10Waiting for at least 1 matching subscription(s)... 11^C

一応パッケージはないけど、メモ代わりにtopicの方も載せてます。

補足情報(FW/ツールのバージョンなど)

・Raspberry Pi 4 Model B 8GB
・Ubuntu 22.04.2 LTS
・ROS2 Humble

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

過去にクローンしてエラーとなったkinct_ros2を放置していたため、ここでインストールが止まっていたようです。
見た目は、順番にインストールを実行し、今回のDynamixelSDKが終わった後にkinct_ros2を実行し、エラーになっていたが、これをDynamixelSDKを削除した時と同様に削除すると、すべてがcolcon buildでコンパイルできた。

Linux

1$ rm -rf kinct_ros2 2$ colcon build --symlink-install

ここからは上記と同じ。

投稿2023/09/14 08:24

yukimeat1999

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問