Install ROS on GoPiGo

Surely do remember it. Here is my “baby brother” Hero posing for a photo around 1987:
Hero_robot

[u]This is the latest blog post and video for my GoPiGo3 bot, Carl.[/u]

Very excited to see you on the GoPiGo3 forum.

2 Likes

@cyclicalobsessive,

I have a Hero retrofit kit to add the hardware for an autonomous return to its charger function if you know anyone who needs one.

I hope that I can be a real help on this forum helping to integrate ROS/RPLidar into the GoPiGO OS in order to experiment with SLAM.

Regards,
Tom C

1 Like

LIDAR seems to be the de rigueur on nearly every ROS bot paper I have read.

Does your bot also have an IMU? How much value do you think an IMU can be for localization?

I am hoping that eventually my bot will be smart enough to use the picamera + encoders + “learned visual objects” (lines in the floor, free wall baseboard lengths, wall outlets, furniture, doorways, windows, indoor light fields, …) for localization. It seems some folks are going there: (“Toward Consistent Visual-Inertial Navigation”)

1 Like

@cyclicalobsessive

No, not yet. Though I have built a number of autonomous rc cars that used the 3DR AMP (Auto Pilot Mega) and the Pixhawk1 autopilot that navigated a road course autonomously using dual GPSs and built-in IMUs. I won the Sparkfun AVC Peloton Class back in 2013 with an rc car equipped with an APM.

I suggest that you take a look at the Donkey Car python code if you want to navigate by “learned visual objects”. As I stated in a past post, I have a Rpi 3B+ running the Donkey Car python code and the idea is to train the Car (robot) by driving it visually over a course and then have it drive the course autonomously. The Donkey Car code uses OpenCV and TensorFlow to collect and process the visual images and then Keras to train the car’s software to drive the course autonomously.

For indoor navigation, I still feel that the RPLidar is all that is really needed to navigate a room by creating a room map and then using the map to go from a starting point to a goal end point (SLAM). Using the Pi Camera will give the user a visual view of the robot in operation as it navigates.

Regards,
Tom C

2 Likes

Hi All,

I am installing ROS on my GoPiGo3 which is using a 32GB SD card using this link to the ROS website for the installation of ROS Kinetic on Raspbian Strectch.

The first thing you should do is increase the Raspbian Stretch swap file by using nano to edit the /etc/dphys-swapfile swap file value (CONF_SWAPSIZE) from 100 to 1024 and then back to 100 after you have successfully installed ROS Kinetic.

During the execution of the commands in the “2.1 Setup ROS Repositories” section if you get a “not authenticated” message, then follow the command line instructions on adding a modifier to allow the download of "non-authenticated files.

During the execution of the commands in the “3.3 Building the catkin Workspace” section, I had to add the -j2 option as the default -j4 option hung during the installation of the #45 ros.cpp package.

If you do use the -j2 option, make sure that you continue to use it during any time you rebuild the “workspace” as the rebuild will probably hang again at the ros.cpp package build.

Otherwise the installation instruction worked as indicated.

And don’t forget that you have to install the GoPiGo3 Node.
Regards,
Tom C

2 Likes

Wow Thomas, Thanks.

The things folks do in ROS never ceases to amaze. I just watched unsupervised learning applied to driving a ROS on Raspberry Pi car (based on “eye in the sky” localization).

I have the feeling it might be possible for my GoPiGo3 to self learn to dock using the PiCam image, Distance sensor, odometer inputs with successful charging status as the goal pose based on the the fact that this fellow’s car learned that driving backward can achieve the goal. (My bot has to position accurately facing the dock, then turn 180 and back onto the dock.) BUT this sounds like a serious investigation.

So many avenues (too many) open up with a successful ROS GoPiGo3 install. Good luck, I’m rooting for you.

1 Like

@cyclicalobsessive,

Thanks for the kudos, much appreciated.

However, I am having an issue with the " Starting with ROS on the GoPiGo3 and the Raspberry Pi" instructions as there seems to be a problem with the CMake command and I am not savvy enough of a programmer to determine how to correct the problem so I have started a new post to ask for help.

Your link to the “Self Driving and Drifting RC Car using Reinforcement Learning…” looks quite similar to Donkey Car.

Regards,
Tom C

2 Likes

What did you choose to install in section 3.1?

1 Like

@cyclicalobsessive

Section 3.1? I used the ROS Wiki instructions to install ROS Kinetic. ROS Melodic is the latest, but the installation of the GoPiGo3Node assumes ROS Kinetic is installed.

Regards,
Tom C

1 Like

Yes, in the [u]ROS Kinetic on RPi Wiki instructions[/u] section 3.1:
ROS_KineticRPisec3

Did you do just ROS-Comm or the whole Desktop, (or some pieces-parts “variant”)?

1 Like

@cyclicalobsessive,

Ok, I selected the recommended ROS-Comm.

Regards,
Tom C

2 Likes

Did you by any chance run up against:

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
Traceback (most recent call last):
  File "./src/catkin/bin/catkin_make_isolated", line 12, in <module>
    from catkin.builder import build_workspace_isolated
  File "./src/catkin/bin/../python/catkin/builder.py", line 66, in <module>
    from catkin_pkg.terminal_color import ansi, disable_ANSI_colors, fmt, sanitize
ImportError: No module named terminal_color

To get around this I had to:

copy raw content of https://raw.githubusercontent.com/ros-infrastructure/catkin_pkg/master/src/catkin_pkg/terminal_color.py into 
the catkin_pkg

sudo nano /usr/lib/python2.7/dist-packages/catkin_pkg/terminal_color.py
1 Like

@cyclicalobsessive,

No, when installing with the -j2 option I did not encounter that problem. The problem that I had was at package #45 ros.cpp when using the default option of -j4.

Also, do not use “Starting with ROS on the GoPiGo3 and the Raspberry Pi” to install the GoPiGo3_Node as it is missing an initial, critical command string and has some other problems.

Use this link to install the ROS GoPiGo3_Node instead.

Regards,
Tom C

2 Likes

This is gory detail of how I successfully installed ROSberryPi Kinetic and the ROS GoPiGo3_Node on Raspbian Stretch. It would have gone on Raspbian For Robots even better (Remote Desktop works better).

2 Likes

@cyclicalobsessive,

Nice work, well documented!

Regards,
Tom C

2 Likes

@cyclicalobsessive,

I have successfully installed the ROS Desktop option on a 16GB SD card with Raspbian Stretch OS running on a spare Rpi 3B+.

It took two hours for the package install and then four and a half hours for the build. The build function built 191 packages.

I plan to run my RPLidar A1 M8 following these instructions to make sure I get valid sensor returns. The RPLidar Node will not display sensor data when built with ROS minimum build.

Regards,
Tom C

2 Likes

@cyclicalobsessive,

Shouldn’t this command string, from your installation instructions, have also created a GoPiGo3 directory in the Dexter directory as well as updating GoPiGo3: sudo curl -kL dexterindustries.com/update_gopigo3 | bash| ?

There is only a DI_Sensors and a lib directory in the Dexter directory.

Regards,
Tom C

1 Like

I’m confused - you had Dexter/GoPiGo3 installed already on the GoPiGo3 Node card. Is this a new card you are building?

(I have in my notes to use sudo curl … but give it a try without.)

First reboot
Then vnc into bot
open cmd window (try without the sudo)

curl -kL dexterindustries.com/update_gopigo3 | bash

Then reboot

What happens?

If still no ~/Dexter/GoPiGo3 folder, then try it with sudo curl …

If still no, make absolutely sure you don’t have a typo in the command ( you have an extra vertical bar and question mark in the command you pasted - should not be there)

If still no, boot up with a RaspbianForRobots image and make sure the GoPiGo3 board is being seen by the Raspberry Pi (run the desktop control panel)

There is one other possibility, when you were doing the update, some internet packet failures may have occurred. Running it again may fix that. I have at times had difficulty updating with the built-in wireless and actually had to add a WiFi dongle, and reboot till the dongle comes up as wlan0, and then do the update. (to see what ip address is wlan0 and wlan1 use

$ ifconfig
1 Like

@cyclicalobsessive

This was a fresh build using only Raspbian Stretch and ROS basic as in your instructions.

I executed curl -kL dexterindustries.com/update_gopigo3 | bash after building the ROS basic install.

The “?” was there because I was asking a question. The command would not have executed with the “?” in the command line.

Will give your instructions above a try.

Regards,
Tom C

1 Like

@cyclicalobsessive,

Rerunning curl -kL dexterindustries.com/update_gopigo3 | bash created the GoPiGo3 sub directory in the Dexter directory.

I suspect that if you have not installed R4R, then you have to run the curl -kL dexterindustries.com/update_gopigo3 | bash twice, once to create the Dexter directory and then again to install GoPiGo3 in its own sub directory.

By the way, I still have the problem of not being able to copy and paste into the VNC Viewer Raspbian Desktop from Windows so I still have to type everything in manually to use the VNC Viewer Raspbian Desktop.

I may have found a solution here that will modify the tightvncserver xstartup file to allow copy and paste into the VNC Viewer Raspbian Desktop.

Update: After following the instructions in the link above, I rebooted, started tightvncserver, and then VNC’ed into the Raspbian Desktop and found that I can use the mouse to copy and paste and to use all of the other commands in the CLI!

I tried to run the GoPiGo3 Control Panel, but got a message saying that the GoPiGo3 Directory did not exist. However it does exist in Dexter and the path to the GoPiGo3/Software/Python/Examples/Control_Panel does exist along with control_panel_gui_3.py code and the path is correct in the Desktop GoPiGo3 Control Panel shortcut.

Attempting to run python3 control_panel_gui_3.py resulted in the following:
python3 control_panel_gui_3.py
Traceback (most recent call last):
File “control_panel_gui_3.py”, line 14, in
import wx
ImportError: No module named ‘wx’

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “control_panel_gui_3.py”, line 16, in
raise ImportError(“The wxPython module is required to run this program”)
ImportError: The wxPython module is required to run this program
python3 control_panel_gui_3.py
Traceback (most recent call last):
File “control_panel_gui_3.py”, line 14, in
import wx
ImportError: No module named ‘wx’

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “control_panel_gui_3.py”, line 16, in
raise ImportError(“The wxPython module is required to run this program”)
ImportError: The wxPython module is required to run this program

Comments?

Regards,
Tom C

1 Like