First Few Issues of ROS on Ubuntu on Crouton on Chrome OS
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?