-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Distro and distro setup for robots #20
Comments
About (3), I think that there is always the possibility of having a graphical desktop installed, but not autostarted. I think that solution provides a better use of resources when the GUI is not needed and the PC is running headless, but allows to start a graphical session if some work needs to be done. |
3.1. I'm sure in practice, there is always work to be done! 😄 |
PS: This is a sane proposal, and would by no means discard it as an option. Updating above. |
3.2 If configuration is a concern, there are always alternatives to GUIs. For instance, nmtui for configuring wifi. |
That's interesting. I'll try it out if I ever find myself in need. I usually fumble around with |
Since I discovered nmtui I'm in love with it for configuring connections in Raspberry Pies and other SBCs. 😍 It would be interesting to discover similar programs for audio configuration, etc. |
Nice. Regarding sound, CLI/curses |
In my opinion using a non-graphical desktop cant take many learning/get-used to time at the beginning, and not all the people are comfortable working with it, so unless the graphical environment is a big resource problem for the robot, i would say stick with the graphical environment. Anyway if @David-Estevez idea is easy to implement i think is the best option. Everyone happy! |
I don't see the problem of having a graphic desktop, and maybe the easiest (even more than @David-Estevez idea) is to install as-is, and turn down graphics for specific situations. |
Yes, this is precisely what I meant above with "RT is at driver level, the Technosoft IPos PT Mode" which is implemented on roboticslab/yarp-devices (and thus TEO and ASIBOT) and accesible via yarp::dev::IPositionDirect. |
Yes, if you want to control position, driver is enough, but if you want to control velocity, you will need to set velocities according your timing. That makes necessary to reach the low level control parameters in order to set velocities in time. |
Later on, @munozyanez and I had a relaxing cup of ☕ and agreed Technosoft PT Mode (and also PVT Mode) seem to have the potential to have some RT on the driver side (e.g. using only one position of the FIFO buffer, to command a position that actually is used to indicate a desired velocity at a fixed Ts). While it is a sort of hack, alternatives would not necessarily provide harder RT (TBD). |
Also, if we are to use this mode, we can not forget about the canbus communication limits. |
@munozyanez Thanks for those numbers! BTW, this reminded me of yet another approach for which Technosoft drivers can be used. The concept is to use external micro-controllers (uC) near the drivers, and instead of communicating via CAN, just directly output a PWM from the uC to the driver as a control reference. Comms between the uC could be CAN, USB, or Ethernet (the later was what was once planned for iCub, not sure if this was finally ever implemented). Again, no hurry and not necessarily a perfect solution, just documenting possibilities.
I've asked at many places what a decent control rate is... Not many people willing to answer. Out of non-statistically relevant surveys, let's say ~0.1 ms for drones, 1-10 ms for humanoid gaits, and maybe up to 50-100 ms for basic arm manipulation tasks. Invert for frequency [Hz] 😄. Suggestions and references are welcome! |
I wonder if we could stick with different distros in different robots as far as it concerns system performance, and choose the one that suits better in each scenario. Please remember that ASIBOT runs on a quite low-end (if compared with TEO) RoBoard CPU on which it takes over an hour (!) to compile YARP, thus I would change my mind and consider picking the newest Debian in case it proves to run more efficiently than an Ubuntu. Note that we are currently using a Debian 6, ASIBOT was probably never tested with Ubuntu. Productivity and graphic environments are not a concern since we rarely need to open the robot casing and have no access to video output pins either (we talk with it via WiFi/Ethernet all the time). Having a possibility to remove the autostart sounds nice. |
I had no idea about that. Then It can make a difference even just to install graphics packages, but the difference could be not so big as it seems. Maybe some test and benchmarking can shed some light on it. Do you have any spare part boards? |
BTW, I will be very happy if we decide to have a non graphic system as a base, then each platform installs the packages as needed. |
Yes, but I think we'll wait for the next round of hardware tweaks in the robot instead of risking that the circuitry is not correctly arranged during the tests. I'd just load a Debian 9 image with all necessary components installed and check it right away. |
Update: roboticslab-uc3m/teo-main#32 (Migration from Debian 6.0 to Ubuntu 14.04 on TEO) |
Removed "Debian was only used for it's old Linux kernel as commented here " as a consequence of roboticslab-uc3m/yarp-devices#118 and roboticslab-uc3m/teo-main#32. |
I'll be working on improving ASIBOT's SW in the next few days. Let me remind that its internal memory is a micro SD card, currently using a 8 GB one (we're not sure whether it's possible to go beyond that capacity due to memory addressing limitations). The full specs are here and here. In short:
Since this is way below Ubuntu Desktop minimum system requirements (2 GHz, 2 GB RAM, 25 GB HDD, ref), and I couldn't even manage to begin the installation (this step requires at least 8.5 GB), I've switched to the Ubuntu Server version and doing fine so far with just 1.5 GB on a VirtualBox image (ref). Provided that we'll stay on Ubuntu Server, I can't stop noticing that Debian's system requirements are better suited for low-end HW (ref1, ref2):
|
I had to enable PAE-NX support in my VirtualBox image in order to use Ubuntu. This was not compulsory on the previous Debian 6.0 installation. In order to learn whether the processor allows PAE-NX mode, look for the pae flag in This CPU nuance might render the Ubuntu system useless on a RB110 board. More info: Wikipedia. More refs: https://help.ubuntu.com/community/PAE. |
Ubuntu is not so different from debian, mostly if release dates are close. My personal experience is that everything has worked fine under debian testing, although I have not tested all codes. Anyway, I suppose that problems of using debian, if any, will be minor. |
Didn't test it yet, but the integrated CPU does not seem to support PAE:
Debian is the way to go, then. Edit:
|
AFAIK, PAE is for running a 32-bit OS on a 64-bit machine, but enabling tha OS to access the 64-bit memory addresses. |
I fail to see any relation to 64-bit machines. Both the Ubuntu help page and the Wikipedia article refer to a feature found on 32-bit CPUs. Also, I could not install a 32-bit Ubuntu on a 32-bit VirtualBox image without enabling the PAE-NX option. |
Right.
Also relevant: https://www.virtualbox.org/manual/ch03.html Anyway, again... not sure it will make the board choke. Might be tedious, If any help, I think I have an extra roboard (from ASROB/ECRO). |
From wikipedia: https://en.wikipedia.org/wiki/Physical_Address_Extension#Linux |
I do have a RoBoard replacement in the lab (DMP eBox 3310MX-AP x86, specs) which runs on a Vortex86MX+ CPU. However, I'm unable to boot into Ubuntu (no lack-of-PAE support notice as in my VirtualBox test runs, though). Relevant: Debian Dropping Support For Older CPUs .
And https://lists.debian.org/debian-devel-announce/2016/05/msg00001.html:
Edit: https://www.debian.org/releases/stretch/i386/ch02s01.html.en (2.1.2.1. CPU)
Edit 2: compare with same docs for Jessie - https://www.debian.org/releases/jessie/i386/ch02s01.html.en |
From #20 (comment):
I guess this means that ASIBOT's Vortex CPU is a i586. Alternatively, try
Debian Jessie, then! Edit: ...but Jessie provides CMake 3.0 via apt (ref). Edit 2: Linux kernel 3.16 (ref) and GCC 4.19 (ref). Edit 3: all kernels available on Jessie |
Well, I'm not sure anymore. The Wikipedia article for Vortex86 gives a comprehensive explanation (marked as OR, though):
Moreover, Linux images for i686 are actually installed and run on the current ASIBOT's SD image: asibot2@asibot:~$ dpkg --get-selections | grep -i linux-image
linux-image-2.6-686 install
linux-image-2.6.32-5-686 install
linux-image-2.6.34.10-vortex86-sg install Notabene I'm unable to use |
Apparently, it's not possible to make an .iso file out of a .vdi (as managed by VirtualBox) and expect it to boot when burnt into a SD card: https://superuser.com/a/114452. I'll go with the mini-PC mentioned in #20 (comment). Edit: had no luck with writing back the original (non-modified via VirtualBox) .iso with Rufus on Windows, same lack of boot device on init. |
Yes, time to close this issue. In line with #10 I've opened roboticslab-uc3m/developer-manual#31 |
Thoughts arising from roboticslab-uc3m/yarp-devices#118.
Debian vs Ubuntu. This is a nasty fight, don't want to get too dirty LOL. It was actually the start of the original issue stated above. @munozyanez commented on Debian and @PeterBowman and I were a bit more into Ubuntu. Nothing against Debian, which is usually considered more stable. Simple fact is Ubuntu 16.04 has a newer CMake version (hence newer versions in general) than Debian 9.0. Having newer versions is usually interesting for us. In sum, we usually leaned towards Ubuntu due to its newer package versions.
RT or non-RT. Currently, RT is at driver level, the Technosoft IPos PT Mode. We'd have to go years back to ASIBOT's pre-empt kernel, or more recently TEO's Meka head which was formatted due to lack of compatibility of drivers (e.g. its own wifi module could only be used via ndiswrapper, with poor communication quality). This is why we've been leaning towards non-RT.
Graphical desktop environments or not. I was originally against installing anything graphical on a robot. However, this is something like c++ vs python: "Is it worth to program on an ultra-efficient platform, if this means that you will not be as efficient/productive?". @smorante usually preferred graphical desktop environments and was much more productive than me at times, and I've seen this with @rsantos88 too. This, together with the fact that we're non-RT anyway, is why we've been leaning towards graphical desktop environments. Note: I believe installing a server version of Ubuntu is a bit more straightforward than Debian, but that may apply to full distros too. 😅
Edit: Graphical distro tools can also help for settings such as wifi or sound configuration, which need to be configured quick even in working scenarios, such as an imminent demo. 😄 @David-Estevez and I propose, see below, some CLI/curses alternatives.
Edit2: @David-Estevez Proposed, see below, the possibility of having a graphical desktop installed, but not autostarted.
@roboticslab-uc3m/roboticslab It would be great to have your feedback. Obviously there are more considerations such as which graphical desktop in case there is any (I'm in favor of using defaults per distro), please feel free to comment! Am I missing any more relevant considerations?
The text was updated successfully, but these errors were encountered: