# 視覺感知與決策組 會議紀錄
# 01/13
## 廷威
- 文件更新整理: https://hackmd.io/5pV_GR3qSLqnGV9uZBOLpg
### 育陞

- 下次測什麼
- 下次開會
- 小專題
## 12/30
### 廷威
- isaac ros: https://hackmd.io/5pV_GR3qSLqnGV9uZBOLpg
- container script 改寫,沒有網路的時候也能跑
- 準備第一關過門需要的 yolov8 模型,套用到 isaac_ros_yolov8
- gazebo + action server + behavior tree + yolo 測試
https://www.youtube.com/watch?v=rChjCoDTMbE
## 12/16
### 廷威
- YOLO 接到 behavior tree blackboard
### 育陞
- ROS 1/2 通訊
- https://hackmd.io/uXwM29avQreL9rK67JTWmw
### 其他
- 進度規劃
- 寒假安排
## 12/02
### 廷威
- [x] visual_slam/tracking/vo_pose (from VSLAM) to action server
- [x] action server to controller (publish target pose to /target)
- [x] action server 的 feedback
- [ ] action server yaw angle
### 育陞
+ Ros2 container 跨裝置溝通
https://hackmd.io/uXwM29avQreL9rK67JTWmw
## 11/18
### 廷威
- DOPE
- 教學: https://nvidia-isaac-ros.github.io/concepts/pose_estimation/dope/tutorial_custom_model.html
- 訓練資料需要 RGB、object pose、cuboid 投影點,可參考 [sample data](https://github.com/andrewyguo/dope_training/tree/master/sample_data)
- [orca_action](https://github.com/NCTU-AUV/orca_action)
- 已移植到 ROS2
- TODO
- 跟控制組的 controller 溝通
- 跟 simulation 的 controller 溝通
- [orca_action_interfaces](https://github.com/NCTU-AUV/orca_action_interfaces)
- 目前設計,goal 為想要到達的位置,feedback 是目前的位置
```
#goal definition
geometry_msgs/Vector3 pose
float64 x
float64 y
float64 z
float32 yaw
---
#result definition
bool done
---
#feedback
geometry_msgs/Vector3 pose
float64 x
float64 y
float64 z
float32 yaw
```
- [orca_bt](https://github.com/NCTU-AUV/orca_bt) (BehaviorTree.CPP and BehaviorTree.ROS2)
- OrcaAction node (action client)
- 利用 orca_action_interfaces 跟 action server 溝通
- TODO
- 從 black board 讀 target pose
- 其他 TODO
- subscribe 需要的 ROS topic 寫到 black board
- 設計 navigation 的 behavior tree
- [orca_docker](https://github.com/NCTU-AUV/orca_docker)
- 之後盡量用這個環境開發,有寫新的 package 也要確保在這個環境可以 build
- gazebo 已移植到 ROS2
### 育陞
### 尚緯
## 10/28
### 廷威
- 新買的 USB 相機可以用,不須裝 driver
- SSD 要換的話要重灌所以暫時還沒換
- isaac ros(https://nvidia-isaac-ros.github.io/index.html)
- [x] isaac_ros_yolov8

- [x] isaac_ros_centerpose

- [x] isaac_ros_dope

- [ ] isaac_ros_argus_camera (for CSI camera)
- 可能是排線有問題

### 育陞
- 測isaac model
- 讀ros2 document
### 尚緯
### 其他
- 因為之前動到 orin eth0 的設定,接有線網路到 router 會有問題,所以要連網的話要插著無線網卡
## 10/14
### 廷威
- isaac ros
- [yolo](https://github.com/NVIDIA-AI-IOT/YOLOv5-with-Isaac-ROS): pytorch 和 torchvision 版本問題未解決
- [pose estimation](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation): 需要在 x86 machine 跑 isaac container 才能把 .pth -> .onnx
- https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation#quickstart step 7
- gazebo
- 暫不改 ROS2,但改成用 container(ROS noetic + gazebo classic)
### 育陞
- orin 網卡安裝
### 尚緯
- 把yaw角判斷程式包成ROS2 package
- [demo video](https://github.com/m4xshen/img-host/assets/74842863/6ee75b74-2873-4387-a42d-44623d772ad4)
### 其他
- ssd: https://www.isunfar.com.tw/product/?prodseq=265479#/bcNo=18&ept=62
- cam: https://www.taiwansensor.com.tw/product/%E9%9A%A8%E6%8F%92%E5%8D%B3%E7%94%A8%E5%9E%8B-usb-camera-%E6%94%9D%E5%BD%B1%E6%A9%9F%E9%8F%A1%E9%A0%AD%E6%A8%A1%E7%B5%84-%E6%94%AF%E6%8F%B4-raspberry-pi-%E6%A8%B9%E6%A2%85%E6%B4%BE%E8%88%87-nvidia-j/
## 0930
### 廷威
- 安裝 jetson orin nx 環境
```shell
ssh orca-auv@140.113.136.103 -p 2222 # (pwd: nctu-auv)
```
- 沒有無線網卡,要連線需要接網路線到 router
- CSI 相機測試:無法使用,跟之前一樣沒辦法開啟相機
- [NVIDIA-ISAAC-ROS](https://github.com/NVIDIA-ISAAC-ROS):提供各種硬體優化過的 ROS package,包含 slam、object pose estimation、image rectify 等等
- 需搭配 docker 使用
- 環境為 ros2 humble
- [isaac_ros_visual_slam](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam/blob/main/docs/tutorial-realsense.md)
- 測試結果:https://youtu.be/VQS-UH8b3r8
- topics:
```
/visual_slam/imu # 200 hz
/visual_slam/status
/visual_slam/tracking/odometry # 90 hz
/visual_slam/tracking/slam_path
/visual_slam/tracking/vo_path
/visual_slam/tracking/vo_pose
/visual_slam/tracking/vo_pose_covariance
/visual_slam/vis/gravity
/visual_slam/vis/landmarks_cloud
/visual_slam/vis/localizer
/visual_slam/vis/localizer_loop_closure_cloud
/visual_slam/vis/localizer_map_cloud
/visual_slam/vis/localizer_observations_cloud
/visual_slam/vis/loop_closure_cloud
/visual_slam/vis/observations_cloud
/visual_slam/vis/pose_graph_edges
/visual_slam/vis/pose_graph_edges2
/visual_slam/vis/pose_graph_nodes
/visual_slam/vis/velocity
```
### 育陞
- 測試orin nx對接ZED相機,直接對接運作正常,過兩段轉接頭及USB2.0的線可以用基本相機功能,但因為找不到USB3.0的線還沒測試API,有跟硬體組確認過應該還在敞篷,明天大掃除順便找看看。
- 試裝敞篷現有網卡的驅動,但沒有成功安裝,可能orin nx的架構不支援。
### 尚緯
- 完成利用磁磚圖片判斷yaw角程式([GitHub Repo](https://github.com/NCTU-AUV/yaw-detector))
- 目前可在 [-90°, 90°)正常運作,yaw角誤差<0.2°
- 執行時間0.4~0.5s
### 其他
- 有存在敞篷電腦的資料記得備份或 push 到 github,硬碟可能有問題
- 之前 jetson xavier nx 很慢的原因為沒有用 SSD 和沒有善用硬體資源
- ROS1 and ROS2
- docker
- 之後視需求可能要再擴充 jetson orin nx 的 SSD
## 0916
### 廷威
- action server (https://github.com/NCTU-AUV/orca_action)

client 發送 /orca_control/goal 後會負責再轉發給 Gazebo 或 Controller,msg 格式為,使用方式可參考 https://github.com/NCTU-AUV/orca_action/blob/master/src/client.py:
```
#goal definition
geometry_msgs/Vector3 linear
geometry_msgs/Vector3 angular
---
#result definition
bool done
---
#feedback
bool done
```
除了 /orca_control/goal 以外,也有其他 topic,可以讓 client 中斷動作或拿目前的 feedback,但目前沒實作這部分

- Visual-Inertial odometry (VIO)
- https://github.com/HKUST-Aerial-Robotics/VINS-Mono
- 可做定位和得到姿態,下周可以接相機實測看看
### 育陞
- 測試Jetson TX2開發版: 規格和版本比xavier低、外接螢幕後操作有明顯卡頓、SDK manager detect不到。
- 看了一些用OpenCV找格線角度的方法:
- https://www.geeksforgeeks.org/line-detection-python-opencv-houghline-method/
- https://maker.pro/raspberry-pi/tutorial/grid-detection-with-opencv-on-raspberry-pi
### 尚緯
- OpenCV格線判斷相關資料:
- https://docs.opencv.org/3.4/da/d5c/tutorial_canny_detector.html
- https://docs.opencv.org/3.4/d9/db0/tutorial_hough_lines.html
### 其他
- 之後改用 https://github.com/orgs/NCTU-AUV/projects/1 紀錄 TODO
- 建議控制組也開始使用 git 做版控
- 確認軟體組培訓內容
## 0902
- [ ] d435i
- [ ] usb 3.2
- [x] ROS (https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy)
- 跟 zed 一樣,可以 publish topic 出去 (RGB-D, IMU, ...)
- [x] IMU (https://hackmd.io/rVANKqWeQW206b4quKsQrQ#IMU)
- 控制組測得 OK 嗎?
- [ ] SLAM (localization)
- [x] 用 [opensource_tracking.launch](https://github.com/IntelRealSense/realsense-ros/blob/ros1-legacy/realsense2_camera/launch/opensource_tracking.launch) 或 [opensource_tracking_tk_localization.launch](https://github.com/shinkansan/2019-UGRP-DPoom/blob/master/SLAM/launch/opensource_tracking_tk_localization.launch)
- 很慢 (可能一秒沒有一個 frame)
- 看 log 主要是因為看到偵測到的 feature 點不夠多,但還不知道具體原因為何,也有可能是因為 xavier 跑不動)
- [ ] 替代方案 [ORB-SLAM3](https://github.com/UZ-SLAMLab/ORB_SLAM3)
- 強調 real-time SLAM,虛擬機也能跑
- 環境很難裝 (xavier 為 ARM 架構晶片)
- [x] YOLO (https://hackmd.io/PtH_-3RcSM-_ETqvI3NnVw)
- [x] 訓練辨識 gate、pole、ball 的 yolov8 模型
- [x] gazebo 收資料
- [x] 結果 (learning curve、f1-score 等看起來不錯)
- [x] ROS
- [x] subscribe to camera topic (RGB image)
- [x] publish detection result
- [ ] Behavior Tree (https://hackmd.io/7b4xlM2yRISO4hW1uK6_5w)
- [ ] 根據 yolo 辨識的資訊決定移動方向
- [x] 建立 py_tree BlackBoard
- [x] subscribe yolo detection result
- [ ] publish 移動方向/位置
- zed
- 對線材較敏感,在上次轉接頭進水後就無法開啟
- 目前考慮讓 zed 改成往下看 (需要再跟機構組協調,而且 zed 比 d435i 長不一定放得下)
- [ ] 確認能不能只 publish 圖片
- ROS
- [ ] 環境變數 (e.g. ROS_MASTER_URI) 寫在 devel/setup.sh 或 launch file
- [ ] ROS_MASTER_URI=<ipv4_addr>
- xavier
- [ ] 相機有效距離
- [ ] 底部相機拿 yaw angle