Ask Your Question

Bertrix's profile - activity

2014-12-23 03:26:03 -0600 received badge  Popular Question (source)
2014-12-23 03:26:03 -0600 received badge  Notable Question (source)
2014-12-23 03:26:03 -0600 received badge  Famous Question (source)
2014-04-01 08:34:12 -0600 received badge  Great Question (source)
2012-12-14 20:36:38 -0600 received badge  Favorite Question (source)
2012-11-26 12:04:06 -0600 received badge  Good Question (source)
2012-11-05 07:30:23 -0600 received badge  Nice Question (source)
2012-08-16 20:36:26 -0600 received badge  Famous Question (source)
2012-06-24 02:08:58 -0600 received badge  Notable Question (source)
2012-06-13 05:15:18 -0600 received badge  Popular Question (source)
2012-06-09 20:56:39 -0600 answered a question rosmake - how is link.txt generated for packages?

See update in the question

2012-06-09 20:12:15 -0600 received badge  Supporter (source)
2012-06-07 04:40:06 -0600 asked a question rosmake - how is link.txt generated for packages?

I've come across a bit of a linking problem when trying to get Arduino projects compiled for my ROS electric installation under Ubuntu.

When compiling for ROS, rosmake / CMake somehow sneaks the "-rdynamic" flag into the linking arguments for the object files regardless of target. This normally isn't a problem but since I've updated gcc-avr to 4.7.0 its behaviour is now set to error out when it finds an unsupported option, previous versions simply gave a warning and continued on. Manually removing -rdynamic from link.txt inside the relevant CMakeFiles folder then making fixes the problem and the linking is successful, but that defeats the purpose of CMake if I have to do that every time.

The easy solution would be to downgrade gcc-avr to the previous version (it's not like I need the new version) but I'm interested where in the CMake process is this flag getting set and how the link.txt script is actually generated for individual packages, I can't seem to find any documents regarding this. I've done a plaintext search on the stack source files and "rdynamic" doesn't show up, it has to appear somewhere higher up the chain.

-- UPDATE --

Thought I'd add that I'm compiling my Arduino projects via the Poark port of the parsec.rosserial stack as I found the official rosserial_arduino version under Electric to be utterly broken when I checked it out a few months ago, things may have changed since then but I've been working around this stack and it hasn't faulted me yet.

I ended up reverting gcc-avr to version 4.5.3 along with a compatible avr-libc. "-rdynamic" no longer crashes the build script and everything works mostly as it should with Poark. Rosmake is only for initially setting up rosserial, after that you call cmake directly.

The process involves calling cmake with a bunch of Arduino specific flags (mcu type, speed, upload port etc), this is easily done with a bash script. Poark's cmake script then does its thing and generates Makefiles for your Arduino project leaving you to invoke 'make upload' to generate binaries and upload them to the board.

I did however find a curious issue when I invoked 'make'; it executes a cmake_check_build_system function inside the Makefile which regenerates the Makefile without the Arduino specific options, making the script fall over as no 3rd party Arduino libraries are in the compiler scope. This was resolved by altering the bash script to remove the offending function from the Makefile after generation using sed and before the user has a chance to invoke 'make upload'

Anyhow, I think I'd consider this question closed. It seems that the original problem stems from CMake throwing flags in at a fundamental level and gcc-avr 4.7.0 just being pedantic. To fix this bug would probably mean breaking a lot of 'normal' cases, so reverting and staying would be the best option.

It ... (more)

2012-06-04 05:54:04 -0600 received badge  Student (source)
2012-06-04 04:43:31 -0600 received badge  Editor (source)
2012-06-04 04:42:09 -0600 asked a question ROS Fuerte, Pandaboard & Ubuntu 12.04 - no go

I've been trying to get Ros Fuerte working on my Pandaboard over the weekend to no avail, I've just been hitting roadblock after roadblock.

I'll detail the errors I've come across so far, the work-arounds I used and then the final error I can't get around. I'm using a non-ES Pandaboard with a fresh Ubuntu 12.04 OMAP4 desktop image and the Fuerte source installation instructions. The proprietary SGX drivers were not installed.

I attempted to install all dependancies, ROS-Full and Desktop-Full install. There were no proxies present on my network.

Error 1: ros-fuerte-swig-wx doesn't seem to exist on armel or armhf, causes graphical dependencies to fail at step 1.4. Worked around using plain swig instead, though I'm not sure if that has had any negative impact later on.

Error 2: turtle.cpp fails to compile properly at step 1.5.1, worked around using patched turtle.cpp from the Raspberry Pi answer

Error 3: The following layer two packages fail at step 1.7, output from rosdep install -arvy

 ERROR: the following rosdeps failed to install
 apt: command [sudo apt-get install -y libtbb-dev] failed
 apt: command [sudo apt-get install -y nvidia-cg-toolkit] failed
 apt: command [sudo apt-get install -y ros-fuerte-ros] failed
 apt: command [sudo apt-get install -y yaml-cpp] failed
 apt: command [sudo apt-get install -y ros-fuerte-pcl] failed
 apt: command [sudo apt-get install -y ros-fuerte-opencv2] failed
 apt: command [sudo apt-get install -y ros-fuerte-swig-wx] failed
 apt: Failed to detect successful installation of [libtbb-dev]
 apt: Failed to detect successful installation of [nvidia-cg-toolkit]
 apt: Failed to detect successful installation of [ros-fuerte-ros]
 apt: Failed to detect successful installation of [yaml-cpp]
 apt: Failed to detect successful installation of [ros-fuerte-pcl]
 apt: Failed to detect successful installation of [ros-fuerte-opencv2]
 apt: Failed to detect successful installation of [ros-fuerte-swig-wx]

Some of these are expected, have to rosmake with the -r flag to continue but I think the damage has been done at this point.

Error 4: roscore fails to start after the environment is setup. Errors out with the following even when running as root.

Traceback (most recent call last):   File "/usr/local/bin/rosversion", line 4, in <module>
    import pkg_resources   File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2711, in <module>
    parse_requirements(__requires__), Environment()   File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve
    raise DistributionNotFound(req) pkg_resources.DistributionNotFound: rospkg==1.0.2 Invalid <param> tag: Cannot load command parameter [rosversion]: command [rosversion ros] returned with code [1]. 

Param xml is <param command="rosversion ros" name="rosversion"/>

rosversion also has a similar error, but the basic ros filesystem tools (roscd, roscpp, which roscore) seem to work.

At this point I couldn't be bothered looking any further, wiped the SD card, put on Ubuntu 11.10 and installed ROS electric following these steps and it worked straight away. Has anyone actually got Fuerte running on a Pandaboard under 12.04 or can provide some insight into these errors? Otherwise is it possible for electric to run under 12.04?