Hi again,
One thing ahead: The PR2 ecosystem has a lot of dead/rarely used code.
Some packages that can help with robot maintenance are still not ported
to catkin (and anyone who would use them would want to do that), not to
mention python3. Also, even if it looks like a feature might have
worked in ros fuerte it might have been broken even back then with
nobody noticing. It's just a lot of features that come together here.
So of course it's a good idea to check all the documentation you can
get your hands on (and documentation videos) but don't rely on anything
unless you explicitly tested it in full operation. Sorry for the
pessimistic view, I just find it an healthy attitude with ROS
altogether. :-)
> One more thing. Assuming I decide to start from fresh and reinstall
> the OS. Will following the ROS wiki instructions here
> <
http://wiki.ros.org/Robots/PR2/indigo> bring me back to a functional
> robot? Of course, I'd need to sort out the network problems first.
No. I would definitely not rely on it.
The "indigo upgrade" by clearpath we received already had various
system issues that took time to fix.
Also Ubuntu 14.04 is out of LTS by now (after all it's been 8 years),
so you can't easily pull from the ubuntu deb repositories anymore.
> I love the idea of using docker, It's an elegant, modern solution!
Yes, but setting it up on top of the indigo servers with netboot is
quite some overhead and comes with disadvantages. No systemd, openvpn
in the Ubuntu 14.04 version (which is a version that does not include
WG's modifications yet to allow for floating connections), ...
If we would do it again, we definitely would setup c1 and c2 separately
at least with Ubuntu 20.04 first, but for now what we have works
sufficiently well.
> In your opinion, is it better to use a later OS (22.04), run docker
> and use Ubuntu 14.04?
O.O" Never. Again, already on indigo many things were somewhat broken
so you want to use current versions and fix issues there. I don't see
any upside to try to run anything older than ROS noetic by now unless
you have it and don't want to change. And yes, you might also find
python3 migration issues there that have not been pushed upstream by
anyone. Please contribute to the repositories at
https://github.com/PR2
if you fix something.
Considering whether to setup Ubuntu 20.04 or 22.04 as base system I'm
undecided. Open Robotics's ROS(1) distributions do not support Ubuntu
22.04 anymore, so you would probably want to run your ROS noetic on
20.04 anyway. If you directly setup a 20.04 you will not need any
docker at all for the near future (which I consider a good thing), but
of course a 22.04 base system might give you some benefits simply
because it's newer. (I know at least with 14.04 base images we have
problems with PS4 controller connections, there is always something
that works better with newer versions and always a lot that breaks).
Of course you can also compile your ROS from scratch on 22.04
(the keyword would be ROS-O) or use RoboStack's noetic stack, but you
might not want to start out with it if you don't have a working PR2
right now.
> On that note, it would be very helpful if you can provide a docker
> image of what you have running currently. I'll also do my own
> research again with docker in mind.
We run with a simple Ubuntu 20.04 image with a long list of packages
with whatever we need. I don't think there is much sense in sharing
this with you.
> One thing I realized while working on the robot is that the manual
> says the c2 netboots off of c1, and c2 does not have its own OS. But
> with the current setup, I see that there is an OS on both machines
> separately. I don't think any netbooting is happening, they also
> don't share a filesystem and c2 doesn't even have ROS installed.
> Maybe I'm confused as to what netbooting actually means or maybe the
> Indigo upgrade did away with netbooting altogether?
For our server upgrade C2 had a basic ubuntu 14.04 installed without
any modifications. For the canonical PR2 setup this system should never
boot and they might as well have swiped the disk.
However, if C1 does not start its dnsmasq to offer the pxe boot on
the correct interface, or if the bios on c2 is not configured properly
for netboot only, C2 might eventually boot into that system.
> I have gotten access to c1 by removing the lan card and placing a
> small graphics card in its place, it's only temporary though. I don't
> understand why c1 needs 7 lan ports. Is it a bandwidth limitation?
As I said, it needs at least ethercat, wan, lan with
10.68.0.0/24 and
lan with
10.69.0.0/24 interfaces. you could even map both 10.68 and
10.69 to the same lan interface but you would have to monitor (iftop et
al) the interface to see whether it overloads. I believe the cameras
were split off because of load issues. On the other hand the original
hardware design is over 12 years old now and the new network interfaces
might be able to handle more. Also the stereo/arm cameras are awful
quality compared to current camera sensors so you might as well
consider disabling them altogether to save the bandwidth.
I believe the pre-indigo PR2 had load balancing setup somehow between
lan0, lan2 and lan3, but it might be one of these things that should
have worked but actually didn't aside from some test systems.
As I wrote before, we don't use lan2 and lan3 at all and do not see
noticeable issues.
> If we do upgrade the OS on both machines, wouldn't it be best to have
> each one be an independent computer on the same network? Where one
> will be the ROS Master and the other simply runs nodes to interface
> which whatever is allocated to it (usb and ethernet devices). Maybe
> even upgrade the computers and run everything on one machine?
That's what I proposed in my last mail. The main advantages of the
unionfs/netboot setup are that you don't have to think of c2 as a
separate computer. It's just an extension of c1. If you modify /usr or
/etc on c1 (e.g., by installing packages) the changes will be there on
c2 - unless you hit one of the files from the unionfs overlay which are
located somewhere in c1:/unionfs/overlay (off the top of my head).
The only thing you need to do is offload computation from c1 is to add
a `machine="c2"` attribute to your launch file. These are huge
advantages. It's just that overlayfs + netboot also make administration
much harder and the whole thing needs a rather fragile configuration.
Also with the additional pr2-head NUC necessary for a kinect sensor you
have another independent system already and need to keep that in mind
during updates...
Best,
Michael
On Thu, 1 Sep 2022 18:08:32 -0700 (PDT)
> >> Phone:
+49 40 42883-2432 <+49%2040%20428832432>