RPI4 libboost 1.67 error - run custom ROS nodes

Hello community,

I have tried to build a simple node on a RPi4 with the current image that is provided.
Following error occurs after the “successfull” build:
/usr/bin/ld: warning: libboost_system.so.1.58.0, needed by /opt/ros/kinetic/lib/libroscpp.so, may conflict with libboost_system.so.1.67.0
If I run the node there is a segmentation fault.
If I´m right it would help to uninstall the boost lib 1.67 and install 1.58 from source. Because the ros kinetic version only runs with the older boost lib version…
My problem is that if I do that, I have to install ros from source again, because when I uninstall lib 1.67 the ros plugins are uninstalled as well… and I dont know how.
I have tried to set up my own image and install ros and Ardupilot from source. ROS and Ardupilot compiled successfully, but I was not able to run or neither connect it to my GCS.

My question is how I can compile and run my own nodes with the current rpi4 image?
Thanks!

1 Like

Hi Maxim,

Thanks for reaching us out!

We’ll need some time to carry out some tests with your setup. After everything’s done, I’ll come back to you with results.

1 Like

@mikhail.goryachev I am also having the same issues. It would be wonderful if they can be resolved with a new release of Navio’s setup.

@mikhail.goryachev I tried looking at Emlid’s Github organization but I could not find a repo where you guys create the image to be flashed. I would be willing to create a PR that tackles this issue, if you can link me to the image creation repository.

EDIT: did a bit more digging and found it: GitHub - emlid/pi-gen-navio

Submitted an issue: `ros-kinetic-*` does not work with the navio-buster image · Issue #4 · emlid/pi-gen-navio · GitHub

and a PR that should resolve this: update to ros-noetic by acxz · Pull Request #6 · emlid/pi-gen-navio · GitHub

1 Like

Did this solution work for you?
In my oppinion You have to install ros melodic from source, but this failes due to the fact that I cannot do a rodep init or update… tells that it cannot download the sources list.
But when I get the sources list manually and run rosdep update it fails because of certificates…
my certificates are up to date if I check them…

Is that maybe a firewall issue?

the provided image for the PI4 is very confusing … thats very sad

Hey Mikhail did you find anything out?

Found a solution for the rosdep update ssl certificate error!
command: export SSL_CERT_FILE=/usr/lib/ssl/certs/ca-certificates.crt
after that rosdep update works on the last RPI4 image…
now getting melodic from source!

Agreed, the provided image is not well tested at all.

I haven’t had the change to test my changes, but essentially my PR uses the ros-melodic instead of ros-kinetic when creating the RPI image for the navio. (Note: ros-melodic is supported on stretch whereas ros-kinetic is not)

Also good to hear to you got your SSL error fixed!

@mikhail.goryachev we would appreciate a response.

the latest image is based on buster and not stretch. For buster there is no way to install melodic from apt and if you install kinetic from apt get you have to set the boost lib to 1.58 otherwise you get a segmentation fault running your nodes…

The latest image that is linked on the docs in not the default branch of the repo that creates the rpi image, (i think it has been falsely linked in the docs, or at least the default branch of the repo should be updated)

As for buster, OSRF does not provide packages for it, but Debian upstream does. I would recommend using those before compiling from source.

@mikhail.goryachev
Can you follow up with the discussion or the issues/PRs made on the Github? The community would like to hear back from Emlid.

Take care.

It seems like this issue would be better suited under [Navio/Edge]/[Raspbian].
As such I will also at @polina.buriak in this conversation.

Polina, if you could provide some resolution to this issue, that would be much much appreciated. As of now, we cannot use ROS from the default Navio2 Image, as advertised by Emlid.

Take care.

What I did know is, I installed the melodic version from source and then everything was fine. Ardupilot works with the ROS Mavlink node and my own nodes run as well.
Cheers!

Hi,

I’ve tried building custom nodes and haven’t experienced the same issues as you did. Have you tried repeating the whole process from the beginning? Which guide were you using? In my attempt, I’ve been referring to ROS Wiki and ROS Industrial Training.

Glad to hear that you’ve succeeded in installing Melodic and creating custom nodes without issues. In the meantime, we are not planning to upgrade ROS Kinetic to Melodic. However, you can use pi-gen-navio that you’ve already come across to build a custom Raspbian image that can fit your needs.

Hello @mikhail.goryachev
thx for looking into this issue.

The problem is not using ROS, following ROS’s documentation everything works flawlessly. If this was a problem with ROS we would be reporting it there, instead of these forums.

The problem is with pi-gen-navio. The ROS install that you guys ship does not work with the rest of your stack. And the solution is to ship with Melodic (as recommended by ROS for Debian systems). Did you try building a custom node with Boost? Many of the tutorials you have linked do not use boost.

I am sad to hear that you guys are not open to moving from Kinetic to Melodic (as recommended/supported by ROS), even with submitting PRs that provide the necessary code changes 1 click away.

Will there ever be plans to update the pi-gen-navio stack to Melodic, and if so when?

Again thank you for looking into this. We would love to have this issue resolve as I believe further down the road this will affect more and more users.

PS: Thanks for the link to ROS Industrial training, thats seems like a good resource :slight_smile:

Thanks for the patch @acxz. It appears that melodic depends on boost 1.65.1, which is not readily available on buster. Is compiling it the only way to go around this?

The following packages have unmet dependencies:
ros-melodic-mavros : Depends: libboost-filesystem1.65.1 but it is not installable
                  Depends: libboost-system1.65.1 but it is not installable
                  Depends: libboost-thread1.65.1 but it is not installable
                  Depends: libtinyxml2-6 (>= 5.0.0)
                  Depends: ros-melodic-diagnostic-msgs but it is not going to be installed
                  Depends: ros-melodic-diagnostic-updater but it is not going to be installed
                  Depends: ros-melodic-eigen-conversions but it is not going to be installed

ROS melodic is not supported on Buster it is only supported on Stretch. If you need to use ROS on debian I would recommend you use debian stretch. If you need to use debian buster and ROS melodic I would urge you to look at the upstream packed from debian first. If you do not feel comfortable using them then I would compile from source. (See above conversations)

But if you have no reason for using buster then I would use ROS melodic on stretch.

See: use default navio image by acxz · Pull Request #232 · emlid/emlid-docs · GitHub for more information and how to procure a Debian stretch image instead of a debian buster image.

I see, thanks. For my rpi4 I suppose Buster is the only option. Kinetic or Melodic are both fine for me, but the boost conflict is a real problem. I will look into Debian upstream packages, or if I have to compile ROS myself.

You don’t have to use buster on the rpi4.