roslaunch.bb error with remote, a missing RDEPEND ?

64 views
Skip to first unread message

lars.at.visi...@gmail.com

unread,
May 25, 2016, 11:32:45 AM5/25/16
to Mailing List of ROS Layer for OpenEmbedded Linux
Hi 

My last post on this matter, didn't spawn many answers so I try again. Please help if you can.

At the moment i have 2 computers named Computer -03 and computer-04, more will come in the future

I can ping and ssh between them with no problems, so my SSH keys and DNS is ok

this launch file

<launch>
    <machine name="row-01" address="Computer-01" > </machine>
    <machine name="row-02" address="Computer-02" > </machine>
    <machine name="row-03" address="Computer-03-MASTER" env-loader="/opt/fpe/bin/ros_env.sh"  > </machine>
    <machine name="row-04" address="Computer-04" env-loader="/opt/fpe/bin/ros_env.sh"> </machine>
    <machine name="row-05" address="Computer-05" > </machine>
    <node name="periphealsdetector" pkg="periphealsdetector"  type="periphealsdetector" machine="row-03" respawn="true" > </node>
   <node name="lyt" pkg="fpe_beginner_tutorials" type="lytter" machine="row-04" >  </node>
   <node name="tal" pkg="fpe_beginner_tutorials" type="taler" machine="row-03" > </node>
    
</launch>


/opt/fpe/bin/ros_env.sh 

#!/bin/bash
ROS_ROOT=/opt/ros/indigo
## this is useed to kill it again
ROS_HOME=/home/root
ROS_PORT=46500   #
ROS_IP=$(/sbin/ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
PATH=$PATH:/opt/ros/indigo/bin:/opt/fpe/bin
LD_LIBRARY_PATH=/opt/ros/indigo/lib
PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages
CMAKE_PREFIX_PATH=/opt/ros/indigo
 
export ROS_ROOT ROS_IP PATH LD_LIBRARY_PATH PYTHONPATH  CMAKE_PREFIX_PATH ROS_HOME ROS_PORT

export ROS_MASTER_URI=http://192.168.1.197:46500
exec "$@"



On Computer-03 (which is 192.168,.1.197) I execute
roslaunch -p ${ROS_PORT} ./master.launch


I get:
... logging to /home/root/log/1f01669c-227d-11e6-8bd4-08002775a53d/roslaunch-Computer-03-1010.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://192.168.1.197:52803/
remote[Computer-04-0] starting roslaunch
remote[Computer-04-0]: creating ssh connection to Computer-04:22
remote[Computer-04-0]: failed to launch on row-04:
pycrypto is not installed

[Computer-04-0] killing on exit
unable to start remote roslaunch child: Computer-04-0
The traceback for the exception was written to the log file




I see that  indigo/lib/python2.7/site-packages/roslaunch/remoteprocess.py expect to find pycrypto installed.
then why doesn't the roslaunch.bb make sure pycrypto is present as a run dependency ?
where do I patch ??

-Lars





lars.at.visi...@gmail.com

unread,
May 26, 2016, 9:58:16 AM5/26/16
to Mailing List of ROS Layer for OpenEmbedded Linux
Hi again

It's driving me crazy !! 

Is there anybody out there that can actually launch remotely with roslaunch  ?

I just realized that it's not only pycrypto, but also paramiko that  is missing both imported by remoteprocess.py
apparently they where once indpendant ros modules. but now they are rosdep stuff

I cant find them anywhere
None of the precanned recipes mention them
I tried all kind of things, not even the bare-bone core-image-ros-comm/world has pycrypto.

-Lars

Lukas Bulwahn

unread,
Jun 8, 2016, 4:17:31 AM6/8/16
to Mailing List of ROS Layer for OpenEmbedded Linux
Dear Lars,


My last post on this matter, didn't spawn many answers so I try again. Please help if you can.

Listeners on this mailing list have probably not answered you because no one has yet had the use case to remotely launch other nodes from the image created with bitbake. The number of meta-ros is still a low percentage of ROS users.
 
I get:
... logging to /home/root/log/1f01669c-227d-11e6-8bd4-08002775a53d/roslaunch-Computer-03-1010.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://192.168.1.197:52803/
remote[Computer-04-0] starting roslaunch
remote[Computer-04-0]: creating ssh connection to Computer-04:22
remote[Computer-04-0]: failed to launch on row-04:
pycrypto is not installed

[Computer-04-0] killing on exit
unable to start remote roslaunch child: Computer-04-0
The traceback for the exception was written to the log file
 
 

I see that  indigo/lib/python2.7/site-packages/roslaunch/remoteprocess.py expect to find pycrypto installed.
then why doesn't the roslaunch.bb make sure pycrypto is present as a run dependency ?
where do I patch ??


As you have noticed, roslaunch is missing some runtime dependency for your use case, namely pycrypto and paramiko and possibly even some more (that have not yet been unrevealed).

To patch this, you must add the missing dependencies to the RDEPENDS_${PN} in the roslaunch recipe (https://github.com/bmwcarit/meta-ros/blob/master/recipes-ros/ros-comm/roslaunch_1.11.16.bb, line 18 to 33). Existing recipes in the whole openembedded layers can be easily found on layers.openembedded.org; fortunately, python-pycrypto and python-paramiko are already available in the meta-openstack layer.

If you have a look on the git history of the ros-comm directory, e.g., with https://github.com/bmwcarit/meta-ros/commits/master/recipes-ros/ros-comm, you will notice that over the years the runtime dependency has been improved, e.g., https://github.com/bmwcarit/meta-ros/commit/e0dd77bbd8fbd1cf53aa7393af05b197d6ee65ab, and this remains a continuous effort.

With python requiring modules at run-time, we only notice missing dependencies once a use case requires them, and not a compilation time. 

If you have created a working patch for the roslaunch recipe, you are welcome to submit a pull request on github and we will review and test your suggested improvement. Open-source Development relies on active users to become part of development and not simply claim software to be incomplete; and we always welcome new developers and submissions to this open-source work.

Best regards,

Lukas

lars.at.visi...@gmail.com

unread,
Jun 9, 2016, 5:38:15 AM6/9/16
to Mailing List of ROS Layer for OpenEmbedded Linux


Hi Lukas


Oh, thank you - you saved my day


I really appreciate that you take time to, help - I'm sure you have a 1000 other hi-priority issues to tend to.


This project is a lot of firsts for me:

I have to acquaint my self with ROS, catkin and all that stuff.

on top of that -  get to know bitbake, poky, openembedded....

it's also my first real venture into the realms of opensource



It complicated, and the it gets real frustrating ,that despite my many years in software engineering, I can't seem to get a firm handle on it.  And that all my gooling didn't reveal where or how  to find pycrypto or paramiko.


The key is of course layers.openembedded.org


Now I got it !


And when I have a system that works , I will of course load relevant patches back to the community.


Thanks again, for patience with us beginners

Lars

Reply all
Reply to author
Forward
0 new messages