Robotics SDK는 TI Sitara 프로세서용 로봇 소프트웨어 개발 환경을 제공합니다. 또한 로봇 소프트웨어 개발에 활용할 수 있는 소프트웨어 빌딩 블록과 예제 데모도 제공합니다. 사용되는 ROS 버전은 Humble이며, ROBOTICS SDK는 Docker 컨테이너 환경에서 실행됩니다.
테스트 환경
- Ubuntu 22.04
- SK-AM62A-LP
- 09_01_00_07 Processor SDK
HOST PC 사전 작업
Docker 설치
1. 우분투 시스템 패키지 업데이트
sudo apt-get update
2. 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
3. Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 시스템 패키지 업데이트
sudo apt-get update
6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
7. Docker 설치 확인
sudo systemctl status docker
Taget Board 설정
cd /opt/edgeai-gst-apps/scripts
source ./install_robotics_sdk.sh
AM62A SDK 안에있는 스크립트 파일을 실행하게 되면 ROS 2 Docker 컨테이너 환경에는 ROS Humble과 필요한 라이브러리 및 도구가 설치됩니다.
ROS 2 Humble용 Docker 이미지를 빌드하고 실행하기 위한 스크립트를 생성하려면 아래 명령어를 실행
make scripts ROS_VER=2
상기 작업 진행 후 docker_build_ros2.sh, docker_run_ros2.sh 두 개의 스크립트 파일이 생성되었는 지 확인
Docker 이미지를 빌드하려면 아래 명령어 진행
./docker_build_ros2.sh
이 단계는 네트워크 속도에 따라 다소 시간이 걸립니다.
*필자는 30분 이상 소요
다음 Docker 컨테이너를 시작/실행하려면 아래 쉘 스크립트 파일을 실행합니다.
./docker_run_ros2.sh
docker_run_ros2.sh 스크립트에는 TI 프로세서의 모든 코어와 하드웨어 가속기를 활용하는 데 필요한 모든 설정이 포함되어 있으므로 스크립트를 사용하여 Docker 컨테이너를 시작하는 것이 중요합니다 .
Docker 컨테이너 내부에서 ROS 애플리케이션을 빌드하기 위해서는 아래 명령어를 실행해야 한다.
root@j7-docker:~/j7ros_home/ros_ws$ colcon build --base-paths /opt/robotics_sdk/ros2 --executor sequential --cmake-force-configure
root@j7-docker:~/j7ros_home/ros_ws$ source install/setup.bash
HOST PC 설정
Target Board에서 진행했던 비슷한 방식으로 스크립트를 사용하여 HOST Ubuntu PC에 설정할 수 있습니다.
user@pc:~$ wget -O init_setup.sh https://git.ti.com/cgit/processor-sdk-vision/jacinto_ros_perception/plain/init_setup.sh
user@pc:~$ source ./init_setup.sh REL.09.00.00
init_setup.sh 스크립트를 실행하면 작업 디렉터리로 ${HOME}/j7ros_home 으로 설정됩니다.
ROS 2 Humble용 Docker 이미지를 빌드하고 실행하기 위한 bash 스크립트를 생성하려면 아래 명령어를 실행한다.
user@pc:~/j7ros_home$ make scripts ROS_VER=2
Ubuntu PC가 Nvidia GPU 드라이버를 사용하는 경우 인수를 하나 더 추가한다.
user@pc:~/j7ros_home$ make scripts ROS_VER=2 GPUS=y
상기 작업 진행 후 docker_build_ros2.sh, docker_run_ros2.sh 두 개의 스크립트 파일이 생성되었는 지 확인
ROS 2 Docker 이미지를 빌드
user@pc:~/j7ros_home$ ./docker_build_ros2.sh
Docker 이미지를 빌드하는 데 시간이 소요된다.
이어서 ROS 2 Docker 컨테이너를 실행합니다.
user@pc:~/j7ros_home$ ./docker_run_ros2.sh
ROS 빌드 및 환경 설정을 진행합니다.
root@pc-docker:~/j7ros_home/ros_ws$ colcon build --base-paths src/robotics_sdk/ros2
root@pc-docker:~/j7ros_home/ros_ws$ source install/setup.bash
데모 애플리케이션 실행
/dev/video-{usb,rpi,imx390}-camX 및 /dev/v4l-{rpi,imx390}-subdevY 로 인식되는 카메라를 지정하기 위해서는 cam_id:=X 와 subdev_id:=Y 인수를 사용합니다.
다음에서 [Target] 및 [HOST PC]는 대상 Target Board 또는 HOST PC에서 실행되어야 하는 단계를 나타냅니다.
Semantic Segmentation CNN 애플리케이션 실행
USB 모노 카메라로 Semantic Segmentation 데모를 시작하려면 ROS 2 컨테이너 내에서 다음 시작 명령을 실행
root@j7-docker:~/j7ros_home/ros_ws$ ros2 launch ti_vision_cnn gscam_semseg_cnn_launch.py
또는 대상 호스트 Linux에서 직접 다음을 실행할 수 있습니다.
root@am6x-sk:~/j7ros_home$ ./docker_run_ros2.sh ros2 launch ti_vision_cnn gscam_semseg_cnn_launch.py
[HOST PC] 영상을 보기 위해 PC의 ROS 2 컨테이너에서 명령 실행
root@pc-docker:~/j7ros_home/ros_ws$ ros2 launch ti_viz_nodes rviz_semseg_cnn_launch.py
Object Detection CNN 애플리케이션 실행
[Target] USB 모노 카메라로 Object Detection 데모를 시작하려면 ROS 2 컨테이너 내에서 명령을 실행
root@am6x-sk:~/j7ros_home$ ./docker_run_ros2.sh ros2 launch ti_vision_cnn gscam_objdet_cnn_launch.py
또는 대상 호스트 Linux에서 직접 다음을 실행할 수 있습니다.
root@j7-docker:~/j7ros_home/ros_ws$ ros2 launch ti_vision_cnn gscam_objdet_cnn_launch.py
[HOST PC] 영상을 보기 위해 PC의 ROS 2 컨테이너에서 아래 명령 실행
root@pc-docker:~/j7ros_home/ros_ws$ ros2 launch ti_viz_nodes rviz_objdet_cnn_launch.py
'TI > AM62A' 카테고리의 다른 글
[AM62A] GPIO 제어 (0) | 2024.07.13 |
---|---|
[AM62A] Falcon Mode (0) | 2024.06.02 |
[09] AM62A - SDCard 이미지 만들기 (0) | 2024.03.01 |
[09] AM62A-SK Processor SDK Build (0) | 2024.03.01 |
[08] AM62A - emmc (0) | 2024.02.22 |