🐱

Ubuntu20.04(on ラズパイ4)&ROS2でLD06とBNO055を使う

2022/02/13に公開
8

まえがき

ROS2 galacticで独立差動二輪ロボットを自作しています。今回は自作ロボットに搭載しているラズパイ4にLIDAR LD06とIMUセンサーBNO055をUARTで接続させROS2で動作確認しました。

環境

ラズパイ4(Ubuntu 20.04LTS)の確認

設定前のUART関連のデバイス名を確認します。

$ ls -l /dev/ttyAMA*
crw-rw---- 1 root dialout 204, 64 Jan 10 13:56 /dev/ttyAMA0

ひとつだけUARTが認識されています。シリアルコンソールデバイスでしょうか?よくわかりませんが、そういうものがある、ということだけ確認できました。

UbuntuのUARTを有効化する

デバイスを割り付けるUARTを決める

ラズパイ4のGPIOの兼ね合いから下記のように割り当てることとしました。

  • LD06 ... UART3
  • BNO055 ... UART5

有効化する設定を追加

/boot/firmware/usercfg.txtに下記2行を追記します。

dtoverlay=uart3
dtoverlay=uart5

OSを再起動します。

有効化されていることの確認

$ ls -l /dev/ttyAMA*
crw-rw---- 1 root dialout 204, 64 Jan 10 13:56 /dev/ttyAMA0
crw-rw---- 1 root dialout 204, 65 Jan 10 13:56 /dev/ttyAMA1
crw-rw---- 1 root dialout 204, 66 Jan 10 13:56 /dev/ttyAMA2

ttyAMA1とttyAMA2が追加され、有効化されました。ttyAMA1がUART3、ttyAMA2がUART5に割り当てられたようです。

デバイスを割り当てたGPIOピンに接続

LD06とラズパイ4の接続

LD06のGNDケーブルの色が赤で直感に反しているように思えます。

LD06 ラズパイ4
Tx 29番(RXD3)
PWM 接続しない
GND 30番(GND)
P5V 2番(5V PWR)

BNO055とラズパイ4の接続

BNO055 ラズパイ4
Vcc 1番(3.3V PWR)
Rx 32番(GPIO12,TXD5)
Tx 33番(GPIO13,RXD5)
Gnd 34番(GND)

BNO055の動作確認

bno055パッケージのインストール

aptコマンドでインストールします。

$ sudo apt install ros-galactic-bno055 

bno055ノードの起動

BNO055はUART5につなぎましたので、パラメータuart_portはデバイス名/dev/ttyAMA2を指定します。また、frame_idパラメータはimu_linkとしました。

$ ros2 run bno055 bno055 --ros-args --param uart_port:="/dev/ttyAMA2" --param frame_id:="imu_link"
[INFO] [1644742883.234234787] [bno055]: Initializing parameters
[INFO] [1644742883.250585377] [bno055]: Parameters set to:
[INFO] [1644742883.252593312] [bno055]: 	ros_topic_prefix:	"bno055/"
[INFO] [1644742883.254633395] [bno055]: 	connection_type:	"uart"
[INFO] [1644742883.256552128] [bno055]: 	uart_port:		"/dev/ttyAMA2"
[INFO] [1644742883.258506601] [bno055]: 	uart_baudrate:		"115200"
[INFO] [1644742883.260538258] [bno055]: 	uart_timeout:		"0.1"
[INFO] [1644742883.262526916] [bno055]: 	frame_id:		"imu_link"
[INFO] [1644742883.264495463] [bno055]: 	data_query_frequency:	"10"
[INFO] [1644742883.266446658] [bno055]: 	calib_status_frequency:	"0.1"
[INFO] [1644742883.268349614] [bno055]: 	operation_mode:		"12"
[INFO] [1644742883.270304383] [bno055]: 	placement_axis_remap:	"P1"
[INFO] [1644742883.272211338] [bno055]: 	acc_factor:		"100.0"
[INFO] [1644742883.274158145] [bno055]: 	mag_factor:		"16000000.0"
[INFO] [1644742883.276036211] [bno055]: 	gyr_factor:		"900.0"
[INFO] [1644742883.277929556] [bno055]: 	set_offsets:		"False"
[INFO] [1644742883.279815419] [bno055]: 	offset_acc:		"[65516, 165, 65512]"
[INFO] [1644742883.281753799] [bno055]: 	offset_mag:		"[65460, 65182, 637]"
[INFO] [1644742883.283628996] [bno055]: 	offset_gyr:		"[2, 65535, 65535]"
[INFO] [1644742883.285544932] [bno055]: 	variance_acc:		"[0.017, 0.017, 0.017]"
[INFO] [1644742883.287430554] [bno055]: 	variance_angular_vel:	"[0.04, 0.04, 0.04]"
[INFO] [1644742883.289351287] [bno055]: 	variance_orientation:	"[0.0159, 0.0159, 0.0159]"
[INFO] [1644742883.291227169] [bno055]: 	variance_mag:		"[0.0, 0.0, 0.0]"
[INFO] [1644742883.293503082] [bno055]: Opening serial port: "/dev/ttyAMA2"...
[INFO] [1644742883.354080969] [bno055]: Configuring device...
Current sensor offsets:
[INFO] [1644742883.389332150] [bno055]: 	Accel offsets (x y z): 0 0 0
[INFO] [1644742883.392725289] [bno055]: 	Mag offsets (x y z): 0 0 0
[INFO] [1644742883.395558842] [bno055]: 	Gyro offsets (x y z): 0 0 0
[INFO] [1644742883.427033223] [bno055]: Bosch BNO055 IMU configuration complete.

ノード起動時の表示からパラメータがいろいろありそうなことがわかります。

bno055のノード名とトピックを確認

$ ros2 node list
/bno055
$ ros2 topic list
/bno055/calib_status
/bno055/imu
/bno055/imu_raw
/bno055/mag
/bno055/temp
/parameter_events
/rosout
$ ros2 topic echo /bno055/imu
...
---
header:
  stamp:
    sec: 0
    nanosec: 0
  frame_id: imu_link
orientation:
  x: 0.0690297189600907
  y: -0.016235106315989505
  z: 0.0
  w: 0.9974824906850243
orientation_covariance:
- 0.0159
- 0.0
- 0.0
- 0.0
- 0.0159
- 0.0
- 0.0
- 0.0
- 0.0159
angular_velocity:
  x: 0.0
  y: 0.0
  z: 0.0
angular_velocity_covariance:
- 0.04
- 0.0
- 0.0
- 0.0
- 0.04
- 0.0
- 0.0
- 0.0
- 0.04
linear_acceleration:
  x: -0.06
  y: -0.01
  z: -0.16
linear_acceleration_covariance:
- 0.017
- 0.0
- 0.0
- 0.0
- 0.017
- 0.0
- 0.0
- 0.0
- 0.017
---
...

ということで、BNO055は動作していることが確認できました。

LD06の動作確認

ノードのインストール

linorobotさんのLD06ドライバノードを使わせていただきました。
インストール方法は下記サイトに載っていますのでそれを参照してください。
https://github.com/linorobot/ldlidar.git

ldlidarノードの起動

LD06はUART3につなぎましたので、パラメータserial_portはデバイス名/dev/ttyAMA1を指定します。

$ ros2 launch ldlidar ldlidar.launch.py serial_port:=/dev/ttyAMA1
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2022-02-13-18-20-48-590745-cylinder-2265
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ldlidar-1]: process started with pid [2267]
[ldlidar-1] [INFO] [1644744049.356037120] [rclcpp]: Using port /dev/ttyAMA1
[ldlidar-1] [INFO] [1644744049.357882217] [rclcpp]: LiDAR_LD06 started successfully

ldlidarのノード名とトピックを確認

$ ros2 node list
/ldlidar
$ ros2 topic list
/parameter_events
/rosout
/scan
$ ros2 topic echo /scan
...
---
header:
  stamp:
    sec: 1644744264
    nanosec: 692657762
  frame_id: base_scan
angle_min: 0.0
angle_max: 6.2831854820251465
angle_increment: 0.013966500759124756
time_increment: 0.0
scan_time: 0.0
range_min: 0.004999999888241291
range_max: 15.0
ranges:
- 3.9590001106262207
- 3.9590001106262207
...

ということで、LD06も動作していることが確認できました。

最後に

当初、LD06もBNO055もUSB-シリアル変換基板を使う予定でしたがGPIOを有効活用でき、省スペース化できてよかったです。

Discussion

ゆうゆう

こんにちは、私はUbuntu20.04(on Raspberry Pi4 B)&ROS2 Foxy&UART通信の環境を構築したいと考えている者です。

記事と同様にUART有効化の確認までは同様に行うことが出来ましたが、いざbno055ノードを立ち上げるとconnection Error(response 0)を吐かれてしまいます。

他記事を拝見しますと/boot/firmware/cmdline.txt内のconsole=serial0,115200を削除するように等の記載がありましたが、そういった本記事で述べていないが他に行った設定はございますでしょうか。

また、Raspberry Pi OS(64bit)ですとUARTを有効にしたとき
$ls -l /dev/
で表示される中に/dev/serial*->/dev/ttyAMAといった記載があると思うのですが(Ubuntuの初期状態だと/dev/serialはありません(私の環境では))。
本記事の環境では/dev/serialは現れているのでしょうか。(/dev/serialはUART通信には関係ないのでしょうか)

素人質問並びにご多忙のところ大変恐縮ですが、ご回答いただけますと幸いです。

かついとかついと

拙い記事ですが読んでいただきありがとうございます。

【1】dtoverlay=uart3とuart5の追加くらいです。
/boot/firmware以下の*.txtをマルっと記載します。

$ cat cmdline.txt
net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc
$ cat usercfg.txt 
# Place "config.txt" changes (dtparam, dtoverlay, disable_overscan, etc.) in
# this file. Please refer to the README file for a description of the various
# configuration files on the boot partition.
dtparam=pwr_led_trigger=heartbeat
dtoverlay=uart3
dtoverlay=uart5
$ cat config.txt 
# Please DO NOT modify this file; if you need to modify the boot config, the
# "usercfg.txt" file is the place to include user changes. Please refer to
# the README file for a description of the various configuration files on
# the boot partition.

# The unusual ordering below is deliberate; older firmwares (in particular the
# version initially shipped with bionic) don't understand the conditional
# [sections] below and simply ignore them. The Pi4 doesn't boot at all with
# firmwares this old so it's safe to place at the top. Of the Pi2 and Pi3, the
# Pi3 uboot happens to work happily on the Pi2, so it needs to go at the bottom
# to support old firmwares.

[pi4]
kernel=uboot_rpi_4.bin
max_framebuffers=2

[pi2]
kernel=uboot_rpi_2.bin

[pi3]
kernel=uboot_rpi_3.bin

[all]
arm_64bit=1
device_tree_address=0x03000000

# The following settings are "defaults" expected to be overridden by the
# included configuration. The only reason they are included is, again, to
# support old firmwares which don't understand the "include" command.
enable_uart=1
cmdline=cmdline.txt

start_x=1
gpu_mem=128

#dtoverlay=uart3
#dtoverlay=uart5

include syscfg.txt
include usercfg.txt
$ cat syscfg.txt 
# This file is intended to be modified by the pibootctl utility. User
# configuration changes should be placed in "usercfg.txt". Please refer to the
# README file for a description of the various configuration files on the boot
# partition.

enable_uart=1
dtparam=audio=on
dtparam=i2c_arm=on
dtparam=spi=on
cmdline=cmdline.txt

【2】/dev/serialはディレクトリが存在していました。下記参考になりますでしょうか。

$ ls -l /dev/serial*
lrwxrwxrwx 1 root root  5 Jan 10 13:56 /dev/serial0 -> ttyS0
lrwxrwxrwx 1 root root  7 Jan 10 13:56 /dev/serial1 -> ttyAMA0

/dev/serial:
total 0
drwxr-xr-x 2 root root 60 Jan 10 13:56 by-id
drwxr-xr-x 2 root root 60 Jan 10 13:56 by-path

【気になる点】
文面を拝見しました限りですと、UARTのポートは有効化されたが、UARTポートに繋がっているBNO055と通信ができてないように見受けられます。なので、私でしたら下記2つから見直してみます。

ちなみに、下記のやり方でもOSがUARTポートを有効化したかどうかがわかります。

$ dmesg | grep AMA
[    1.374117] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 14, base_baud = 0) is a PL011 rev2
[    1.374492] fe201600.serial: ttyAMA1 at MMIO 0xfe201600 (irq = 14, base_baud = 0) is a PL011 rev2
[    1.374745] fe201a00.serial: ttyAMA2 at MMIO 0xfe201a00 (irq = 14, base_baud = 0) is a PL011 rev2
ゆうゆう

迅速で親切なご回答とご助言、誠にありがとうございます。

ご助言いただきました内容について再度試しました。

[気になる点][1]GPIOピンの接続

UART5を使用するため
bno055 - raspiGPIO
VIN   - 5V(pin4)
GND - GND(pin6)
Rx - GPIO13(pin33)
Tx - GPIO12(pin32)
ADD - GND(pin6)
に接続しています。bno055のRx、Txのピン配置確認済みです。

[気になる点][2]UART有効化
pi@raspberrypi:~$ ls -l /dev/ttyAMA*
crw-rw---- 1 root dialout 204, 64 Jan 10 13:56 /dev/ttyAMA0
crw-rw---- 1 root dialout 204, 65 Jan 10 13:56 /dev/ttyAMA1
crw-rw---- 1 root dialout 204, 66 Jan 10 13:56 /dev/ttyAMA2

pi@raspberrypi:~$ dmesg | grep AMA
[    1.473283] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 14, base_baud = 0) is a PL011 rev2
[    1.473696] fe201600.serial: ttyAMA1 at MMIO 0xfe201600 (irq = 14, base_baud = 0) is a PL011 rev2
[    1.473942] fe201a00.serial: ttyAMA2 at MMIO 0xfe201a00 (irq = 14, base_baud = 0) is a PL011 rev2

pi@raspberrypi:~$ sudo raspi-gpio get 12-13
GPIO 12: level=1 fsel=3 alt=4 func=TXD5 pull=NONE
GPIO 13: level=0 fsel=3 alt=4 func=RXD5 pull=UP

これで有効化出来ていると思われましたが...

bno055ノードの実行
pi@raspberrypi:~$ ros2 run bno055 bno055 --ros-args --param uart_port:="/dev/ttyAMA2" --param frame_id:="imu_link"
[ERROR] [1649750903.573725982] [bno055]: Communication error: Unexpected length of READ-request response: 0
[ERROR] [1649750903.575812415] [bno055]: Shutting down ROS node...

うまく通信できていないみたいです...
また/dev/serial*ディレクトリに関しても存在しないと言われます...

pi@raspberrypi:~$ ls -l /dev/serial*
ls: cannot access '/dev/serial*': No such file or directory
他に考えられる原因

再度試していて考えられた原因は3つです。
■1.Ubuntuまたはraspiのfirmwareのバージョン、種類が異なる
私の環境では、公式からインストールしたイメージをRaspberry Pi Imager v1.7.2で
OSを選ぶ→カスタムイメージを使う→ubuntu-20.04.4-preinstalled-server-arm64+raspi.img.xz
で書き込んでいます。
https://ubuntu.com/download/raspberry-pi
以下がその環境での表示です。

pi@raspberrypi:~$ cat /etc/debian_version 
bullseye/sid
pi@raspberrypi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal
pi@raspberrypi:~$ uname -a
Linux raspberrypi 5.4.0-1058-raspi #65-Ubuntu SMP PREEMPT Fri Mar 25 12:29:46 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
pi@raspberrypi:~$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

補足ですが上記のようなやり方ではなく、Raspberry Pi Imagerで
OSを選ぶ→Other general-purpose OS→Ubuntu→Ubuntu Server 20.04.4 LTS(RPi 3/4/400)
を書き込んだ環境でも同様に失敗しました...

■2.bno055が息をしていない
これに関しては何らかの理由で私が壊したか、不良品か...

■3.Ubuntuの初期設定
私はこれらの環境を構築するにあたって
3.1ファームウェアの更新

pi@raspberrypi:~$ sudo apt update
pi@raspberrypi:~$ sudo apt upgrade

3.2他記事を参考に
https://qiita.com/s_fujii/items/466d455ca19fb4c20744
シリアル通信を有効化するため

sudo echo "deb http://archive.raspberrypi.org/debian/ buster main" >> /etc/apt/sources.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7FA3303E
sudo apt-get update
sudo apt-get install raspi-config
sudo raspi-config

5 Interfacting Options→P6 Serial→
"Would you like a login shell to be accessible over serial?"→No→
"Would you like the serial port hardware to be enabled?"→Yes

またSSHを有効化するため

5 Interfacting Options→P2 SSH→yes

最後に/boot/firmware以下の編集

pi@raspberrypi:/boot/firmware$ cat cmdline.txt
elevator=deadline net.ifnames=0 console=serial0,115200 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash
pi@raspberrypi:/boot/firmware$ cat usercfg.txt
# Place "config.txt" changes (dtparam, dtoverlay, disable_overscan, etc.) in
# this file. Please refer to the README file for a description of the various
# configuration files on the boot partition.

dtoverlay=uart3
dtoverlay=uart5
pi@raspberrypi:/boot/firmware$ cat config.txt 
# Please DO NOT modify this file; if you need to modify the boot config, the
# "usercfg.txt" file is the place to include user changes. Please refer to
# the README file for a description of the various configuration files on
# the boot partition.

# The unusual ordering below is deliberate; older firmwares (in particular the
# version initially shipped with bionic) don't understand the conditional
# [sections] below and simply ignore them. The Pi4 doesn't boot at all with
# firmwares this old so it's safe to place at the top. Of the Pi2 and Pi3, the
# Pi3 uboot happens to work happily on the Pi2, so it needs to go at the bottom
# to support old firmwares.

[pi4]
kernel=uboot_rpi_4.bin

[pi2]
kernel=uboot_rpi_2.bin

[pi3]
kernel=uboot_rpi_3.bin

[pi0]
kernel=uboot_rpi_3.bin

#[pi4]
#arm_boost=1

[all]
# Enable the audio output, I2C and SPI interfaces on the GPIO header. As these
# parameters related to the base device-tree they must appear *before* any
# other dtoverlay= specification
dtparam=audio=on
dtparam=i2c_arm=on
dtparam=spi=on

# Comment out the following line if the edges of the desktop appear outside
# the edges of your display
#disable_overscan=1

# If you have issues with audio, you may try uncommenting the following line
# which forces the HDMI output into HDMI mode instead of DVI (which doesn't
# support audio output)
#hdmi_drive=2

# Config settings specific to arm64
arm_64bit=1
#dtoverlay=dwc2

#[cm4]
# Enable the USB2 outputs on the IO board (assuming your CM4 is plugged into
# such a board)
#dtoverlay=dwc2,dr_mode=host

[all]

# The following settings are "defaults" expected to be overridden by the
# included configuration. The only reason they are included is, again, to
# support old firmwares which don't understand the "include" command.

enable_uart=1
cmdline=cmdline.txt

include syscfg.txt
include usercfg.txt

を行っております。

長文並びに度重なる質問お許しください。ご助言いただけますと幸いです。

かついとかついと

使用しているユーザアカウントをdialoutグループに追加してありますでしょうか?
下記のように/dev/ttyAMA*はdialoutグループには読み書き可能です。

$ ls -l /dev/ttyAMA*
crw-rw---- 1 root dialout 204, 64 Jan 10 13:56 /dev/ttyAMA0
crw-rw---- 1 root dialout 204, 65 Jan 10 13:56 /dev/ttyAMA1
crw-rw---- 1 root dialout 204, 66 Jan 10 13:56 /dev/ttyAMA2

ユーザアカウントがdialoutグループに属しているかどうかはidコマンドで確認できます。
(1)dialoutに属していないとき

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),5(tty),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),115(netdev),118(lxd),131(i2c)

bno055ノードは以下のように起動できませんでした。

$ ros2 run bno055 bno055 --ros-args --param uart_port:="/dev/ttyAMA2" --param frame_id:="imu_link"
[INFO] [1649764356.459783323] [bno055]: Initializing parameters
[INFO] [1649764356.475699905] [bno055]: Parameters set to:
[INFO] [1649764356.477813088] [bno055]: 	ros_topic_prefix:	"bno055/"
[INFO] [1649764356.479815976] [bno055]: 	connection_type:	"uart"
[INFO] [1649764356.481807122] [bno055]: 	uart_port:		"/dev/ttyAMA2"
[INFO] [1649764356.483780251] [bno055]: 	uart_baudrate:		"115200"
[INFO] [1649764356.485758360] [bno055]: 	uart_timeout:		"0.1"
[INFO] [1649764356.487738414] [bno055]: 	frame_id:		"imu_link"
[INFO] [1649764356.489661543] [bno055]: 	data_query_frequency:	"10"
[INFO] [1649764356.491638726] [bno055]: 	calib_status_frequency:	"0.1"
[INFO] [1649764356.493547614] [bno055]: 	operation_mode:		"12"
[INFO] [1649764356.495461020] [bno055]: 	placement_axis_remap:	"P1"
[INFO] [1649764356.497339889] [bno055]: 	acc_factor:		"100.0"
[INFO] [1649764356.499278610] [bno055]: 	mag_factor:		"16000000.0"
[INFO] [1649764356.501162257] [bno055]: 	gyr_factor:		"900.0"
[INFO] [1649764356.503058181] [bno055]: 	set_offsets:		"False"
[INFO] [1649764356.504956513] [bno055]: 	offset_acc:		"[65516, 165, 65512]"
[INFO] [1649764356.506879438] [bno055]: 	offset_mag:		"[65460, 65182, 637]"
[INFO] [1649764356.508768621] [bno055]: 	offset_gyr:		"[2, 65535, 65535]"
[INFO] [1649764356.510728657] [bno055]: 	variance_acc:		"[0.017, 0.017, 0.017]"
[INFO] [1649764356.512651915] [bno055]: 	variance_angular_vel:	"[0.04, 0.04, 0.04]"
[INFO] [1649764356.514604414] [bno055]: 	variance_orientation:	"[0.0159, 0.0159, 0.0159]"
[INFO] [1649764356.516626356] [bno055]: 	variance_mag:		"[0.0, 0.0, 0.0]"
[INFO] [1649764356.518946040] [bno055]: Opening serial port: "/dev/ttyAMA2"...
[INFO] [1649764356.521229131] [bno055]: Unable to connect to IMU at port /dev/ttyAMA2
[INFO] [1649764356.523210204] [bno055]: Check to make sure your device is connected
[INFO] [1649764356.525491017] [bno055]: ROS node shutdown
[INFO] [1649764356.527490349] [bno055]: No timers to shutdown

(2)dialoutに属しているとき

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),5(tty),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),115(netdev),118(lxd),131(i2c)

bno055ノードは以下のように起動できました。

$ ros2 run bno055 bno055 --ros-args --param uart_port:="/dev/ttyAMA2" --param frame_id:="imu_link"
[INFO] [1649765187.433254120] [bno055]: Initializing parameters
[INFO] [1649765187.448807194] [bno055]: Parameters set to:
[INFO] [1649765187.450822861] [bno055]: 	ros_topic_prefix:	"bno055/"
[INFO] [1649765187.452827805] [bno055]: 	connection_type:	"uart"
[INFO] [1649765187.454758620] [bno055]: 	uart_port:		"/dev/ttyAMA2"
[INFO] [1649765187.456694806] [bno055]: 	uart_baudrate:		"115200"
[INFO] [1649765187.458630898] [bno055]: 	uart_timeout:		"0.1"
[INFO] [1649765187.460598324] [bno055]: 	frame_id:		"imu_link"
[INFO] [1649765187.462515232] [bno055]: 	data_query_frequency:	"10"
[INFO] [1649765187.464514435] [bno055]: 	calib_status_frequency:	"0.1"
[INFO] [1649765187.466441898] [bno055]: 	operation_mode:		"12"
[INFO] [1649765187.468359491] [bno055]: 	placement_axis_remap:	"P1"
[INFO] [1649765187.470237621] [bno055]: 	acc_factor:		"100.0"
[INFO] [1649765187.472128417] [bno055]: 	mag_factor:		"16000000.0"
[INFO] [1649765187.474015769] [bno055]: 	gyr_factor:		"900.0"
[INFO] [1649765187.475964065] [bno055]: 	set_offsets:		"False"
[INFO] [1649765187.477848843] [bno055]: 	offset_acc:		"[65516, 165, 65512]"
[INFO] [1649765187.479743547] [bno055]: 	offset_mag:		"[65460, 65182, 637]"
[INFO] [1649765187.481645232] [bno055]: 	offset_gyr:		"[2, 65535, 65535]"
[INFO] [1649765187.483675454] [bno055]: 	variance_acc:		"[0.017, 0.017, 0.017]"
[INFO] [1649765187.485659103] [bno055]: 	variance_angular_vel:	"[0.04, 0.04, 0.04]"
[INFO] [1649765187.487662658] [bno055]: 	variance_orientation:	"[0.0159, 0.0159, 0.0159]"
[INFO] [1649765187.489639584] [bno055]: 	variance_mag:		"[0.0, 0.0, 0.0]"
[INFO] [1649765187.491986918] [bno055]: Opening serial port: "/dev/ttyAMA2"...
[INFO] [1649765187.552062178] [bno055]: Configuring device...
Current sensor offsets:
[INFO] [1649765187.586038383] [bno055]: 	Accel offsets (x y z): 0 0 0
[INFO] [1649765187.589668124] [bno055]: 	Mag offsets (x y z): 0 0 0
[INFO] [1649765187.593219383] [bno055]: 	Gyro offsets (x y z): 0 0 0
[INFO] [1649765187.625654458] [bno055]: Bosch BNO055 IMU configuration complete.
かついとかついと

追加情報ありがとうございます。
UARTの有効化・bno055ノードの実行・idコマンドの結果を見ますと、ポートを開くことはできているようです。

気になるのは、[1]GPIOピンの接続です。
(1)
ラズパイ4のUART5は、
TXD5 – GPIO12 – Pin32
RXD5 – GPIO13 – Pin33
です。
https://microcontrollerslab.com/raspberry-pi-4-pinout-description-features-peripherals-applications/#Raspberry_Pi_UART_Pins

また、UARTは下記の図のように接続します。
https://www.analog.com/-/media/images/analog-dialogue/en/volume-54/number-4/articles/uart-a-hardware-communication-protocol/335962-fig-01.svg?w=900&imgver=1

頂いた情報にTx/Rxを書き加えると下記のようになり、Tx(送信)同士をつなげ、Rx(受信)同士をつなげていないでしょうか?
bno055 - raspiGPIO
VIN   - 5V(pin4)
GND - GND(pin6)
Rx - GPIO13(pin33)...RXD5
Tx - GPIO12(pin32)...TXD5
ADD - GND(pin6)

(2) もしよろしければ使用してるBNO055モジュール教えていただけないでしょうか?
ADDというピンがあるので、GY-BNO055と勝手ながら推測しました。

GY-BNO055はI2CかUARTの切り替えを半田ブリッジで行う必要があるようです。
https://deve.sakura.ne.jp/make_robots/2019/06/04/jetson-nano-でカルマンフィルタ不要の9軸フュージョンセ/

(3) VINに5Vを給電するか、3.3Vを給電するか、どちらが良いのでしょうか?
私の場合ですと、使用しているBNO055モジュールは3.3V-5Vで使えますが、ラズパイ4のGPIOが3.3Vトレラントなので3.3Vを給電しています。

ゆうゆう

(1)
仰られるようにTx同士、Rx同士を繋げておりました...
uart通信の初歩的な部分を失念しておりました。申し訳ございません。

(3)こちらの記事のコメントから5Vの方が良いのかなと考えてしまいました。
https://mechamemo.hatenablog.jp/entry/2018/12/16/003142

(2)
GY-BNO055です。
ご助言いただきましたショートによっての切り替えですが、
https://gr33nonline.wordpress.com/2019/04/19/dont-get-the-wrong-bno055/
只今確認しましたところ出荷時では2つともショートしてあり、
そのまま使用していたためI2Cの設定になっていました...

その後、IC側のPS1ブリッジの半田を取り除き(UARTに設定)、
bno055ノードを実行したところ、通信できませんでした...
まだ通電している可能性が考えられたため、
$i2cdetect -y 1
にてMPU9250でI2Cアドレスが表示されたのを確認した後
同様にbno055を(SCL、SDAの位置を確認し)接続したところI2Cにおいても反応がありませんでした...

ご助言いただきました(1)(3)よりbno055を壊してしまった可能性が高いですね...

新しく買い替えまして、再度試したいと思います。
届くまでの間で過去Raspberry Pi OSでUART通信に成功した経験のあるbno055以外のデバイスでもUART通信の確認をしてみます。

かついとかついと

こちらこそいろいろ情報共有いただきありがとうございました。
本記事も、接続ピンについてもう少し加筆修正いたします。

ゆうゆう
pi@raspberrypi:~$ ls -l /dev/ttyAMA*
crw-rw---- 1 root dialout 204, 64 Jan 10 13:56 /dev/ttyAMA0
crw-rw---- 1 root dialout 204, 65 Jan 10 13:56 /dev/ttyAMA1
crw-rw---- 1 root dialout 204, 66 Jan 10 13:56 /dev/ttyAMA2

idコマンドで確認したところ

pi@raspberrypi:~$ id
uid=1000(pi) gid=1003(pi) groups=1003(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),107(input),109(render),115(netdev),1000(gpio),1001(spi),1002(i2c)

このように表示されました。dialoutの記載があるためグループには入っているのでしょうか。

ログインするとコメントできます