ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Raspberry Pi 5】docker で ROS2 の環境を構築

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