Ask Your Question
2

problems with ros installation on pandaboard with armhf

asked 2012-09-20 02:32:30 -0500

brhempen gravatar image

updated 2014-01-28 17:13:42 -0500

ngrennan gravatar image

Hi there!

I am trying to install ros on a Pandaboard Rev A4 based on the armhf architecture on Ubuntu 12.04 LTS. Since no binary Packages are available for armhf, I have to built ros from source according to

http://www.ros.org/wiki/fuerte/Installation/Ubuntu/Source

which turns out not to be easy. However, I have been able to get the ros core libraries running. Yet, the higher level libraries are causing problems. I follow the instructions up to step 1.3 where rosdep keeps crashing after executing "rosdep install -ay"

I know that the problem is that some dependencies are not available for armhf. I tried to install some of them from source, for example yaml-cpp according to this post:

http://answers.ros.org/question/36319/how-to-install-yaml-cpp026-dev-how-to-install-from-source-correctly/

or swig-wx according to the instructions at

http://www.ros.org/wiki/fuerte/Installation/Ubuntu/Source

but they are NOT detected by ros then. yaml-cpp is only one of the missing dependencies:


bruewer@panda-desktop:~/ros/simulator_gazebo$ rosdep check -a
System dependencies have not been satisified:
apt libtbb-dev
apt nvidia-cg-toolkit
apt ros-fuerte-ros
apt yaml-cpp
apt ros-fuerte-opencv2
apt ros-fuerte-swig-wx

Installing nvidia-cg-toolkit doesnt even make sense for my PandaBoard, as there is no nvidia GPU available. But that library may be a special case and I read (https://code.ros.org/trac/ros-pkg/ticket/5490) that the ros guys are currently working on this. How to I install the missing libs and integrate them with ros? I have been trying to figure this out for days and do not get any further. Any help is appreciated!

Cheers, Bryan

edit retag flag offensive close merge delete

Comments

Are you trying to install desktop-full onto a Pandaboard? Can you try installing a simpler ROS variant, such as robot or mobile? See http://www.ros.org/reps/rep-0113.html#robot-variant for a list of variants.

Eric Perko gravatar imageEric Perko ( 2012-10-02 02:40:17 -0500 )edit

I installed ROS on a Pandaboard but without 3D rendering. By the way, I don't think that gazebo or something else will run on the ARM board.

Is it essential to your project that you visualize everything?

dinamex gravatar imagedinamex ( 2012-10-02 09:31:54 -0500 )edit

4 Answers

Sort by ยป oldest newest most voted
1

answered 2013-01-29 01:42:21 -0500

zumili gravatar image

updated 2013-02-28 20:52:09 -0500

ahendrix gravatar image

There is also an installation tutorial for ROS Groovy on Raspbian Pi:

http://www.ros.org/wiki/groovy/Installation/Raspbian/Source

Based on this I created a tutorial for ROS Groovy running under Ubuntu 12.04 on a PandaBoard:

http://www.ros.org/wiki/groovy/Installation/PandaBoard/Source

It's recommended to use the robot installation.

Hope this will help somebody.

edit flag offensive delete link more

Comments

is the openni_launch package working? this was the hardest part and the reason why I gave up and ended up with ROS electric + ubuntu 11.10

dinamex gravatar imagedinamex ( 2013-01-29 02:22:08 -0500 )edit

We didnt tested it, because we only have the robot version of groovy running on the Panda. There are a lot of errors trying to install a Desktop version of groovy on a Panda at the moment, but have a look at the Raspbian tutorial (Desktop) for groovy. With luck you get all deps for openni.

zumili gravatar imagezumili ( 2013-01-29 04:14:17 -0500 )edit
1

answered 2013-01-10 15:24:26 -0500

tfoote gravatar image

I think that the nvidia toolkit has successfully been removed from the dependency tree in Groovy. package.xml

There's also a group working on Groovy on Raspberry Pi installation instructions.

edit flag offensive delete link more
0

answered 2013-02-14 22:14:42 -0500

semael23 gravatar image

updated 2013-02-25 23:09:27 -0500

I also build everything from robot package including pcl (but except openni) on armhf (pandaboard)... compiling was not the problem at all. Build it several times, and always got failures in different packages while running them... always misalignment during deserialization. it occurs when node subscribers are connected and the first message is deserialized. Now i would like to know if this problem also occurs on raspberryPI?

this alignment error makes armhf on pandaboard UNUSABLE!! :-( currently i'm downgrading to 12.04 armel losing all advantes of hard-float support, but when i tried everything with ubuntu 11.10 armel everything worked fine for me... so hopefully i have a working panda with an ubuntu 12.04 this evening...

some users in forum said putting build to debug solves the problem but this wasn't correct for me. i think it's just luck if compiler addresses variables in program correctly so that they would fit to armhf support... i think there is the problem. or are there any other suggestion? or may be a workaround?


Next day, next try... found some infos to alignment error will rebuild evrything on armhf .... again .... this time building every package itself, activating gcc cast and alignment warnings.... saw that some people have same problem, not only related to ros. Some others figured out that aligment error depends on gcc usage of fast memory operations resulting in unhandled kernel exceptions... hope that i can figure out the problem... will start with serialization... ros_comm and bond...


Failure seems to found!!! Building ros_cpp with "-Wcast-align" shows the possible lines... it seems that casts from uint8 to uint32 causes the alignment errors!! Ok... failure seems to be figured out, but how do i solve this???


Ok... rebuilding everything with flag "-mno-unaligned-access" ... i hope it works this time and is a more correct solution then putting everything to debug... i will let you know if it is stable this time...

as info: since arm-v4 arm arch is able to handle unaligned access. cortex-a8/9 are arm-v7a, so they can handle, except there is a NEON or something similiar... if there is a NEON compiler make use of faster memory access and so on. and there is the problem: NEON only handles ALIGNEND memory addresses. thats what i figured out, if i'm wrong please correct me!!


:'( ... even rebuilding stacks with no unaligned access didn't work... thats disappointing... can plz someone report if all its build nodes work proper!? especially nodes high-level nodes like gmapping!


back again... and happy now! didn't found a solution fitting to all probs, but possibly it may help: dont use serialization! try to build nodelets and load them into a manager! manager are multi-threaded at all and can also distribute multi-threaded node-handles! due to intra-process-communication no de-/serialization is needed -> no alignment fault should happen!


and it happened, anyway :( ... ok, found out that the compiler i used is gcc 4.6.x ... this compiler does not interpret "-mno-unaligned-access" so the flag is USELESS... digged ...

(more)
edit flag offensive delete link more

Comments

I'm using ROS on Panda with ubuntu 12.04 just fine. Check you got the correct version of the ros_comm package.

Claudio gravatar imageClaudio ( 2013-02-15 04:13:36 -0500 )edit

yeah as i said, i could also build all the packages! the problem is that some of them don't work. tried it with groovy and fuerte. always misalignment error... which version of ros_comm do you use? i thought package was stable at all? if anybody has a working ros image ubuntu armhf, i would take it

semael23 gravatar imagesemael23 ( 2013-02-15 09:22:27 -0500 )edit

back again... same problem on ubuntu armel ... what am i doing wrong? some package work without any problems and others not.. kernel exception: [23268.949859] Alignment trap: not handling instruction ed977b00 at [<b6f77eda>] [23268.959899] Unhandled fault: alignment exception (0x011) at 0xb4501bb5.

semael23 gravatar imagesemael23 ( 2013-02-15 11:53:30 -0500 )edit
0

answered 2013-02-15 04:39:59 -0500

Claudio gravatar image

Here is a list of packages (distro FUERTE)that I've been able to compile on the Pandaboard with ubuntu 12.04:

actionlib
actionlib_msgs
amcl
angles
base_local_planner
beginner_tutorials
bfl
bond
bondcpp
bondpy
bullet
camera_calibration_parsers
camera_info_manager
carrot_planner
clear_costmap_recovery
collada_parser
collada_urdf
colladadom
common_rosdeps
convex_decomposition
costmap_2d
cpp_common
diagnostic_aggregator
diagnostic_analysis
diagnostic_msgs
diagnostic_updater
driver_base
dwa_local_planner
dynamic_reconfigure
eigen_conversions
fake_localization
filters
geometry_msgs
gmapping
hokuyo_node
image_transport
ivcon
kdl
kdl_parser
laser_assembler
laser_filters
laser_geometry
learning_image_transport
map_server
message_filters
mk
move_base
move_base_msgs
move_slow_and_clear
nav_core
nav_msgs
navfn
nodelet
nodelet_topic_tools
orocos_kdl
pcl_ros
perf_roscpp
pluginlib
polled_camera
python_orocos_kdl
resource_retriever
robot_pose_ekf
robot_state_publisher
rosbag
rosbash
rosboost_cfg
rosbuild
rosclean
rosconsole
roscpp
roscpp_serialization
roscpp_traits
roscreate
rosgraph
rosgraph_msgs
roslang
roslaunch
roslib
roslisp
rosmake
rosmaster
rosmsg
rosnode
rosout
rospack
rosparam
rospy
rosservice
rostest
rostime
rostopic
rosunit
roswtf
rotate_recovery
self_test
sensor_msgs
shape_msgs
sicktoolbox
sicktoolbox_wrapper
simmechanics_to_urdf
smach
smach_msgs
smach_ros
smclib
srdf
std_msgs
std_srvs
stereo_msgs
test_bond
test_crosspackage
test_diagnostic_aggregator
test_nodelet
test_ros
test_rosbag
test_roscpp
test_roscpp_serialization
test_roscpp_serialization_perf
test_roslib_comm
test_rospy
test_rosservice
test_rostime
tf
tf_conversions
timestamp_tools
topic_tools
trajectory_msgs
urdf
urdf_interface
urdf_parser
visualization_msgs
voxel_grid
xacro
xmlrpcpp

If you want to go the Groovy way I warn you you'll find a bit more problems. I stopped short of the Mobile variant due to problems with collada: you have to download the source package and compile it before being able to compile most of the parsers, still haven't had time to do that. And as you found out already you have to download and compile yaml-cpp 0.2.7 (don't forget a sudo make install at the end, otherwise nobody will be able to find it).

Also I'm not sure if running a rosdep update is any use when you change what is available on your system. For not knowing it, I run it anyway.

edit flag offensive delete link more

Comments

FINALLY SOLVED! There is a "bug" in roscpp... fixed it and now everything is working fine on armhf! gmapping, openni and even navigation stack! I will try to mail ROS Team, perhaps they will fix the mainline! If not i will release a patch! NOW ARMHF IS USEABLE!!! =) ;-)

semael23 gravatar imagesemael23 ( 2013-03-02 21:26:52 -0500 )edit

Can you please post what you did? So we can use the fix before it is posted to the mainline?

Raptor gravatar imageRaptor ( 2013-04-17 09:24:32 -0500 )edit

@semael23, did publish somewhere your solution?

ferre gravatar imageferre ( 2013-05-06 11:25:22 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2012-09-20 02:32:30 -0500

Seen: 1,403 times

Last updated: Feb 28 '13