[Moveit! 공부3]
2.5~2.6 ros_control
●ros_control이 무엇인지는 읽어봤는데 솔직히 어려웠다.
구글링을 해서 읽어봐도 와닿지 않았다. 일단은 중간에서 HW(실제 로봇이나 gazebo상의 시뮬레이션)으로 ros의 명령을 전달해주는 역할 정도로 이해했다.(정확 X)
●일단은 강의에 있는 launch 코드와 yaml을 내 ros_arm에 맞게 수정했다.
추가로 강의에선 robot_description 패키지와 launch파일의 패키지가 구분되어 있는 거 같은데 일단 나는 익숙한 대로 모두 한 패키지 안에서 구성했다.
#launch 파일
<launch>
<include file="$(find gazebo_ros)/launch/empty_world.launch"/>
<arg name="model" default="$(find ros_arm)/urdf/ros_arm.urdf.xacro"/>
<param name="robot_description" command="$(find xacro)/xacro $(arg model)"/>
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -x 0 -y 0 -z 0 -urdf -model ros_arm"/>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"/>
<rosparam file="$(find ros_arm)/config/controllers.yaml" command="load"/>
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="true"
output="screen" args=" joint_state_controller arm_controller "/>
</launch>
#controllers.yaml 파일
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 20
arm_controller:
type: position_controllers/JointTrajectoryController
joints: - motor_1 - motor_2 - motor_3
constraints: goal_time: 0.6
stopped_velocity_tolerance: 0.05
motor_1: {trajectory: 0.1, goal: 0.1}
motor_2: {trajectory: 0.1, goal: 0.1}
motor_3: {trajectory: 0.1, goal: 0.1}
stop_trajectory_duration: 0.5
state_publish_rate: 25
action_monitor_rate: 10
#end_effector_controller: (추후 추가될 end_effector 부분 주석 처리)
# type: position_controllers/JointPositionController
# joint: finger_joint
일단 위처럼 구성 후 실행하니 잘 작동했다.
●확실히 rviz로 움직이는 것보다 gazebo로 움직이는 게 좀 더 현실적으로 움직인다.
다만 오직 link와 ground(world)와의 충돌만 있고 link끼리는 충돌하지 않았다. 이 부분도 추가로 알아봐야겠다.
2.7 RobotHW를 이용해 ros_control과 실제 로봇을 연결해보기
●이 부분은 내가 c++에 대한 지식이 부족해서 전부 이해하진 못했다.
대신 추후 내가 ros_arm을 실제로 만든 후 ros_control로 그 실제 로봇을 어떻게 연결하는지를 알 수 있었다.
강의에선 로봇을 만들지 않고 가상의 로봇(dummy robot)을 만들어 명령어가 전달되는가만 확인한 것 같다.
추가 공부 사항
1. JointTrajectoryController를 쓴 이유와 그 외에 무엇이 있는지
2. constraints: goal_time은 무엇인지
3. trajectory와 goal의 값은 무엇인지를 강의를 끝낸 후 추가적으로 더 공부하자
4. gazebo상에서 움직일 때 world와는 충돌이 있는데 link끼리는 충돌하지 않는다. 이 부분도 알아보자
└2021-2 #6에서 해결
5. gazebo상에서는 urdf의 색깔이 정상적으로 나오지 않음
└2021-2 #6에서 해결
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================
'개인 프로젝트' 카테고리의 다른 글
2021-2+ Moveit!입문 #4 Moveit!-1 (0) | 2022.01.02 |
---|---|
2021-2 간단한 ROS연습용 로봇팔 제작 #6 (0) | 2021.12.29 |
2021-2+ Moveit!입문 #2 Gazebo (0) | 2021.12.27 |
2021-2+ Moveit!입문 #1 tf2 (0) | 2021.12.23 |
2021-2 간단한 ROS연습용 로봇팔 제작 #5 (0) | 2021.12.17 |