본문 바로가기

ROS (Robot Operating System)

[ROS: Robot Operating System] 3-2. ROS+아두이노IDE+OpenCM9.04

본 포스팅에서는 ROS를 이용하여 OpenCM9.04 보드. 

OpenCM9.04는 아두이노IDE를 사용할 수 있고, 또한, 아두이노 IDE는 ROS 라이브러리를 제공하고 있기 때문에 세 가지 방법을 통합하여 사용을 해본다. 

 

OS: Ubuntu

ROS 버전: melodic

개발보드: OpenCM9.04

개발환경: 아두이노 IDE

 

먼저, 아두이노 ROS 패키지를 위한 소프트웨어를 설치한다. 터미널에 아래와 같이 입력한다. 

ros-melodic-rosserial-arduino

* 만약, ros의 버전이 kinetic이면 melodic을 대신 kinetic을 입력하면 된다. 

아래 rosserial은 ROS에서 시리얼 통신을 해줄 수 있도록 설치하는 것이다. 

ros-melodic-rosserial

 

아래 링크에서 아두이노 IDE를 설치한다.

https://www.arduino.cc/en/Main/Donate

- Conribute & download 옆에 Just download를 클릭하여, 다운로드를 진행한다. 

- 아두이노 IDE 설치 후에, ros_lib를 아두이노 IDE가 있는 곳에 설치를 해준다. 

>cd arduino 경로/libraries

> rosrun rosserial_arduino make_libraries.py .

- 위의 화면처럼 ros_lib 가 성공적으로 설치되어 진다. 

 

- 아두이노 IDE에서 OpenCM9.04를 사용하기 위해, USB port를 세팅해준다. 

> wget https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/99-opencm-cdc.rules

> sudo cp ./99-opencm-cdc.rules /etc/udev/rules.d/

> sudo udevadm control --reload-rules sudo udevadm trigger

> sudo apt-get install libncurses5-dev:i386

 

 

File>Preference>AdditionalBoaardsManager URLs:에 다음 링크를 입력해준다. 

https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/arduino/opencm_release/package_opencm9.04_index.json

- 위의 화면처럼, Tools>Board>Boards Manager에 들어가서, OpenCm을 입력하고, Install을 해준다. 

- 시간이 조금 걸린다. 약 10분 정도. 

 

 

 

2. 예제

그럼, 설치가 끝났으면, OpenCM9.04 보드에 아두이노 IDE를 이용하여 예제를 다운로드해보고, ROS로 통신시켜본다. 

아두이노 IDE를 이용하여 아래 예제코드를 OpenCM9.04 보드에 다운로드 한다. 

#include 
#include <std_msgs/String.h>

ros::NodeHandle  nh;

std_msgs::String str_msg;
ros::Publisher chatter("chatter", &str_msg);

char hello[13] = "hello world!";

void setup()
{
  nh.initNode();
  nh.advertise(chatter);
}

void loop()
{
  str_msg.data = hello;
  chatter.publish( &str_msg );
  nh.spinOnce();
  delay(1000);
}

- 아래와 같이 roscore를 실행시키고, 

- 아래와 같이 rosserial를 이용하여 포트를 open 한다. ttyACM은 아두이노를 연결했을때 연결되며, ls /dev/ttyACM* 를 입력하여 포트 번호를 확인할 수 있다. 

> rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=57600

 

- 정상적으로 연결된 것을 확인한 후, 새로운 터미널을 열어서 아래 명령어를 입력한다. 

> rostopic echo chatter

 

- 정상적으로 "hello world!"가 출력된다.