Some minor wrong turns aside, I think I’ve successfully installed ROS Melodic on Ubuntu 18 running within a Crouton
chroot inside a Toshiba Chromebook 2 (CB35-B3340). The first test is to launch
roscore, verify it is up and running without errors, then run
rostopic /list to verify the default set of topics are listed.
With that done, then next challenge is to see if ROS works across machines. First I tried running
roscore on another machine, and set
ROS_MASTER_URI to point to that remote machine. With this configuration,
rostopic /list shows the expected list of topics.
Then I tried the reverse: I started
roscore on the Chromebook and pointed another machine’s
ROS_MASTER_URI to the IP address my WiFi router assigned to the Chromebook. In this case
rostopic/list failed to communicate with master. There’s probably some sort of networking translation or tunneling between Chrome OS and an installation of Ubuntu running inside Crouton
chroot, and that’s something I’ll need to dig into and figure out. Or it might be a firewall issue similar to what I encountered when running ROS under Windows Subsystem for Linux.
In addition to the networking issue, if I want to embed this Chromebook into a robot as its brain, I’ll also need to figure out power-up procedure.
First: upon power-up, a Chromebook in developer mode puts up a dialog box notifying the user as such, letting normal users know a Chromebook in developer mode is not trustworthy for their personal data. This screen is held for about 30 seconds with an audible beep, unless the user presses a key combination prescribed onscreen. How might this work when embedded in a robot?
Second: when Chrome OS boots up, how do I also launch Ubuntu 18 inside Crouton
chroot? The good news is that this procedure is covered in Crouton wiki, the bad news is that it is pretty complex and involves removing a few more Chromebook security provisions.
Third: Once Ubuntu 18 is up and running inside Crouton
chroot, how do I launch ROS automatically? My current favorite “run on bootup” procedure for Linux is to create a service, but
systemctl does not run inside
chroot so I’ll need something else.
And that’s only what I can foresee right now, I’m sure there are others I haven’t even thought about yet. There’ll be several more challenges to overcome before a Chrome OS machine can be a robot brain. Perhaps instead of wrestling with Chrome OS, I should consider bypassing Chrome OS entirely?