---
# System prepended metadata

title: 香菇 slam進度

---

# 香菇 slam進度

* 目前先透過模擬器了解slam 的運作模式，之後再透過模擬器使用到的套件來了解lidar需要上傳哪些資訊至topic，再subscibe 資訊到toolbox 以及 NAV2 相關套件的算法中以完成地圖建構、路徑規劃、導航。
* ros2也可以使用gmapping,但目前剛好查到關於toolbox使用的完整教學所以先使用toolbox了


## 使用環境
* ubuntu 20.04
* ros2 foxy 

## 使用光達
[EAI F4](http://mblock.let-do.com/index.php?route=product/product&product_id=294
)

## 開啟方式
使用[YDLIDAR ROS2 PACKAGE](https://github.com/YDLIDAR/ydlidar_ros2)
細節請看[人魚寫的](https://hackmd.io/@2oZcq83gS3OmPGMBVQ7cog/H1dCgZ0n2)

## 如何利用模擬器進行建圖與儲存
這篇關於[如何利用rviz2以及gazebo來建立地圖](https://roboticsbackend.com/ros2-nav2-generate-a-map-with-slam_toolbox/)寫得很清楚,按照以下步驟進行即可。

由於版本為foxy，執行最後一步驟save map 會出現無法儲存的問題，因此需將指令改為：
``` shell
ros2 service call /map_saver/save_map nav2_msgs/srv/SaveMap "{map_topic: map, map_url: my_map, image_format: pgm, map_mode: trinary, free_thresh: 0.25, occupied_thresh: 0.65}"
```

## 如何利用模擬器進行導航
使用[Navigation2](https://navigation.ros.org/getting_started/index.html)來進行路線規劃與導航。


## 其他完成內容
1.  已確認EAI F4 lidar 可以在 AGX 上打開，nav2已安裝。
2.  在安裝模擬套件至AGX上的過程中發現有關GPIO套件相依性問題，**注意不要安裝到 gpio one 的套件**（我忘了確切的pkg叫什麼惹～）會導致無法下sudo apt install、 upgrade的指令。 
3.  poetry 無法與ros2的虛擬環境一起使用，如想要安裝什麼套件請使用**pyenv**，至於細節有空再來更新！


## 更新 ～8/26 (草稿)
### 有關YDLIDAR ROS2 pkg：

* rqt graph - publish 與 subscribe 關係
![publish 與 subscribe 關係](https://hackmd.io/_uploads/SyrAA1Ta3.png)



1. node 
```shell
        /ydlidar_node
          Subscribers:
            /parameter_events: rcl_interfaces/msg/ParameterEvent
          Publishers:
            /parameter_events: rcl_interfaces/msg/ParameterEvent
            /rosout: rcl_interfaces/msg/Log
            /scan: sensor_msgs/msg/LaserScan
          Service Servers:
            /ydlidar_node/describe_parameters: rcl_interfaces/srv/DescribeParameters
            /ydlidar_node/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
            /ydlidar_node/get_parameters: rcl_interfaces/srv/GetParameters
            /ydlidar_node/list_parameters: rcl_interfaces/srv/ListParameters
            /ydlidar_node/set_parameters: rcl_interfaces/srv/SetParameters
            /ydlidar_node/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
          Service Clients:

          Action Servers:

          Action Clients:

```
2. topic 
    ```shell
    /parameter_events
    /rosout
    /scan
    /tf_static
    /ydlidar_node/transition_event
    ```
4. data of topic /scan
    ```shell
        header:
          stamp:
            sec: 1693055587
            nanosec: 220429000
          frame_id: laser_frame
        angle_min: -3.1415927410125732
        angle_max: 3.1415927410125732
        angle_increment: 0.015591030940413475
        time_increment: 0.00024999998277053237
        scan_time: 0.09974999725818634
        range_min: 0.009999999776482582
        range_max: 64.0
        ranges:
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.5090000033378601
        - 0.492000013589859
        - 0.4869999885559082
        - 0.4830000102519989
        - 0.4790000021457672
        - 0.4740000069141388
        - 0.4690000116825104
        - 0.4659999907016754
        - 0.46299999952316284
        - 0.46000000834465027
        - 0.4569999873638153
        - 0.4560000002384186
        - 0.453000009059906
        - 0.4519999921321869
        - 0.45100000500679016
        - 0.44999998807907104
        - 0.4480000138282776
        - 0.44600000977516174
        - 0.0
        - 0.5090000033378601
        - 0.5049999952316284
        - 0.5019999742507935
        - 0.4959999918937683
        - 0.49300000071525574
        - 0.48399999737739563
        - 0.47699999809265137
        - 0.0
        - 0.44999998807907104
        - 0.44200000166893005
        - 0.0
        - 0.35499998927116394
        - 0.3499999940395355
        - 0.3472500145435333
        - 0.3462499976158142
        - 0.3462499976158142
        - 0.3472500145435333
        - 0.3490000069141388
        - 0.3490000069141388
        - 0.35100001096725464
        - 0.3529999852180481
        - 0.35499998927116394
        - 0.0
        - 0.0
        - 0.49300000071525574
        - 0.48899999260902405
        - 0.49000000953674316
        - 0.492000013589859
        - 0.49799999594688416
        - 0.5070000290870667
        - 0.5120000243186951
        - 0.5120000243186951
        - 0.5130000114440918
        - 0.5130000114440918
        - 0.5120000243186951
        - 0.5120000243186951
        - 0.5099999904632568
        - 0.5099999904632568
        - 0.5109999775886536
        - 0.0
        - 0.4620000123977661
        - 0.4690000116825104
        - 0.0
        - 0.5040000081062317
        - 0.5239999890327454
        - 0.5350000262260437
        - 0.0
        - 0.5440000295639038
        - 0.5540000200271606
        - 0.5619999766349792
        - 0.5659999847412109
        - 0.5709999799728394
        - 0.5730000138282776
        - 0.574999988079071
        - 0.5759999752044678
        - 0.574999988079071
        - 0.574999988079071
        - 0.5789999961853027
        - 0.578000009059906
        - 0.5799999833106995
        - 0.5839999914169312
        - 0.0
        - 0.7160000205039978
        - 0.7129999995231628
        - 0.7129999995231628
        - 0.7099999785423279
        - 0.7059999704360962
        - 0.6980000138282776
        - 0.6869999766349792
        - 0.6779999732971191
        - 0.6669999957084656
        - 0.0
        - 0.0
        - 0.7680000066757202
        - 0.0
        - 0.0
        - 0.9039999842643738
        - 0.9229999780654907
        - 0.9440000057220459
        - 0.9660000205039978
        - 0.9909999966621399
        - 1.0169999599456787
        - 1.0420000553131104
        - '...'
        intensities:
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1012.0
        - 1012.0
        - 1012.0
        - 1012.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 0.0
        - 0.0
        - 1008.0
        - 0.0
        - 0.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - 1008.0
        - '...'

```
    3. client 收到資訊
        ```shell
        [YDLIDAR INFO]: I heard a laser scan laser_frame[411]:
        [YDLIDAR INFO]: angle_range : [-180.000005, 180.000005]
        [YDLIDAR INFO]: angle-distance : [-180.000000, 0.000000]
        [YDLIDAR INFO]: angle-distance : [-179.106705, 0.000000]
        [YDLIDAR INFO]: angle-distance : [-178.213409, 0.000000]
```
### 有關 turtlebot3_gazebo
```shell
/camera/camera_info
/camera/image_raw
/clock
/cmd_vel
/imu
/joint_states
/odom
/performance_metrics
/robot_description
/scan
/tf
/tf_static
```

### 有關SLAM_TOOLBOX pkg
* topic list
```shell
/clock
/map
/map_metadata
/scan
/slam_toolbox/feedback
/slam_toolbox/graph_visualization
/slam_toolbox/scan_visualization
/slam_toolbox/update
/tf
/tf_static
```


### 有關nav2_bringup pkg

* topic list
```shell
/bt_navigator/transition_event
/clock
/cmd_vel
/controller_server/transition_event
/cost_cloud
/evaluation
/global_costmap/costmap
/global_costmap/costmap_raw
/global_costmap/costmap_updates
/global_costmap/footprint
/global_costmap/global_costmap/transition_event
/global_costmap/published_footprint
/goal_pose
/local_costmap/clearing_endpoints
/local_costmap/costmap
/local_costmap/costmap_raw
/local_costmap/costmap_updates
/local_costmap/footprint
/local_costmap/local_costmap/transition_event
/local_costmap/published_footprint
/local_costmap/voxel_grid
/local_plan
/map
/marker
/odom
/plan
/planner_server/transition_event
/received_global_plan
/recoveries_server/transition_event
/tf
/tf_static
/transformed_global_plan
/waypoint_follower/transition_event

```


