0
$\begingroup$

Rosanswers logo

I've tried to find the answer to my problem looking at previous similar questions but no luck so far.

I've been using ROS Fuerte on Ubuntu 12.04 LTS to control Jaguar Lite robot. However, the executables created in the correct directory cannot be found by rosrun. Please see the screenshot of the error given below. I think the package path cannot be wrong because it looks into the correct package directory. I would appreciate any help.

Edit: I cannot post links because of low karma. But the code is below

robotlab@robotlab-Revo-RL80:~$ rosrun drrobot_jaguar4x4_player drrobot_player 
/opt/ros/fuerte/bin/rosrun: line 73: /home/robotlab/fuerte_workspace/drrobot_jaguar4x4_player/bin/drrobot_player: No such file or directory
robotlab@robotlab-Revo-RL80:~$ ls ~/fuerte_workspace/drrobot_jaguar4x4_player/bin
drrobot_imu              drrobot_keyboard_teleop  drrobot_player
drrobot_joystick_teleop  drrobotMsgTester         drrobot_pointcloud

In addition: There are 6 executables in bin directory. drrobot_imu and drrobotMsgTester runs without problem. But the rest 4 gives no file or directory error.


Originally posted by hee502 on ROS Answers with karma: 13 on 2014-07-25

Post score: 1


Original comments

Comment by ahendrix on 2014-07-25:
Screenshot link is broken. It looks like you haven't uploaded it.

Comment by BennyRe on 2014-07-25:
You could also paste the error as plain text in the code environment.

Comment by McMurdo on 2014-07-25:
I am suspecting that the executable doesn't have permissions to execute... Try chmod +x to that. Or clean the bin folder and build again.

Comment by hee502 on 2014-07-25:
I've tried chmod. The same result. I've formatted all the drive, reinstalled Ubuntu, ros and packages. The result is the same unfortunately.

Comment by ROSkinect on 2014-07-25:
you may have to add fuerte_workspace to your CMakeLists !

Comment by McMurdo on 2014-07-25:
But have you made/built the packages again or are they pre-built binaries? @ahendrix's answer describes almost all possibilities.

Comment by hee502 on 2014-07-25:
i've built the packages myself. The packages are downloaded from https://github.com/gitdrrobot. Second package depends on the first. But after building the first no executable is created. Maybe that's why the second is giving the error?

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

The error you're seeing here is "no such file or directory", and it's reasonably clear that the immediate file in question exists.

If these programs also fail to run when you execute them directly ( cd to bin, ./drrobot_player ), then there are a number of other things that could be causing this:

  • Your node is a python or shell script with a bad #! line at the beginning, or no #! line at all.
  • Your node is a broken symlink - it exists, but the thing it's supposed to point to doesn't.
  • Your node is compiled for a different architecture - perhaps it's a 32-bit binary on a 64-bit machine, and you don't have the 32-bit compatibility libraries installed.
  • Your node is actually a launch file

I took a deeper look into this. It turns out that the drrobot package maintainers were foolish enough to check 32-bit binaries into their repository: https://github.com/gitdrrobot/drrobot_jaguar4x4_player/tree/master/bin . You can probably convince them to run if you install the ia32-libs package.


Originally posted by ahendrix with karma: 47576 on 2014-07-25

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by hee502 on 2014-07-25:
./drrobot_player command in the bin directory also gives the same error. Your second point might be the cause. drrobot_jaguar4x4_player package depends on DrRobotMotionSensorDriver package. I have realized that, although i don't get an error during building the package, no executable or bin directory is created under the directory of this package. So, the problematic node might be trying to point the executable of the other package. I'll post if the problem is solved. Thanks for all the answers.

Comment by ahendrix on 2014-07-25:
Broken symlinks are VERY easy to diagnose - run ls -l on a file to determine if that file is a symlink, and where it is pointing.

Comment by hee502 on 2014-07-26:
Thanks, it only shows the file permissions, therefore not a symlink. Soon, I'll try on a different hardware to see if hw is the problem.

Comment by ahendrix on 2014-07-26:
I've filed an issue for the 32-bit binaries problem here: https://github.com/gitdrrobot/drrobot_jaguar4x4_player/issues/1 but given that the repository has not seen any activity since it was made public a year ago, I'm not optimistic that they're going to fix it.

Comment by ahendrix on 2014-07-26:
This fork seems to have cleaned up most of the problems: https://github.com/RaghavendraSriram/drrobot_jaguar4x4_player .

Comment by hee502 on 2014-07-30:
ahendrix many many thanks. The package you have given fixes the problem. I have informed the company. Hopefully they will modify their package to prevent future problems.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.