ROS의 rosserial을 사용하여 M5stack과 USB 통신하여 L 치카

목적



ROS의 rosserial을 사용하여 M5stack에서 L 치카를한다.
ROS에는 arduino와 통신하는 패키지 ros-indigo-rosserial-arduino가 준비되어 있지만, 이것은 M5stack에서도 사용할 수 있으며 ROS 노드화할 수 있다.

환경



Ubuntu-14.04.1(x64)
ROS:Indigo

설치



rosserial과 rosserial-arduino를 apt-get으로 설치하십시오.

ROS Indigo의 경우
 sudo apt-get install ros-indigo-rosserial-arduino
 sudo apt-get install ros-indigo-rosserial

ROS kinetic의 경우
 sudo apt-get install ros-kinetic-rosserial-arduino
 sudo apt-get install ros-kinetic-rosserial

ArduinoIDE+espressif+M5stacklib를 설치합니다.



우분투로 시작하는 M5stack
참고로 ArduinoIDE와 espressif 및 M5stack 라이브러리를 설치합니다.

ArduinoIDE에 ros_lib를 넣습니다.



ArduinoIDE 스케치 → 라이브러리를 포함 → ros_lib에서 설치합니다.



장치 파일 설정



PC와 M5Stack을 USB로 접속하면,/dev/ttyUSB*의 바이스 파일이 생성된다.
장치 파일에 쓰기 권한을 부여합니다.

ttyACM0의 경우
sudo chmod 666 /dev/ttyUSB0

L치카 테스트



ArduinoIDE에 다음 소스를 붙여넣고,
「스케치」→「검증·컴파일」→「마이컴 보드에 기입한다」

test.ino
#include <M5Stack.h>
#include <ros.h>
#include <std_msgs/Empty.h>

TFT_eSprite img = TFT_eSprite(&M5.Lcd);
ros::NodeHandle nh;

void messageCb( const std_msgs::Empty& toggle_msg) {
  img.fillSprite(TFT_GREEN);
  img.pushSprite(0, 0);
  delay(500);
}
ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );

void setup() {
  M5.begin();
  M5.Lcd.fillScreen(TFT_BLUE);
  img.setColorDepth(8);
  img.createSprite(320, 240);
  img.fillSprite(TFT_BLACK);
  nh.initNode();
  nh.subscribe(sub);
}

void loop() {
  img.fillSprite(TFT_BLACK);
  img.pushSprite(0, 0);
  nh.spinOnce();
  M5.update();
}


ROS에서 Topic을 Subscribe하여 L 치카 테스트



ArduinoIDE에서 다음 소스를 붙여넣고,
「스케치」→「검증·컴파일」→「마이컴 보드에 기입한다」

test_L_tika.ino

#include <ros.h>
#include <std_msgs/Empty.h>

ros::NodeHandle nh;

void messageCb( const std_msgs::Empty& toggle_msg) {
  digitalWrite(11, HIGH);
  delay(100);
  digitalWrite(11, LOW);
  delay(100);
}

ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );

void setup(){
  pinMode(11, OUTPUT);
  digitalWrite(11, HIGH); 
  nh.initNode();
  nh.subscribe(sub);
}

void loop(){
  nh.spinOnce();
  delay(1);
}


아래 명령으로 ROS를 시작하고 rostopic으로 "toggle_led"를 게시합니다.
「toggle_led」를 받으면, M5Stack는 디스플레이로 L치카를 실시한다.
roscore
rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0 _baud:=115200
rostopic pub toggle_led std_msgs/Empty --once



참고



rosserial_arduino Tutorials
h tp // 우우키. 로 s. 오 rg / 로세리 아 l_ 아 r 즈이 / 츠 토리아 ls
ROS serial for ESP8266 over WiFi:
htps : // 기주 b. 코 m / 아 g 누네 · 에스 로스

좋은 웹페이지 즐겨찾기