Jetson과 ESP32사이에서 topic을 주고 받으면서 Robot을 제어하기 위해서는 rosserial을 설치해야합니다. 아래 글을 참고했습니다.

How to Publish Wheel Encoder Tick Data Using ROS and Arduino

아두이노 IDE는 PC에 설치해서 사용할 것이므로 Jetson에 설치하지 않습니다.

1. ROS library for Arduino IDE on PC

우분투 PC에서 ros_lib을 만드는 과정은 아래와 같습니다. Windows에서는 지원하지 않습니다.

sudo apt install ros-melodic-rosserial-arduino
sudo apt install ros-melodic-rosserial
cd <sketchbook>/libraries
rm -rf ros_lib
rosrun rosserial_arduino make_libraries.py .

If you are building Arduino on Windows, copy the ros_lib directory from Linux to the Windows sytem's sketchbook/libraries folder (typically found in My Documents).

Windows에서는 아래 zip파일을 library가 설치된 위치에 압축 해제를 해주십시오. 그리고 아래 그림처럼 ros_lib example이 보이는지 확인해주십시오. 몇몇 example이 보이지 않아도 상관 없습니다.

2023.2.25) ESP32 ROS 오류 해결

ros_lib.zip

http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino IDE Setup

http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino IDE Setup

제타의 AIoT 나들이 : 네이버 블로그

2. PID library for Arduino IDE on PC

모터 속도제어를 위해 PID library를 사용하므로 library manager에서 PID를 검색해서 꼭 Brett Beauregard가 만든 라이브러리를 설치해주세요.

Untitled

제타의 AIoT 나들이 : 네이버 블로그

3. I2Cdev, MPU6050 library for Arduino IDE on PC

먼저 아래 site에서 zip파일을 다운로드하고, i2cdevlib와 MPU6050 폴더를 아두이노 라이브러리 폴더로 복사해 library를 두 개 추가합니다.

https://github.com/jrowberg/i2cdevlib

i2cdevlib/Arduino$ ls
AD7746   AK8963      BMA150  HMC5843   **I2Cdev**   L3G4200D  LSM303DLHC  MPU9150  SSD1308
ADS1115  AK8975      BMP085  HMC5883L  IAQ2000  L3GD20H   MPR121      MPU9250  _Stub
ADXL345  AT30TSE75x  DS1307  HTU21D    ITG3200  LM73      **MPU6050**     MS5803   TCA6424A

아두이노 IDE에 I2Cdev, MPU6050을 library를 추가

아두이노 IDE에 I2Cdev, MPU6050을 library를 추가

위 링크가 깨졌거나 파일을 구할 수 없을 경우 아래 파일을 사용하세요.

I2CdevMPU6050.zip

4. ROS navitation package install on Jetson

아래 과정이 Jetson에 rosserial, navigation, slam을 설치하는 과정입니다.

$ sudo apt update
$ sudo apt install ros-melodic-rosserial ros-melodic-tf \\
ros-melodic-joy* ros-melodic-teleop-twist-joy ros-melodic-teleop-twist-keyboard \\
ros-melodic-rosserial-arduino ros-melodic-rosserial-python \\
ros-melodic-rosserial-server ros-melodic-rosserial-client ros-melodic-rosserial-msgs  \\
ros-melodic-urdf ros-melodic-xacro \\
ros-melodic-rqt-image-view \\
ros-melodic-map-server ros-melodic-move-base \\
ros-melodic-navigation ros-melodic-amcl ros-melodic-robot-pose-ekf \\
ros-melodic-slam-gmapping ros-melodic-gmapping ros-melodic-cartographer-ros \\
python-smbus

topic을 확인하기 위해서는 USB2Serial을 사용할 권한을 추가해주어야합니다. dialout에 본인을 추가하여 dialout을 사용하도록 허가합니다. 아래 명령에서 jetson은 user id 입니다.

sudo usermod -aG dialout jetson