Jetson과 ESP32사이에서 topic을 주고 받으면서 Robot을 제어하기 위해서는 rosserial을 설치해야합니다. 아래 글을 참고했습니다.
How to Publish Wheel Encoder Tick Data Using ROS and Arduino
아두이노 IDE는 PC에 설치해서 사용할 것이므로 Jetson에 설치하지 않습니다.
우분투 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 오류 해결
http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino IDE Setup
모터 속도제어를 위해 PID library를 사용하므로 library manager에서 PID를 검색해서 꼭 Brett Beauregard가 만든 라이브러리를 설치해주세요.
먼저 아래 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를 추가
위 링크가 깨졌거나 파일을 구할 수 없을 경우 아래 파일을 사용하세요.
아래 과정이 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