패키지 명은 ros_erle_teleoperation으로 erle robotics의 로봇들을 원격조종하기 위한 패키지이다.
링크는 다음과 같다.
https://github.com/erlerobot/ros_erle_teleoperation/tree/master/src
작업환경
- OS : Ubuntu 16.04- ROS : Kinetic
- LIDAR Sendor : YDLIDAR-G4
- Hardware : erle-copter
1. Download ros_erle_teleoperation package
다음 명령어를 통해 git에서 패키지를 받아와 컴파일 해준다.
1
2
3
4
|
$ cd ~/catkin_ws/src
$ git clone https://github.com/erlerobot/ros_erle_teleoperation
$ cd ~/catkin_ws
$ catkin_make --pkg ros_erle_teleoperation
| cs |
# Error_01
다음과 같은 에러가 발생했다./home/eh420/catkin_ws/src/ros_erle_teleoperation/src/ROS/thread_ros.cpp:76:56: error: ‘mavros_msgs::SetMode::Response {aka struct mavros_msgs::SetModeResponse_<std::allocator<void> >}’ has no member named ‘success’
ROS_INFO("Send OK %d Value:", srv.response.success);
# Solution_01
home/catkin_ws/src/ros_erle_teleoperation/src/ROS/thread_ros.cpp
위 경로의 에러가 발생한 파일을 열어보자.
그 중 아래와 같은 코드를 찾아서
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
void Thread_ROS::updateMode()
{
if(share_memory->getMode()!=share_memory->getModeChange() && !share_memory->getModeChange().empty()){
mavros_msgs::SetMode srv;
srv.request.base_mode = 0;
srv.request.custom_mode = share_memory->getModeChange();
if (cl_mode.call(srv)) {
ROS_INFO("Send OK %d Value:", srv.response.success);
} else {
ROS_ERROR("Failed SetMode");
return;
}
}
}
| cs |
8번째 줄의 success를 mode_sent로 바꾸어주자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
void Thread_ROS::updateMode()
{
if(share_memory->getMode()!=share_memory->getModeChange() && !share_memory->getModeChange().empty()){
mavros_msgs::SetMode srv;
srv.request.base_mode = 0;
srv.request.custom_mode = share_memory->getModeChange();
if (cl_mode.call(srv)) {
ROS_INFO("Send OK %d Value:", srv.response.mode_sent);
} else {
ROS_ERROR("Failed SetMode");
return;
}
}
}
| cs |
그리고 다시 컴파일 해주자.
1
2
|
$ cd ~/catkin_ws
$ catkin_make --pkg ros_erle_teleoperation
| cs |
그러면 문제없이 컴파일이 될 것이다.
( 링크 참조 : https://github.com/Jaeyoung-Lim/modudculab_ros/issues/1 )
댓글 없음:
댓글 쓰기