로봇 개발(ROS)

[230208] Ros2 topic sub 수정

Choi Jaekuk 2023. 2. 8. 15:14

ROS2로 STELLA N1 제어중 좌우 회전은 문제없으나 전진/후진은 제어와 반대로 동작하는 현상이 나타났다.

ROS1에서 사용시에는 문제가 없었으므로 모터나 모터드라이브 문제는 아닐거라 판단해 컨트롤러쪽 코드를 변경해주었다.

 

제어 코드 변경을 위해 모터제어와 연관된

~/colcon_ws/src/STELLA_RASPBERRYPI_ROS2/stella/stella_md/src/main.cpp

 

를 찾아가 Topic Callback 함수인

 

void stellaN1_node::command_velocity_callback(const geometry_msgs::msg::Twist::SharedPtr cmd_vel_msg)
{
  goal_linear_velocity_ = cmd_vel_msg->linear.x;
  goal_angular_velocity_ = cmd_vel_msg->angular.z;
 
  calculate_wheel_vel(cmd_vel_msg->linear.x, cmd_vel_msg->angular.z, &left_rpm, &right_rpm);
}

 

에서 전/후진 속도를 나타내는 linear.x를

 

void stellaN1_node::command_velocity_callback(const geometry_msgs::msg::Twist::SharedPtr cmd_vel_msg)
{
  goal_linear_velocity_ = cmd_vel_msg->linear.x*-1;
  goal_angular_velocity_ = cmd_vel_msg->angular.z;
 
  calculate_wheel_vel(cmd_vel_msg->linear.x*-1, cmd_vel_msg->angular.z, &left_rpm, &right_rpm);

}

 

와 같이 수정후

 

cd ~/colcon_ws && colcon build --symlink-install && source ~/.bashrc

 

적용 결과 문제가 해결되었다.