ANROT 教學文件

ROS Kinetic 串列埠讀取教學

在 Ubuntu 16.04 與 ROS Kinetic 下,把 ANROT 串列資料轉成 ROS topic 的最小公開流程。

最後更新 2025年1月1日 對應產品 6
  • ros
  • kinetic
  • ubuntu
  • tutorial

ROS Kinetic 串列埠範例

協議支援

協議 / frame支援狀態這份 example 的處理方式
0x91 IMUSOL支援發布 /imu_0x91_package,並同步轉成 /IMU_data (sensor_msgs/Imu)。
0x62 GWSOL支援發布 /imu_0x62_package,每個 node 放在 node_data[]
0x63 GWSOL Compact不支援ch_serial 沒有 0x63 / 0x93 compact node decoder。
0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xD1, 0xF0部分支援parser 可解析鬆散欄位;非 gateway frame 會走單機 topic,pressure 只保留在 raw package。

這份範例在 Ubuntu 16.04 + ROS Kinetic 下讀取 ANROT 串列資料,並提供 raw package、標準 sensor_msgs/Imu、rviz 與 3D 顯示流程。若是第一次使用,建議先跑標準 IMU topic,再嘗試視覺化。

下載範例

瀏覽器下載並解壓縮: demo-ros-kinetic-en.zip

主要結構:

demo_ros/
└── serial_imu_ws/
    └── src/
        ├── imu_launch/
        ├── imu_tool/
        └── serial_imu/
            └── src/serial_imu.cpp

1. 確認串列埠

插入產品後確認新增的裝置名稱:

ls /dev/ttyUSB*

若需要臨時開啟權限:

sudo chmod 666 /dev/ttyUSB0

長期使用建議把帳號加入 dialout 群組。

2. 安裝依賴

範例使用 ROS serial package:

sudo apt-get update
sudo apt-get install ros-kinetic-serial

確認安裝成功:

roscd serial

3. 編譯 workspace

cd demo_ros/serial_imu_ws
source /opt/ros/kinetic/setup.bash
catkin_make
source devel/setup.bash

4. 修改串列埠與波特率

範例預設讀取 /dev/ttyUSB0,baud rate 為 115200。若需要修改,請編輯 src/serial_imu/src/serial_imu.cpp:

#define IMU_SERIAL   "/dev/ttyUSB0"
#define BAUD         (115200)

修改後重新編譯:

catkin_make
source devel/setup.bash

5. 輸出 ANROT raw 資料

roslaunch imu_launch imu_msg.launch imu_package:=0x91

成功後會看到裝置 ID、幀率、加速度、角速度、磁力計、歐拉角與四元數。

Device ID:     0
Frame Rate:   100Hz
Acc(G):        0.933    0.317    0.248
Gyr(deg/s):   -0.02     0.30    -0.00
Eul(R P Y):   52.01   -66.63   -60.77
Quat(W X Y Z): 0.770    0.066   -0.611   -0.172

6. 輸出 ROS 標準 Imu topic

roslaunch imu_launch imu_msg.launch

標準 topic 為 /IMU_data,資料型別為 sensor_msgs/Imu

7. rviz 與 3D 顯示

rviz:

roslaunch imu_launch imu_rviz.launch

在 rviz 中確認:

  • Fixed Frame: base_link
  • Topic: /IMU_data

3D 顯示:

roslaunch imu_launch imu_display_3d.launch

常見問題

roslaunch 找不到 launch file

請確認目前終端已執行:

source /opt/ros/kinetic/setup.bash
source demo_ros/serial_imu_ws/devel/setup.bash

apt 找不到 ros-kinetic-serial

請確認 ROS apt source 對應 Ubuntu 16.04 xenial,更新 package list 後再安裝。

多個 USB 裝置導致 port 變動

可使用 udev rule 建立固定裝置名稱,例如 /dev/anrot_imu,再把 IMU_SERIAL 改成該名稱。