Closed nburek closed 5 years ago
As shown above, there are lots of configuration changes that need to be made to get the app closer to working. However, there is one fundamental problem that is preventing the application from launching. The main issue appears to be a versioning conflict between what the raspicam_node (that is already installed on the TutleBot) expects, and what is bundled with the application by colcon. I've bundled the application and deployed using RoboMaker to a device. To isolate the issue, my launch file contains only the raspicam_node, and nothing else. Here's the error reported during the launch:
process[rosout-1]: started with pid [3144]
started core service [/rosout]
process[raspicam_node-2]: started with pid [3157]
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Test.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_highgui3.so.3.3)
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Gui.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_highgui3.so.3.3)
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_highgui3.so.3.3)
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_highgui3.so.3.3)
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Gui.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_cvv3.so.3.3)
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_cvv3.so.3.3)
/opt/ros/kinetic/lib/raspicam_node/raspicam_node: /tmp/roboMakerDeploymentPackage/61e1603d5e07125bcb2d4edd50d70cbab0ab5daad21f8082524e976b1cfc88ed//usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5: version `Qt_5' not found (required by /opt/ros/kinetic/lib/libopencv_cvv3.so.3.3)
[raspicam_node-2] process has died [pid 3157, exit code 1, cmd /opt/ros/kinetic/lib/raspicam_node/raspicam_node __name:=raspicam_node __log:=/home/pi/.ros/log/d9f1fc52-6076-11e9-a9b5-b827eb041467/raspicam_node-2.log].
log file: /home/pi/.ros/log/d9f1fc52-6076-11e9-a9b5-b827eb041467/raspicam_node-2*.log
^C[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
This only happens after I source the bundled application into the environment. If I do not source it, and launch the same file, the raspicam_node starts successfully.
Hi @MacInnis, thanks for your patience. I've been able to have this sample application working on a TurtleBot 3 Burger running Ubuntu Xenial and ROS Kinetic. Thanks for bringing to our attention those gaps in our the documentation, I'll send a PR to update the README, and also to correct some issues in deploy_person_detection.launch
(more on this below).
In order to make it work, first I have used Ubuntu Xenial instead of Raspbian. Note Ubuntu 16.04 is listed as a prerequisite in the RoboMaker documentation, and has "required support" in ROS Kinetic. On the other hand Raspbian doesn't appear as supported there, and Debian Jessie appears as "recommended support", which implies some of our package dependencies might not have been tested for Debian Jessie. Also, note that cross compilation in the RoboMaker IDE uses Ubuntu Xenial in the Docker container.
Admin:~/environment/PersonDetection/robot_ws $ head /opt/robomaker/cross-compilation-dockerfile/Dockerfile
FROM arm32v7/ros:kinetic-ros-base-xenial
Therefore starting from Ubuntu Xenial usually makes things easier. However, we should improve our documentation about using the bundles directly. Even though there are usage instructions in the colcon bundle documentation, we could add explicit instructions along these lines:
tar xvf robot_ws_armhf_bundle.tar
tar xvzf metadata.tar.gz
# in overlays.json we see dependencies.tar.gz and workspace.tar.gz, in that order
cat overlays.json
mkdir dependencies
tar xvzf dependencies.tar.gz -C dependencies
mkdir workspace
tar xvzf workspace.tar.gz -C workspace
source /opt/ros/kinetic/setup.bash
export LAUNCH_ID=YOUR_LAUNCH_ID
# source workspaces in the same order as in overlays.json
BUNDLE_CURRENT_PREFIX=$(pwd)/dependencies source $(pwd)/dependencies/setup.sh
BUNDLE_CURRENT_PREFIX=$(pwd)/workspace source $(pwd)/workspace/setup.sh
In some of the instructions above I see some packages had to be installed, e.g. sudo apt-get install ros-kinetic-kinesis-video-msgs
, which suggest an issue configuring the workspace overlay, as workspace/opt/built_workspace/kinesis_video_msgs/
is available in the workspace. With that I was able to run roslaunch person_detection_robot deploy_person_detection.launch
successfully, but I wasn't able to get image in Kinesis Video Streams. I detected some misconfiguration in that launch file, that is fixed making the following changes:
<node type="raspicam_node" pkg="raspicam_node" name="raspicam_node" output="screen">
<param name="width" value="410"/>
<param name="height" value="308"/>
...
<rosparam param="/h264_video_encoder/subscription_topic" subst_value="true">/raspicam_node/image</rosparam>
<rosparam param="/h264_video_encoder/image_transport" subst_value="true">compressed</rosparam>
</launch>
I'll send a PR with this fix, as well as changes to the README with the commands to activate the overlay workspace for the bundle. It would be nice if you could try these instructions on a turtlebot running Ubuntu Xenial, to confirm the fix.
Also, can you please indicate which Raspbian version are you using? I'll try to setup the sample application on using Raspbian Jessie, but I'd like to confirm you are also using that version. Is there anything preventing you to use Ubuntu Xenial, for example the Ubuntu Mate variant, instead of Raspbian?
Finally, I was able to build the sample app in RoboMaker Cloud 9 without problems, using a fresh development environment, so I wasn't able to reproduce that issue. But please feel free to let us know in this thread if you still have issues building, it would help us if you include the specific build commands usef for that failed build
Thanks again for your patience, and for trying our sample application
I tested the latest version of Person Detection with the following setup:
Using master of all dependencies instead of the v1.0.0 tag (in https://github.com/aws-robotics/aws-robomaker-sample-application-persondetection/blob/master/robot_ws/.rosinstall)
and it worked correctly. The video streamed to Kinesis and the robot reported 'I see tim' in the logs.
I'm going to create a new PR to update the .rosinstall
file to use the master
branch of all dependencies now. However the instructions are correct and working after the updates in #25.
Users that are trying to deploy and run the sample applications on physical turtlebots are having difficulty getting them actually running. The PersonDetection app seems to be one of the worst. I have included the troubleshooting steps provided to us by one user who managed to get the person detection application running on a turtlebot. We should use this input to develop new documentation on how to get this running.
Troubleshooting RoboMaker sample app: Navigation and Person Recognition
Environment
build colcon build --build-base armhf_build --install-base armhf_install
failed with the following messages:Therefore, I had to give up and use the bundle file created two weeks ago.
/home/pi/person-detection/
.Attempt 1: Failed
According to the documentation at https://github.com/aws-robotics/aws-robomaker-sample-application-persondetection, run the following commands:
This consistently fails to bring up the raspicam_node, and displays the following error messages:
Attempt 2: Failed
a. Open file
./config/h264_encoder_config.yaml
and update line 6 tosubscription_topic: "/raspicam_node/image"
. b. Open file./launch/deploy_person_detection.launch
and comment out the entire noderaspicam_node
.Go to the raspicam_node package’s launch folder:
a. Create a new file
camerav3.launch
, with the following content:roslaunch raspicam_node camerav3.launch
. This should bring up the camera correctly. To confirm, try rqt orrostopic echo /raspicam_node/image
.roslaunch person_detection_robot deploy_person_detection.launch
. Most of the nodes should start correctly (except soundplay_node).rostopic echo /video/encoded
and you will see an error message saying that kinesis_video_msgs isn't available or built properly.Ctrl+C
to terminate the process.Attempt 3: Failed
sudo apt-get install ros-kinetic-kinesis-video-msgs
to install the missing library.roslaunch person_detection_robot deploy_person_detection.launch
, followed byrostopic echo /video/encoded
to check video encoding. This time you will see messages being posted to this topic.Attempt 4: Succeeded (sort of)
a. Open file
./kvs_config.yaml
and update line 11 totopic_type: 1
.roslaunch person_detection_robot deploy_person_detection.launch
.This means that the Kinesis Rekognition data stream is the one having trouble, but that’s the problem for another day!