The software that runs on the JetsonBot Jetson TK1, we will call ‘JetsonBot Robot Software’. Any software that runs remotely from the robots’ Jetson, we will consider to be part of the Robot Operating Center, or ROC. With technical things, it’s important to make up acronyms whenever possible to hide any trace of common sense nomenclature. It helps keep the simple folk out. The installation of the software is straightforward. Looky here:
As we have talked about before, the JetsonBot uses the Robot Operating System (ROS) as its underpinnings. In addition, the JetsonBot software stack builds upon the ROS TurtleBot stack.
The TurtleBot is currently in its second generation. The first generation was built upon an iRobot Create mobile base, a Microsoft Kinect for vision processing, and a laptop or notebook for computer processing. In the second generation, a Yujin Kobuki mobile base was substituted for the Create. Because the Microsoft Kinect was discontinued, most people have been using an ASUS Xtion RGBD camera as a substitute. Unfortunately the Xtion has recently been discontinued also, it remains to be seen what the replacement will be as the RGBD camera.
For the JetsonBot, the decision was made to use the iRobot Create 2 base which is the successor to the original Create. While the driver software is not wildly different from the original Create, it still took some work (mostly an inordinate amount of swearing) to integrate the changes into the TurtleBot stack. Most of these changes take place in the ‘turtlebot_create’ repository. As a temporary placeholder, an ASUS Xtion camera is used on the JetsonBot.
A prerequisite is to have a fresh L4T OS installation and then install ROS Indigo. If you are still in the same Terminal window:
$ source ~/.bashrc
$ cd ~/
to refresh some of the environment variables the ROS installation added.
Installation consists of a couple of scripts. First open a Terminal and download the installJetsonBot repository:
$ git clone https://github.com/jetsonhacks/installJetsonBot.git
Switch over to the installJetsonBot directory and create a catkin workspace in the directory ‘~/jetsonbot’:
$ cd installJetsonBot
After the workspace is created, install the JetsonBot TurtleBot software:
This installs the necessary TurtleBot software, as well as the code needed for integrating the Create 2 into the software stack. Note: Do not use the ‘sudo’ command on these scripts, it gets thing all confused.
Next, configure the JetsonBot itself.
This will add the appropriate ROS related environment variables to the ~/.bashrc script, the script which is called whenever a Terminal is opened. You will have to edit bashrc:
$ gedit ~/.bashrc
So that you can uncomment the ROS_IP export line and set the address. The address should be the IP address of the Jetson.
After that, you will either have to ‘source’ bashrc:
$ source ~/.bashrc
which has the effect of reloading the bashrc file into the current Terminal environment, or close the Terminal and open up a new one. At that point you should be good to go.
There are two points of discussion. First, the TurtleBot software stack is loaded from the ROS repository. Unfortunately this currently has the effect of unloading the OpenCV4Tegra library which we will have to address at some later date. After TurtleBot is installed, the modified source code of the TurtleBot library is loaded into the jetsonbot/src directory and compiled with a ‘catkin_make’ command. This has the effect of the modified coded overriding the previously loaded code when the environment is setup correctly. Because currently the only software running on the Jetson is the robot software, the file ~/.bashrc is modified to call ~/jetsonbot/devel/setup.bash which adds the jetsonbot directory as the first place for ROS to look for apps and scripts to execute. You can think of the JetsonBot modified code as overlying the TurtleBot code.
The second point is that the TurtleBot uses environment variables to pass configuration information. For example, if you look at ~/.bashrc again you will see the line:
which helps the TurtleBot software determine which file to look for in the robot_description directories. This information is used to associate the hardware drivers (such as the create2 driver) with their virtual counterparts. That way any high level software only needs to write to the TurtleBot API, and lets the API take care of the translation to lower levels of hardware.
Do not let the simplicity of installation fool you. There is a rich set of software that is now running on the JetsonBot. Because of the nature of ROS, all of the computing can happen in a distributed environment which means that there is an almost endless variety of tasks that can be accomplished by the simple little JetsonBot.
The video above was created after the following sequence:
- L4T 21.4 onto the Jetson TK1 (in a procedure similar to this write up except using JetPack 1.2).
- The postFlash procedure was followed using an updated for L4T 21.4 postFlash script.
- The USB FTDI Module was installed as described here
- Robot Operating System (Indigo) was installed as described here.