본문 바로가기

개인 프로젝트

2021-2 간단한 ROS연습용 로봇팔 제작 #9

반응형

[ROS+Moveit!+아두이노 2]
 
아두이노 개발 환경 구성과 간단한 연결 테스트가 끝났으니 이제 본격적인 rosserial을 공부할 차례이다.
 
 
rosserial은 아래 블로그를 참고했다.
https://95mkr.tistory.com/entry/ROS8

[ROS] 8. ROS + Arduino 와 통신 Rosserial

☞ 메인보드 : Jetson Nano Developer Kit ☞ 운영 체제 : Ubuntu 18.04 - JetPack 4.3 ☞ ROS 버전 : Melodic ☞ 언어 : C++ 목차 ○ 1. 아두이노 ○ 2. rosserial ① 아두이노 https://www.arduino.cc/ 현재 1.8..

95mkr.tistory.com

 
 

우선 Rosserial Arduino Library를 설치했다.
 
+)rosserial을 설치한 후 hello world 예제를 복사해와서 새로 만든 후 업로드를 했더니 이런 에러가 발생했다.

이상한 점은 분명 rosserial_ex1.ino만 킨 상태에서 얘만 업로드를 했는데 에러 내용에는 ros_arm_test.ino도 같이 나왔다는 것이다.
 
 
관련해서 구글링을 해봤지만 원하는 답을 찾지는 못했다.
 
 
다만 임시 해결책으로 아두이노 코드 파일을 각각의 폴더를 만들어 넣으니까 정상적으로 작동됐다.

이 부분은 나중에 또 발생하면 구글링을 해서 원인을 찾아야겠다.
 
+) 위의 문제를 해결하니까 다른 문제가 생겼다. 예를 들어 1번 파일을 업로드한 후 2번 파일을 업로드하면 1번 파일이 꺼져있어도 계속 1번 파일이 업로드되었다. 이거는 해결책을 금방 찾았다.

하단의 저 src/ros_arm/src/ard_rosserial_ex1/rosserial_ex.ino로 선택되어 있는 파일이 업로드 되는 방식이다.
 
 
어떤 파일이 열려있든 간에 저기에 뜬 파일이 업로드가 되는 것이다.
 
 
쟤만 바꿔주면 된다.
 
 
 
 
 
 
일단 아두이노와의 rosserial을 이용한 시리얼 통신은 성공했다.(사실 이 과정은 이전 표 박사님 강의에서 했던 과정이다.)
 
https://istein.tistory.com/20

C-2345 자세 제어 4족보행 로봇 #9 (ROS 9강-임베디드 시스템, rosserial 실습)

●9강 https://www.youtube.com/watch?v=VKNVj9IDMeo 이 챕터도 실습할 openCR이 없어서 강의를 온전하게 따라가지 못했다.. 그래서 rosserial ROSwiki의 Tutorial 몇 개를 해보는 것으로 대체했다. ●Keyword -..

istein.tistory.com

 
 

 
 
 
 
연결을 확인했으니 이제 모터 1개를 움직여보자.
 
 
이 부분은 아래 블로그의 코드와 설명을 보고 공부했다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=chandong83&logNo=221068884860 

아두이노 ROS 서보 예제 돌려보기 - ft.ROSSerial

아두이노 ROS 설치는 위의 포스팅에서 참고하길 바란다. ROS 아두이노를 설치하면 예제가 좀 있다. ...

blog.naver.com

 
 
우선 위 블로그의 코드를 토대로 내 로봇에 맞게 아두이노 코드를 수정했다.

codesnap extension으로 캡쳐했다.

 
다만 라이브러리를 3개나 include해서 인지 메모리가 부족하다는 에러가 계속 떴다. 조금이나마 줄이려고 Int8을 썼는데도 메모리가 부족했다.
 

 
 
이후 roscore, rosserial_python의 serial_node.py 노드를 각각 실행시키고 rostopic 명령어로 각도를 publish 했다.
 
+) 위 블로그에서는 각도를 양수 값만 썼는데 나는 음수가 필요했다. 하지만 그냥 rostopic pub에 -90을 넣으면 -90이라는 값을 publish 하지 않았다. 그래서 구글링 해서 아래 글을 보고 방법을 배웠다.
 
 
https://answers.ros.org/question/61598/publishing-negative-values-from-command-line/

publishing negative values from command line - ROS Answers: Open Source Q&A Forum

publishing negative values from command line edit Hi! Is it possible to publish negative values via rostopic pub ? I tried rostopic pub -1 /my_point geometry_msgs/Point 1 2 3 with no problem, but when I try rostopic pub -1 /my_point geometry_msgs/Point 1 -

answers.ros.org

 

$rostopic pub /motor_1 std_msgs/Int8 --once -- -90

이렇게 --once와 값의 순서를 바꾸고 --뒤에 값을 써주었다.
 

 
 

 
이렇게 rosserial을 이용해 서보모터 1개를 제어하는 것 까지는 성공했다.
 
 
이제 다수의 모터, ros_arm 전체를 ros를 이용해 제어하는 과정만 남았다.
 
 
하지만 그전에 해결해야(공부해야) 할 문제들이 있다.
 
1. 아두이노의 메모리 부족이 뜨는 문제 해결 (지금 정도는 해결 안하고 가도 되는지?)
 
2. 서보모터의 속도 제어
 
 
다음 과정을 진행하기 전에 위 2개의 문제를 우선적으로 해결해야겠다.
 
 
 
 

 
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다.   : )
========================================================================

 

반응형