아래 글을 참고하였습니다.

[Gmapping] RPLidar를 이용한 Gmapping

1. 패키지 설치

$ sudo apt install ros-melodic-slam-gmapping ros-melodic-gmapping

앞 장부터 그대로 따라했으면 이미 설치되어있을 것입니다.

2. 실행

remote 환경이 제대로 설정되어야합니다. 3장 2.2절을 참고하세요. remote환경이 되지 않으면 아래 명령어를 모두 Jetson에서 실행하세요.

# 터미널 #1, rpliar, imu, arduino 동작
$ roslaunch jessicar2_slam jessicar2p_gmapping.launch

#terminal #2, 지도를 그리기 위해 운전을 해야합니다. 
roslaunch jessicar2_teleop jessicar2_teleop_key.launch
# or
roslaunch jessicar2_teleop jessicar2_teleop_joy.launch

#terminal #3, PC에서 실행하는게 좋습니다.
roslaunch jessicar2_slam jessicar2_gmapping_rviz.launch

map을 저장하기 위해서는 아래 명령을 사용해주세요

$ rosrun map_server map_saver -f <name_of_map>
zeta@changwhan-asus:~/gcamp_ws/src/jessicar2$ rosrun map_server map_saver -f myroom
[ INFO] [1670653853.301568507]: Waiting for the map
[ INFO] [1670653866.798017584]: Received a 1984 X 1984 map @ 0.050 m/pix
[ INFO] [1670653866.798047083]: Writing map occupancy data to myroom.pgm
[ INFO] [1670653866.874186108]: Writing map occupancy data to myroom.yaml
[ INFO] [1670653866.874261897]: Done

jessicar2Mapping.launch만 실행하면 bringup(아두이노 + imu + RPliar)와 ekf Pose까지 모두 동작시킵니다.

jetson@jp4512G:~/catkin_ws$ roslaunch jessicar2_slam jessicar2_gmapping.launch
... logging to /home/jetson/.ros/log/26c96836-93d0-11ed-b9aa-f2c0a8c83755/roslaunch-jp4512G-10535.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server <http://192.168.55.1:40981/>

SUMMARY
========

PARAMETERS
 * /imu_node/frame_id: imu_link
 * /odom_pub/initialPoseRecieved: True
 * /pwmConstants: [75, 42, 50, 80]
 * /robot_pose_ekf/base_footprint_frame: base_footprint
 * /robot_pose_ekf/debug: False
 * /robot_pose_ekf/freq: 30.0
 * /robot_pose_ekf/gps_used: False
 * /robot_pose_ekf/imu_used: False
 * /robot_pose_ekf/odom_used: True
 * /robot_pose_ekf/output_frame: odom
 * /robot_pose_ekf/self_diagnose: False
 * /robot_pose_ekf/sensor_timeout: 1.0
 * /robot_pose_ekf/vo_used: False
 * /rosdistro: melodic
 * /rosversion: 1.14.13
 * /rplidarNode/angle_compensate: True
 * /rplidarNode/frame_id: laser_link
 * /rplidarNode/inverted: False
 * /rplidarNode/serial_baudrate: 115200
 * /rplidarNode/serial_port: /dev/rplidar
 * /serial_node/baud: 115200
 * /serial_node/port: /dev/arduinoNano
 * /slam_gmapping/angularUpdate: 0.5
 * /slam_gmapping/astep: 0.05
 * /slam_gmapping/delta: 0.05
 * /slam_gmapping/iterations: 5
 * /slam_gmapping/kernelSize: 1
 * /slam_gmapping/lasamplerange: 0.005
 * /slam_gmapping/lasamplestep: 0.005
 * /slam_gmapping/linearUpdate: 1.0
 * /slam_gmapping/llsamplerange: 0.01
 * /slam_gmapping/llsamplestep: 0.01
 * /slam_gmapping/lsigma: 0.075
 * /slam_gmapping/lskip: 0
 * /slam_gmapping/lstep: 0.05
 * /slam_gmapping/map_update_interval: 5.0
 * /slam_gmapping/maxUrange: 16.0
 * /slam_gmapping/ogain: 3.0
 * /slam_gmapping/particles: 30
 * /slam_gmapping/resampleThreshold: 0.5
 * /slam_gmapping/sigma: 0.05
 * /slam_gmapping/srr: 0.1
 * /slam_gmapping/srt: 0.2
 * /slam_gmapping/str: 0.1
 * /slam_gmapping/stt: 0.2
 * /slam_gmapping/temporalUpdate: 3.0
 * /slam_gmapping/xmax: 50.0
 * /slam_gmapping/xmin: -50.0
 * /slam_gmapping/ymax: 50.0
 * /slam_gmapping/ymin: -50.0

NODES
  /
    basefootprint_to_baselink (tf/static_transform_publisher)
    baselink_to_imulink (tf/static_transform_publisher)
    baselink_to_laserlink (tf/static_transform_publisher)
    imu_node (mpu_6050_driver/imu_node.py)
    odom_pub (jessicar2_localization/odom_pub)
    robot_pose_ekf (robot_pose_ekf/robot_pose_ekf)
    rplidarNode (rplidar_ros/rplidarNode)
    rviz_click_to_2d (jessicar2_localization/rviz_click_to_2d)
    serial_node (rosserial_python/serial_node.py)
    slam_gmapping (gmapping/slam_gmapping)

auto-starting new master
process[master]: started with pid [10547]
ROS_MASTER_URI=http://192.168.55.1:11311

setting /run_id to 26c96836-93d0-11ed-b9aa-f2c0a8c83755
process[rosout-1]: started with pid [10561]
started core service [/rosout]
process[baselink_to_laserlink-2]: started with pid [10578]
process[basefootprint_to_baselink-3]: started with pid [10579]
process[serial_node-4]: started with pid [10582]
process[rplidarNode-5]: started with pid [10596]
process[baselink_to_imulink-6]: started with pid [10602]
process[imu_node-7]: started with pid [10604]
process[rviz_click_to_2d-8]: started with pid [10615]
process[odom_pub-9]: started with pid [10621]
process[robot_pose_ekf-10]: started with pid [10625]
process[slam_gmapping-11]: started with pid [10632]
[ WARN] [1673675776.597727845]: InitPose 1
[ INFO] [1673675776.726135942]: RPLIDAR running on ROS package rplidar_ros, SDK Version:2.0.0
[ INFO] [1673675776.805757640]: RPLIDAR MODE:A1M8
[ INFO] [1673675776.806918915]: RPLIDAR S/N: 6DB3EDF9C7E29BD1A7E39EF2FD60431B
[ INFO] [1673675776.806976574]: Firmware Ver: 1.29
[ INFO] [1673675776.807018322]: Hardware Rev: 7
[ INFO] [1673675776.858388684]: RPLidar health status : OK.
[ INFO] [1673675777.119668637]: current scan mode: Sensitivity, sample rate: 8 Khz, max_distance: 12.0 m, scan frequency:10.0 Hz, 
[ INFO] [1673675778.781022949]: Laser is mounted upwards.

rqt_graph를 실행하여 아래 그래프를 구할 수 있습니다.

Untitled

$ rosrun tf view_frames
$ evince frames.pdf