// it's for Latex

pages

[ hector_slam realization ] #05. Run Erle-copter with ROS [ ros_erle_teleoperation package ]

erle-copter를 구동하기 위한 패키지 및 환경 설정은 완료되었다.
이제 erle-copter를 ROS를 사용하여 구동하기 위한 작업을 시작하자.


작업환경

- OS : Ubuntu 16.04
- ROS : Kinetic
- LIDAR Sendor : YDLIDAR-G4
- Hardware : erle-copter



1. Battery check


갑자기 배터리 체크를 하라고 하면 당황하겠지만, 대부분의 드론을 배송받으면 안전을 위하여 배터리가 거의 없는 상태이다. 필자의 경우, 없는 배터리로 드론을 조작하려고 많이 고생하였지만 이 글을 읽는 여러분은 이런 삽질은 피하길 바라는 마음에서 먼저 배터리가 충분한지 확인하길 바란다.

2. Connect wifi


erle-copter에 전원을 인가하면 처음 3초 정도 erle-brain의 LED가 빠르게 점멸하고, 이후 부저음과 함께 LED가 천천히 점멸하게 된다. 이 상태가 되고 나면 본인이 사용하는 Client PC (필자의 경우 Labtop) 에 erle로 시작하는 wifi 하나가 인식될 것이다.

필자의 경우 wifi의 SSID는 "erle-robotics-frambuesa" 이며, 비밀번호는 "holaerle" 이다.

3. ROS Network Setting


이제 ROS 네트워크를 설정하여야 한다. erle robotics가 파산한 이후로 인터넷 서버의 매뉴얼 또한 함께 터져버려서 이 부분을 작업하는데 꽤나 시간을 소요했다. 여러 자료들을 확인한 후 가장 적합한 방법을 기술하겠다.

먼저 erle-copter의 ip address는 기본적으로 "10.0.0.1" 이다.
그리고 erle-copter에 연결되는 pc의 ip address는 "10.0.0.2" 가 된다.

이를 설정하기 위해 다음과 같은 작업을 진행한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sudo nano ~/.bashrc
## 'alt' + '/' 을 눌러 맨 아래로 이동한 후, 다음 내용 입력.
#================================================
# erle-copter setting
export ROS_MASTER_URI=http://10.0.0.1:11311
export ROS_IP=10.0.0.2
#================================================
## 'ctrl' + 'x' 를 눌러 저장
$ source ~/.bashrc
cs





# Error


하지만 여기서 문제가 발생했다.
위와 같이 설정을 완료한 이 후, Labtop 에서 "rostopic list"를 했을때는 topic list 들이 모두 다 정상적으로 떴지만, "rostopic echo /mavros/imu/data" 를 했을 때는, 아무 topic도 받지 못하는 것이었다.

이 문제를 해결하기 위하여 다음 링크의 방법을 참조하였고, 제대로 해결할 수 있었다.
( link : https://answers.ros.org/question/48240/rostopic-list-works-but-rostopic-echo-does-not/ )
=======================================================================
In my case it was a matter of my client not being able to resolve the IP address of my server. I was able to verify this by subscribing to a topic and then checking the info about that topic:
$rostopic info /gazebo/model_states

Type: gazebo_msgs/ModelStates

Publishers: 
 * /gazebo (http://my-workstation:42193/)

Subscribers: 
 * /rostopic_117_1574085827847 (http://132.11.11.111:40064/)
I had passed 132.11.11.111 to my client as ROS_MASTER_URI but my server publishes as 'my-workstation' and not 132.11.11.111. It's clear then that the Ros Master was unable to connect the topic listener and publisher to listen and publish to the same port because it cant resolve what 'my-workstation' is referring to.
So my solution was to add
132.11.11.111 my-workstation
to the end of etc/hosts on my client and now it works
=======================================================================

위 방법을 이용하여 다음의 명령어를 통해 대체 어떤 형태로 topic이 erle-copter로부터 publish되고 있는지 확인할 수 있었다.

1
$ rostopic info /mavros/imu/data
cs



보다시피 publish되는 이름은 erle-brain 이었고, 이 문제를 해결하기 위해 다음과 같은 작업을 진행했다.

1
2
3
4
5
6
7
8
9
10
$ cd ~
$ sudo nano /etc/hosts
  
#==========================

# bind ip address and name

10.0.0.1        erle-brain
#==========================
cs


위와같이 저장하고 "rostopic echo /mavros/imu/data" 를 해보면 다음과 같이 값들을 받아오는 것을 확인할 수 있다.

참고로 이 때, ros_erle_teleoperation은 동작중이어야 한다. 그래야 토픽이 퍼블리쉬 된다!




4. Run ros_erle_teleoperation package


이제 드디어 erle-copter 를 날려보자. 다음 명령어를 통해 노드를 실행시킨다.

1
$ rosrun ros_erle_teleoperation ros_erle_teleoperation
cs


그러면 드론이 구동되는 것을 확인할 수 있다.





































































댓글 없음:

댓글 쓰기