ROS2에서 Cartographer 패키지를 빌드할 때, 지도를 생성하고 토픽으로 발행하는 노드의 실행 파일 이름이 변경됨
| 구분 | 변경 전 (ROS 1 또는 구형 설정) | 변경 후 (ROS 2 표준 및 최신 Cartographer) |
|---|---|---|
| Executable | occupancy_grid_node | cartographer_occupancy_grid_node |
neuronbot2/neuronbot2_slam/launch/cartographer_launch.py
Node(
package='cartographer_ros',
executable='occupancy_grid_node', <- cartographer_occupancy_grid_node로 변경, 이름은 변경해줘도 되고 안해줘도 됨
name='occupancy_grid_node',
output='screen',
parameters=[{'use_sim_time': use_sim_time}],
arguments=['-resolution', resolution, '-publish_period_sec', publish_period_sec]),
AWS Robotics GitHub: https://github.com/aws-robotics/
저장소의 여러 버전 중 ROS 2 환경에 맞춰진 버전(ros2 브랜치)을 선택하여 다운로드
git clone https://github.com/aws-robotics/aws-robomaker-small-house-world.git -b ros2
패키지 빌드
colcon build --symlink-install --packages-select aws_robomaker_small_house_world
환경 테스트
ros2 launch aws_robomaker_small_house_world view_small_house.launch.py

환경이 제대로 렌더링되지 않을 경우
export LIBGL_ALWAYS_SOFTWARE=1
→ GPU 대신 CPU로 OpenGL 소프트웨어 렌더링을 강제하여 해결
[변경 전]
gazebo_model_path = os.path.join(get_package_share_directory('neuronbot2_gazebo'), 'models')
if 'GAZEBO_MODEL_PATH' in os.environ:
os.environ['GAZEBO_MODEL_PATH'] += ":" + gazebo_model_path
else :
os.environ['GAZEBO_MODEL_PATH'] = gazebo_model_path
[변경 후]
gazebo_model_path = os.path.join(get_package_share_directory('neuronbot2_gazebo'), 'models')
world_model_path = os.path.join(get_package_share_directory('aws_robomaker_small_house_world'), 'models')
if 'GAZEBO_MODEL_PATH' in os.environ:
# 기존 경로에 로봇 모델과 월드 모델 경로를 모두 콜론(:)으로 추가합니다.
os.environ['GAZEBO_MODEL_PATH'] += ":" + gazebo_model_path + ":" + world_model_path
else :
os.environ['GAZEBO_MODEL_PATH'] = gazebo_model_path
[변경 전]
world = os.path.join(
get_package_share_directory('neuronbot2_gazebo'),
'worlds',
'mememan_world.model'
)
[변경 후]
# aws-robomaker-small-house-world/worlds/small_house.world을 로드해야 함
world = os.path.join(
get_package_share_directory('aws_robomaker_small_house_world'),
'worlds',
'small_house.world'
)
ros2 launch neuronbot2_gazebo neuronbot2_world.launch.py
ros2 launch neuronbot2_slam cartographer_launch.py open_rviz:=true use_sim_time:=true
ros2 run teleop_twist_keyboard teleop_twist_keyboardros2 run nav2_map_server map_saver_cli -f <map_dir>/<map_name>
ros2 run nav2_map_server map_saver_cli -f small_house