문제 풀이에 핑크랩의 미니봇 프로젝트를 사용했습니다.
spawn_robot = Node(
package='gazebo_ros',
executable='spawn_entity.py',
name='spawn_robot',
output='screen',
arguments=[
'-entity', LaunchConfiguration('robot_name'),
'-topic', 'robot_description',
'-timeout', '20.0',
'-x', '-1.8',
'-y', '0.6',
'-package_to_model'
],
prefix="bash -c 'sleep 2.0; $0 $@' ",
parameters=[{
"use_sim_time": True
}],
)
ros2 launch minibot_bringup bringup_robot_gazebo.launch.py world_name:=turtlebot3_world.world
initial_pose:
x: -1.8
y: 0.6
yaw: 0.0
ros2 topic pub -1 /initialpose geometry_msgs/PoseWithCovarianceStamped '{ header: {stamp: {sec: 0, nanosec: 0}, frame_id: "map"}, pose: { pose: {position: {x: -1.8, y: 0.6, z: 0.0}, orientation: {w: 0.1}}, } }'
ros2 launch minibot_navigation2 bringup_launch.py use_sim_time:=true map:=`ros2 pkg prefix minibot_navigation2`/share/minibot_navigation2/maps/turtle_world.yaml
ros2 topic echo /clicked_point
rviz2 -d `ros2 pkg prefix minibot_navigation2`/share/minibot_navigation2/rviz/nav2_view.rviz
1차 시도: A, B 2개의 좌표만 사용
2차 시도: A 지점과 B 지점 사이에 직선으로 이동 가능한 위치 3개 추가
goThroughPoses(goal_poses) vs goToPose(goal_pose)
최종 코드: turtle_world_nav.py
코드 실행
python3 turtle_world_nav.py