Raspberry Pi 5 に ROS2 をセットアップした時のメモをここに残します。
セットアップ
update & upgrade
sudo apt update sudo apt upgrade
Docker インストール
sudo apt install docker.io docker-compose
管理者権限設定
sudo groupadd docker sudo usermod -aG docker <ユーザー名>
Dockerコンテナ構築
docker pull
docker pull ros:jazzy-ros-base
docker run
docker run --net host --ipc host --name sample_01 -it ros:jazzy-ros-base
デモ用プログラムをインストール
$ cd ~ ~$ apt update ~$ source /opt/ros/dashing/setup.bash ~$ sudo rosdep init ~$ rosdep update ~$ mkdir ros2_ws ~$ cd ros2_ws ~/ros2_ws$ mkdir src ~/ros2_ws$ cd src ~/ros2_ws/src$ git clone https://github.com/ros2/demos.git ~/ros2_ws/src$ cd demos ~/ros2_ws/src/demo$ git checkout jazzy ~/ros2_ws/src/demo$ cd ../.. ~/ros2_ws$ rosdep install --from-paths src --ignore-src -r -y ~/ros2_ws$ colcon build
コンテナ
起動
docker start sample_01
プロセス確認
test@raspberrypi:~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43d2ccb7a53e ros:jazzy-ros-base "/ros_entrypoint.sh …" 16 hours ago Up 2 seconds sample_01
起動時に接続
docker start -ai sample_01
コンテナ接続
docker exec
- -i (interactive): 対話的に操作するためのオプション
- -t (tty): ターミナルを割り当てるオプション
- bash: コンテナ内で Bash シェルを開く(コンテナによっては sh しか入っていない場合もある)
docker exec -it sample bash
docker attach
docker attach sample_01
ワークスペースの作成
mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build Starting >>> action_tutorials_interfaces Starting >>> dummy_map_server Starting >>> dummy_sensors Starting >>> lifecycle Finished <<< dummy_sensors [21.3s] Starting >>> pendulum_msgs Finished <<< dummy_map_server [22.2s] Starting >>> composition Finished <<< action_tutorials_interfaces [25.1s] Starting >>> demo_nodes_cpp Finished <<< lifecycle [47.5s] Starting >>> demo_nodes_cpp_native Finished <<< pendulum_msgs [32.2s] Starting >>> demo_nodes_py Finished <<< demo_nodes_py [6.09s] Starting >>> image_tools Finished <<< demo_nodes_cpp_native [30.5s] Starting >>> intra_process_demo Finished <<< composition [1min 16s] Starting >>> logging_demo Finished <<< image_tools [1min 8s] Starting >>> quality_of_service_demo_cpp Finished <<< logging_demo [46.2s] Starting >>> quality_of_service_demo_py Finished <<< quality_of_service_demo_py [2.49s] Starting >>> topic_monitor Finished <<< topic_monitor [2.65s] Starting >>> topic_statistics_demo [Processing: demo_nodes_cpp, intra_process_demo, quality_of_service_demo_cpp, topic_statistics_demo] [Processing: demo_nodes_cpp, intra_process_demo, quality_of_service_demo_cpp, topic_statistics_demo] Finished <<< topic_statistics_demo [1min 3s] Starting >>> action_tutorials_cpp Finished <<< intra_process_demo [2min 17s] Starting >>> action_tutorials_py Finished <<< action_tutorials_py [2.52s] Starting >>> dummy_robot_bringup Finished <<< dummy_robot_bringup [1.58s] Starting >>> lifecycle_py Finished <<< lifecycle_py [2.47s] Starting >>> pendulum_control [Processing: action_tutorials_cpp, demo_nodes_cpp, pendulum_control, quality_of_service_demo_cpp] Finished <<< action_tutorials_cpp [41.2s] Finished <<< pendulum_control [54.0s] [Processing: demo_nodes_cpp, quality_of_service_demo_cpp] Finished <<< quality_of_service_demo_cpp [3min 9s] [Processing: demo_nodes_cpp] Finished <<< demo_nodes_cpp [5min 38s] Summary: 21 packages finished [6min 3s]
lidar用のパッケージを取得
root@raspberrypi:~/ros2_ws/src# git clone https://github.com/Slamtec/sllidar_ros2.git Cloning into 'sllidar_ros2'... remote: Enumerating objects: 292, done. remote: Counting objects: 100% (125/125), done. remote: Compressing objects: 100% (37/37), done. remote: Total 292 (delta 109), reused 88 (delta 88), pack-reused 167 (from 1) Receiving objects: 100% (292/292), 245.34 KiB | 3.61 MiB/s, done. Resolving deltas: 100% (198/198), done. root@raspberrypi:~/ros2_ws/src# cd ~/ros2_ws/ root@raspberrypi:~/ros2_ws# colcon build source install/setup.bash