ROS2」タグアーカイブ

AIロボット入門のdocker内VNCでなく手元のVSCodeで操作

ROS2とPythonで作って学ぶAIロボット入門を始めた。

dokcer環境が用意されていて、dokcer内のubuntu上VNCで色々操作をする流れだけどコピペ等が面倒。手元のWindowsからVSCodeでコマンドを打ちたくなった。(なお、書籍ではLinuxPCからlocalhostのdockerにつないで色々学ぶ形だが、LinuxPCでなく同じネットワーク内のWindowsPCからLinuxにつないでいる)

WindowsPCのVSCodeからdockerコンテナにアタッチしてそっちのターミナルで操作することにした。

2章はじめぐらいに以下コマンドを打てというものがあったので打ったところエラー(内容は長いので下に全文コピペ)

ros2 launch turtlebot3_gazebo empty_world.launch.py

ubuntu上VNCから直接コマンドを打つと動く。VNCのdisplay設定がVSCodeでされていない模様。

VSCodeからつなげたdockeのターミナルで以下を実行。

root@fb5b03f29614:~/airobot_ws/install/turtlebot3_gazebo/share/turtlebot3_gazebo/models# export DISPLAY=:1.0

これで動いた模様。DISPLAY=:1.0の1.0とかは配布されているdockerなのできっと教材内では同じ。設定依存のはずではあるので動かなければVNC上のターミナルで以下を打って確かめるとよいかも。

ubuntu@fb5b03f29614:~$ echo $DISPLAY
:1.0

毎回exportするのも面倒なのでbashrcに書いとく。(まだ書籍を始めたばかりなので設定いじったことで後で何か起こるかもしれないけどそんなに影響ないと思う)

echo 'export DISPLAY=:1.0' >> ~/.bashrc

エラーの時のログべたばり

参考

root@fb5b03f29614:~/airobot_ws/install/turtlebot3_gazebo/share/turtlebot3_gazebo/models# ros2 launch turtlebot3_gazebo empty_world.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2025-05-23-09-11-53-206520-fb5b03f29614-734030
[INFO] [launch]: Default logging verbosity is set to INFO
world_file_namee : empty_worlds/waffle_pi.model
urdf_file_name : turtlebot3_waffle_pi.urdf
[INFO] [gzserver-1]: process started with pid [734136]
[INFO] [gzclient -2]: process started with pid [734139]
[INFO] [ros2-3]: process started with pid [734142]
[INFO] [robot_state_publisher-4]: process started with pid [734144]
[robot_state_publisher-4] [WARN] [1747991519.112923629] [robot_state_publisher]: No robot_description parameter, but command-line argument available. Assuming argument is name of URDF file. This backwards compatibility fallback will be removed in the future.
[robot_state_publisher-4] Parsing robot urdf xml string.
[robot_state_publisher-4] Link base_link had 7 children
[robot_state_publisher-4] Link camera_link had 1 children
[robot_state_publisher-4] Link camera_rgb_frame had 1 children
[robot_state_publisher-4] Link camera_rgb_optical_frame had 0 children
[robot_state_publisher-4] Link caster_back_left_link had 0 children
[robot_state_publisher-4] Link caster_back_right_link had 0 children
[robot_state_publisher-4] Link imu_link had 0 children
[robot_state_publisher-4] Link base_scan had 0 children
[robot_state_publisher-4] Link wheel_left_link had 0 children
[robot_state_publisher-4] Link wheel_right_link had 0 children
[robot_state_publisher-4] [INFO] [1747991519.129392605] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-4] [INFO] [1747991519.129444392] [robot_state_publisher]: got segment base_link
[robot_state_publisher-4] [INFO] [1747991519.129457726] [robot_state_publisher]: got segment base_scan
[robot_state_publisher-4] [INFO] [1747991519.129469065] [robot_state_publisher]: got segment camera_link
[robot_state_publisher-4] [INFO] [1747991519.129480764] [robot_state_publisher]: got segment camera_rgb_frame
[robot_state_publisher-4] [INFO] [1747991519.129492582] [robot_state_publisher]: got segment camera_rgb_optical_frame
[robot_state_publisher-4] [INFO] [1747991519.129504564] [robot_state_publisher]: got segment caster_back_left_link
[robot_state_publisher-4] [INFO] [1747991519.129516189] [robot_state_publisher]: got segment caster_back_right_link
[robot_state_publisher-4] [INFO] [1747991519.129527665] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-4] [INFO] [1747991519.129539155] [robot_state_publisher]: got segment wheel_left_link
[robot_state_publisher-4] [INFO] [1747991519.129551238] [robot_state_publisher]: got segment wheel_right_link
[gzclient -2] Aborted (core dumped)
[ERROR] [gzclient -2]: process has died [pid 734139, exit code 134, cmd 'gzclient '].
[ERROR] [gzserver-1]: process has died [pid 734136, exit code 255, cmd 'gzserver /home/ubuntu/airobot_ws/install/turtlebot3_gazebo/share/turtlebot3_gazebo/worlds/empty_worlds/waffle_pi.model -s libgazebo_ros_init.so -s libgazebo_ros_factory.so -s libgazebo_ros_force_system.so '].
[ros2-3] Wait for service timed out
[ERROR] [ros2-3]: process has died [pid 734142, exit code 1, cmd 'ros2 param set /gazebo use_sim_time True'].
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[INFO] [robot_state_publisher-4]: process has finished cleanly [pid 734144]