## Hokuyo #### urg_node2 連接設定 1. hokuyo ip - 前面的 hokuyo 設備 ip:`192.168.0.10` - 後面的 hokuyo 設備 ip:`192.168.1.11` 2. Ubuntu 網路設定檔 由於把遮罩設為`255.255.255.0`,因此位址的前三碼跟設備 ip 相同就好,像是下面的後 hokuyo,位址設為`192.168.1.100` ,而閘道不必設定。 ![hokoyo back](https://hackmd.io/_uploads/ryKFQRiRke.png =500x) - 使用指令檢查連接: `ping 192.168.1.11` or `ping 192.168.0.10` 3. 設備內容設定 - 在 `cfg` 中的`params_ether.yaml`和`params_ether_2nd.yaml` - 設定 IP、frame ID、掃描角度 4. 啟動檔設定: - 在 `launch` 中的`urg_node2_2lidar.launch.py` - 在 `get_package_share_directory` 設定讀取的 yaml、最後的 `return` 設定 node 名稱、topic 名稱 >[!Caution]ERROR:沒有發送 frame id >在發布感測器資訊時,若出現「沒有發送 frame id」的錯誤訊息,通常是因為該訊息沒有被發送到 TF 所導致,可以參考 [URDF 與 ROS TF](/3KmW-rH8QwCNH0nY1p9iDQ)。 #### ira_laser_tools - 在`laserscan_multi_merger.launch` - 設定接收及發布的 topic 名稱和 frame ID #### rf2o_laser_odometry - 在`rf2o_laser_odometry.launch.py` - 設定 laser topic、odom、frame id ## Velodyne #### IP 設定 由 ubuntu 網路設定做為中間通道連接,可以用 `ping 192.168.2.81` 檢查是否成功 - `設備 ip`:`192.168.2.81` - `電腦 ip`:`192.168.2.13` 目前 Velodyne 的設備 ip 已經從官方預設的 `192.168.1.201` 改為 `192.168.2.81`,因此要進入 Web 設定就直接在搜尋欄輸入 `192.168.2.81` ![Velodyne ip](https://hackmd.io/_uploads/H1i7mAiAJl.png =550x) #### 設定步驟 1. 在瀏覽器輸入`192.168.2.81` 前往 LiDAR Web 介面 2. 將 Host IP 設定為 `192.168.2.13`(前三碼與設備 IP 相同),並記下 data port 於後續的 launch 設定 3. 點選 `set` 和 `save config` 以儲存修改設定 4. 修改 parem 檔,在 `velodyne_driver/config/VLP16-velodyne_driver_node-params.yaml` - `device_ip` 改成 `192.168.2.81` - `frame` 改成 `VLP16_link` - `port` 改成 LiDAR Web 中的 Telemetry Port 6. 開 velodyne launch 檔後再開 rviz 查看點雲顯示,確定有跟 ROS 連接上 ``` cd ~/ros2_ws source install/setup.bash ros2 launch velodyne velodyne-all-nodes-VLP16-launch.py rviz2 ``` 此外,在這篇[ issues ](https://github.com/ros-drivers/velodyne/issues/336)中官方提到,為了增加 topic 的彈性命名而修改 API 不是個合理的好主意,因此需要其他的命名的話可能該透過 remap 的技巧。 #### ERROR:velodyne poll() timeout 此錯誤通常表示: 1. 網路連接不正確 2. USB、hub 未正確連接 3. 傳輸線異常 若 IP 確認無誤但仍出現此錯誤,可以先嘗試讓 velodyne 關機再重新連接,如果不行再更換 host IP 的第四碼,通常可以成功連接 ## IMU ch110 1. frame_id 改為 `imu_link` 2. topic 改為 `imu_data` 3. 增加一個純發布 topic 的 launch,避免不斷刷新資訊 ```launch from launch import LaunchDescription import launch_ros.actions def generate_launch_description(): return LaunchDescription( [ launch_ros.actions.Node( package="serial_imu", executable="talker", output="screen" ), ] ) ```