ROS pkg install

ROS 설치 #

  • ROS 설치는 ROS의 위키페이지에 잘 나타나 있지만, 혹시 이 글을 읽는 분들이 ROS의 설치 부터 시작해야 한다면 ROS Melodic 설치를 안내하고 있는 페이지에서 부터 시작하기를 권합니다.
  • ROS 버전은 Ubuntu 18.04에서 설치된 ROS Melodic 버전을 기준으로 하고, 빌더는 크게 관계는 없지만, catkin-tools를 사용하고 있다고 가정하겠습니다. catkin-tools를 포함하여 설치를 안내하고 있는 페이지는 방금 언급한 ROS Melodic 설치를 안내하고 있는 페이지 입니다.
  • 다음 과정은 catkin_ws 폴더가 사용자의 home폴더 안에 설치된 것을 기준으로 작성하였습니다.
  • ROS-melodic 버전에서 테스트되었습니다.

Dependency Install #

$ sudo apt install -y ros-melodic-tf \
    ros-melodic-joy \
    ros-melodic-teleop-twist-joy \
    ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc \
    ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan \
    ros-melodic-rosserial-arduino ros-melodic-rosserial-python \
    ros-melodic-rosserial-server \
    ros-melodic-rosserial-client \
    ros-melodic-rosserial-msgs ros-melodic-amcl \
    ros-melodic-map-server \
    ros-melodic-move-base \
    ros-melodic-urdf \
    ros-melodic-xacro \
    ros-melodic-compressed-image-transport \
    ros-melodic-rqt-image-view \
    ros-melodic-gmapping \
    ros-melodic-navigation \
    ros-melodic-interactive-markers \
    ros-melodic-ar-track-alvar \
    ros-melodic-ar-track-alvar-msgs \
    ros-melodic-usb-cam

위에 설치해야할 모듈들이 저희 omo_r1 pkg를 구동하는데 필요한 모듈들입니다. 이 중에는 이미 여러분들이 설치를 진행했을 수도 있는 모듈도 포함하고 있습니다.


Package Install #

소스코드 받기 #

omo_r1 ROS 패키지는 아래 github 페이지에서 다운로드할 수 있습니다.

https://github.com/omorobot/omo_r1

앞서 설치한 ROS catkin_ws 폴더에서 다음과 같이 입력하시면 됩니다.

$ cd ~/catkin_ws/src
$ git clone https://github.com/omorobot/omo_r1.git
$ git clone https://github.com/PinkWink/ydlidar.git
  • omo_r1 pkg는 ydlidar를 탑재하고 있는데 해당 패키지를 포함하여 omo_r1 패키지는 github에서 받을 수 있습니다.
  • 먼저 워크스페이스를 catkin_ws라고 한다면 catkin_ws안에 src 폴더로 이동해서 git clone 명령으로 omo_r1과 ydlidar를 받습니다.

소스 코드 빌드 #

$ cd ~/catkin_ws
$ catkin build
  • 소스 코드를 모두 받은 후에 워크스페이스(catkin_ws)로 이동해서 위 그림과 명령에 나타난 것 처럼 catkin build 명령으로 빌드를 수행합니다.

USB 시리얼 장치 설치 #

R1로봇은 PC와 USB-to-Serial(USB시리얼) 포트를 통해 연결됩니다. Ubuntu 리눅스에서 USB시리얼 장치는 /dev/ttyUSB0, /dev/ttyUSB1 따위로 등록되는데, 로봇 구동명령을 실행할때 이 경로를 매번 설정해주어야하는 번거로움이 있습니다. 다음과정을 통해 USB시리얼 장치를 등록하면 자동으로 /dev/ttyMotor 로 설정됩니다.

cd ~/catkin_ws/src/omo_r1/omo_r1_bringup/scripts/ 로 이동하여 create_udev_rules.sh 스크립트를 실행합니다.

$ cd ~/catkin_ws/src/omo_r1/omo_r1_bringup/scripts/
$ sudo ./create_udev_rules.sh 
[sudo] password for cto: 

This script copies OMO R1 udev rules to /etc/udev/rules.d/

Motor Driver (USB Serial from RS232) : /dev/ttyUSBx to /dev/ttyMotor :
98-omo-r1.rules created

OpenCR IMU (USB Serial) : /dev/ttyACMx to /dev/imu :
99-opencr-cdc.rules created

YD LiDAR (USB Serial) : /dev/ttyUSBx to /dev/ttyLiDAR :
ydlidar.rules created

Reload rules

이렇게 하면 /dev/ttyMotor 가 확인됩니다.

USB 시리얼 문제 해결 #

만약 이 스크립트를 실행했는데도 /dev/ttyMotor가 확인되지 않으면 ☹ lsusb 명령으로 USB시리얼 장치의 ID를 확인해주어야합니다.

$ lsusb
...
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
...

여기서 ID 이후에 나오는 1a86이 vendor ID이고 다음 7523이 product ID 입니다. 만약 이 값이 아닌 다른 값으로 검색되는 경우 해당 ID를 수정해주어야합니다. 터미널에 다음을 입력하여 98-omo-r1.rules 파일을 엽니다.

$ sudo nano /etc/udev/rules.d/98-omo-r1.rules

여기서 idVendor와 idProduct를 위에 lsusb 명령으로 확인한 값으로 변경합니다.

SUBSYSTEM==”tty”, ATTRS{idVendor}==”1a86“, ATTRS{idProduct}==”7523“….

Ctrl-X키를 눌러 빠져나온 다음 다음을 입력하여 udev를 다시 적용합니다.

$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

이제 다시한번 /dev/ttyMotor 가 보이는지 확인합니다.

만약 이렇게 해도 검색이 안된다면 USB장치의 문제가 있는것일 수 있으므로 다른 장비를 사용하거나 PC를 재부팅해보시기 바랍니다.