jsk-ros-pkg / jsk_robot

jsk-ros-pkg/jsk_robot
https://github.com/jsk-ros-pkg/jsk_robot
73 stars 97 forks source link

[jsk_naoqi_robot/cross] `./build_user.sh build -c` が失敗したときの対応について #1775

Closed kochigami closed 1 year ago

kochigami commented 1 year ago

@k-okada

Ubuntu 18.04.06, ROS Melodicのパソコンで、 https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_naoqi_robot/cross と、適宜 https://github.com/jsk-ros-pkg/jsk_robot/pull/1767/files を見ながら Pepperのクロスコンパイル環境の構築を行いました。

make system, ./install.sh -p <password> -d Systemは特にエラーも無く完了したのですが、 ./build_user.sh build -c (make user の言い換えで、コンパイルエラーが出ても途中で止まらないようにしたもの) したときに、以下のエラーが出てしまいました。

抜粋:

[build] Failed packages:

 [    Failed] compressed_image_transport         
 [    Failed] roseus_remote                      
 [    Failed] speak_and_wait_recovery            
 [    Failed] update_move_base_parameter_recovery

全文:i386_build_user.log

READMEには、known issueとして、

### `./build_user.sh build -c` fails
`./build_user.sh build -c` fails as follows. 
This is expected behavior and we recommend to combile all packages in the first time. 
`make user` runs `catkin build jsk_pepper_startup peppereus` 
and pacakages such as `pepper_meshes` and `rosbash` is not compiled with this command.

[    Failed] roseus_remote
[    Failed] speak_and_wait_recovery

とあるのですが、 これはエラーが出てしまってもmake installして大丈夫なのでしょうか・・・? (今までこのようなエラーが出たことが無く、この文章を気に留めていませんでした。) ご迷惑をお掛けし申し訳ないのですが、アドバイスを頂けるとありがたいです。

kochigami commented 1 year ago

jsk_pepper_startupcompressed_image_transport を使っており、そこでエラーが出ているので駄目そうでした。

何も考えず make install してみたのですが、 start.shなどのコピーが行えておらず、やはり駄目そうでした。

原因が自分のパソコンなのかもしれないため、他のパソコンでも試そうと思います。

kochigami commented 1 year ago

バージョンが異なるカーネルの18.04のパソコン2台で同じエラーが出たため、 パソコン固有の問題というより単純にビルドが通っていないと分かりました。

compressed_image_transport パッケージに変更があり、 https://github.com/ros-perception/image_transport_plugins/pull/60/files#diff-44b9930ea627e55f23a1aab698d94f4f56ff489dd2fb8bfa0e5a7d47d0e380afR21 で今年の1月にlibturbojpegのbuild dependが追加されたため、対応が必要

[#[36mcompressed_image_transport#[0m:#[34mcmake#[0m] #[0m#[36m--#[0m Checking for module 'libturbojpeg'

#[0m#[0m

[#[36mcompressed_image_transport#[0m:#[34mcmake#[0m] #[0m#[36m--#[0m   No package 'libturbojpeg' found

そこで、https://github.com/jsk-ros-pkg/jsk_robot/pull/1583/commits/a8cdf39c130cf440857bd1cd91ffcc246633738b を参考にして、 https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_naoqi_robot/cross/repos/ros1_dependencies.reposhttps://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_naoqi_robot/cross/ros1_dependencies_build_scriptshttps://github.com/jsk-ros-pkg/jsk_robot/compare/master...kochigami:jsk_robot:add-libturbojpeg のように追加 ./prepare_requirements_ros1.sh, ./build_ros1_dependencies.shを実行した所 i386_ws_ros1_dependencies_sources/src以下にlibjpeg-turboディレクトリが作られたが、これで合っているかは分からない・・・

https://github.com/jsk-ros-pkg/jsk_robot/issues/1769 が解決していないので make userには進めていない

kochigami commented 1 year ago

その他のパッケージについては、i386_build_ros1.logを確認 ちょっとまだよく分からないが、

roseus_remote: jsk_network_toolsについてCould not find a package configuration file

[#[36mroseus_remote#[0m:#[34mcmake#[0m] #[0m  Could not find a package configuration file provided by "jsk_network_tools"

speak_and_wait_recoveryupdate_move_base_parameter_recovery: costmap_2dについてCould not find a package configuration file

[#[36mspeak_and_wait_recovery#[0m:#[34mcmake#[0m] #[0m  Add the installation prefix of "costmap_2d" to CMAKE_PREFIX_PATH or set

#[0m#[0m

[#[36mspeak_and_wait_recovery#[0m:#[34mcmake#[0m] #[0m  "costmap_2d_DIR" to a directory containing one of the above files.  If

#[0m#[0m
[#[36mspeak_and_wait_recovery#[0m:#[34mcmake#[0m] #[0m  "costmap_2d" provides a separate development package or SDK, be sure it has

#[0m#[0m
[#[36mspeak_and_wait_recovery#[0m:#[34mcmake#[0m] #[0m  been installed.
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m  Could not find a package configuration file provided by "costmap_2d" with

#[0m#[0m
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m  any of the following names:

#[0m#[0m
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m

#[0m#[0m
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m    costmap_2dConfig.cmake

#[0m#[0m
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m    costmap_2d-config.cmake

#[0m#[0m
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m

#[0m#[0m
[#[36mupdate_move_base_parameter_recovery#[0m:#[34mcmake#[0m] #[0m  Add the installation prefix of "costmap_2d" to CMAKE_PREFIX_PATH or set
kochigami commented 1 year ago

完璧な解決方法ではないが、とりあえずコンパイルを通すためのメモ

1.roseus_remote, speak_and_wait_recovery, update_move_base_parameter_recoveryのビルドエラー解決法

make userjsk_robot以下のパッケージを取ってくるので、 make userする前に jsk_robot/jsk_robot_common/roseus_remote jsk_robot/jsk_robot_common/speak_and_wait_recovery jsk_robot/jsk_robot_common/update_move_base_parameter_recoveryCATKIN_IGNOREを追加

2.compressed_image_transportのビルドエラー解決法

1.9.6のものを取ってくるのでエラーになる そこで、適当な場所(~/Downloadsなど)で

git clone https://github.com/ros-perception/image_transport_plugins

git checkout -b 1.9.5 812093c

して、 image_transport_plugins/compressed_image_transport の部分だけ .../jsk_naoqi_robot/cross/i386_User/src/以下の既存のディレクトリ(image_transport_plugins/compressed_image_transport )に置き換え

本当は、どのタイミングでimage_transport_plugins/compressed_image_transporti386_User/srcに入るのか分かれば、もっと直せそう