A do-it-yourself Turtlebot

I am teaching a class to Computer Science students (clever software but not hardware types). I thought it would be a good experience to actually build or own turtlebot-like robot, not literally from a kit, but from a pre-acquired set of parts that I knew would go together. It would give them a more visceral experience of building. Our goal is to do mobile navigation with ROS, so we are also using off-the-shelf Robotis Turtlebot3 but they are very small and a “real” Turtlebot2 costs like $2K. Any links or suggestions from those of you who have traveled the same road?

(Not sure if this question should’ve been on answers.ros.org.)

Hi pitosalas, while not exactly the same specs as Turtlebot, I am working on a ROS + OpenCV Raspberry Pi based robot kit called ROSbots - www.rosbots.com.

It is a differential drive robot that has a camera, wheel encoders, and a motor driver, and off course runs ROS and OpenCV pre-installed.

Would that fit your needs?

Jack

Hi Jack

Yes that’s along the lines but I am looking for something a bit bigger and with a more powerful main computer. Do you have any other leads? Thanks!

Pito Salas
Brandeis Computer Science
Volen 134

If you don’t want to build the TurtleBot2 from a kit, the full designs are available to build it from scratch at: http://www.turtlebot.com/build/ Many people have done that. And while you’re at it you can modify the design for your usecase or application.

Hi Pito,

I apologize if you had already thought of this but if you can tolerate the network latency and your robot isn’t too sensitive to slightly “late” sensor data (but still accurately timestamped), you can always have a more powerful computer (ie laptop or desktop) run the more computationally heavy ROS nodes as secondary processors - no need to have these processors actually on the robot (which just sucks up more power and requires heavier duty motors). Just another architectural thought to help your students keep cost down while still being able to build their own full fledged ROS robot.

Happy to continue to hear your thoughts, and “discourse” (harhar!).

Cheers
Jack

The TB2 “full designs” look quite intimidating. Did you say that the components are available to buy or is the idea that I literally 3d print the parts as specced out there?

Hi Jack. Yes I was aware of that option but I also am aiming (maybe mistakenly) for building up the experience and skills to allow us to make a robot that will be able to carry a small load (1kg say) and eventually go outdoors. I know that’s a lot. But that’s why I am looking for something with a base the size of an iRobot create or something else… Thoughts?

Hi Pito,

You can check out https://linorobot.org . It’s not exactly a Turtlebot but it offers a “blueprint” for building a variety of DIY ROS compatible robots (2WD, 4WD, Mecanum Drive, and Car-Like steering) . The platforms are computer agnostic so you can choose a much capable board.

Hope this helps. Cheers!

You can buy individual parts for the Turtlebot 2 from Dabit Industries for around $800/kit plus the cost of a computer

For a cheaper cost, you can grab a iRobot Create2 base ($200), iRobot Create2 Mounting Kit ($125), Orbbec Astra ($150), and some computer.

As for computers:

For SBCs, you can take a look at:
Raspberry Pi3: https://www.amazon.com/dp/B01CMC50S0
ASUS Tinker Board: https://www.amazon.com/dp/B06VSBVQWS
ODROID-C2: https://www.amazon.com/dp/B01LDLBBY8

As for laptops, you can check out the following recommended Lenovo laptops:
refurbished x240 at $419:


Lenovo 11e at $369: https://www.amazon.com/dp/B0793BXL8X

2 Likes

Hi Pito, you got some great suggestions from the community. Last but not least, while not exactly a kit but definitely a platform you can build on (capable of huge payload) - check out the Magni platform from the awesome folks at Ubiquity Robotics -
https://ubiquityrobotics.com

Jack

Besides the Ubiquity platform, you can download both their RPi sd card or Virtual Box images. The small Loki platform may become available this Spring if crowd funding is successful. Also check out the SV-ROS github for how to convert a Neato Botvac to a Turtlebot like platform. I published two articles in Servo Magazine entitled Roll your own Turtlebot. So I think it is easiest to go with an existing platform. Putting together a platform from scratch, with motors, encoders and controllers from scratch just takes too long.

Some of the autonomous racing folks are building around a rc car platform, but I don’t think that’s good for education. I believe Cousera used the Neato in their course on intro to autonomous robots.

Disclaimer, I coordinate SV-ROS, and am a member of Ubiquity Robotics

Good luck. The only way to get better at robotics is to build better robots.

1 Like

@anfederman - do you happen to have pdfs of your two articles? Reading them online in servo is hard :slight_smile: Thanks!

I can send you the botvac article plus youtube videos of interest. I have to look for the original Roll Your Own Turtlebot article. (about 3 laptops ago!) Sending raw odt:

Roll Your Own Turtlebot Part II

By Alan N. Federman (Dr. Bot)

Several years ago I wrote a “Servo” article showing how you could convert an old Roomba vacuum cleaner and a Microsoft Kinect into a robot training platform capable of teaching yourself ROS, the Robot Operating System from Willow Garage. Willow Garage has now closed, and Clearpath Robotics can sell you a complete brand new Turtlebot for about $2100. Recently OSRF and Robotis has announced a less expensive Turtlebot, but this is still a bit out of the range for most serious amateurs What if you could easily build the equivalent of a Turtlebot for under $300? I am going to show you how easy it is to convert a Neato robotic vacuum cleaner into a fully functional training platform in less than a day. Very little hardware skill or special tools are needed. Everything is available COTS, and the software is all Open Source.

What you need to get, if you don’t already have them:

A laptop or wifi connected desktop running Unbuntu. This should be at least 14.04 and running ROS Indigo, but it would be better to upgrade to the same versions if running cross platform. ROS versions are usually matched to Ubuntu releases.
A Neato Botvac or equivalent (I have seen used XV-12s for under $200, and new basic models for under $300)
A Raspberry Pi 3 (camera is optional but highly recommended) ~$50
16 Gig Sd Card for Pi ~$10
Rechargeable 5v power pack (Those for recharging cell phone are fine) ~$20
USB cables for battery pack to Pi (micro) and Pi to Botvac (can be mini or micro depending)
Small scraps of aluminum or a tin from can.
Small scraps of flat plywood or acrylic
Velcro, double sided tape or other easy to remove adhesives

Step 1 Modifying the Botvac

Depending on your model, you may chose to ignore any hardware modifications entirely. Then if you mess up, you can just use it to cleanup your house! I removed the brushes, the dust bin and used a stip of metal to disable the bin detector switch (See Photo 1)

STEP 2 Preparing the Pi and attaching to Botvac

Artfully arrange the Pi, battery pack and optional camera on a 6” by 6” flat piece of wood or plastic. Attach with double sided tape. On the bottom of the assembly, attach a piece of Velcro or similar quick release fastener. Attach the matching Velcro to the top of the Botvacs Lidar unit. Lastly plug in the USB cables. You might want to charge your batteries. It would be a shame to have all the software loaded and than have to wait to test it.

STEP 3 Loading the software onto the PI.

At the time of this writing, an official version of Ubuntu 16.04 was not available fro the Pi 3. I used the Ubuntu Mate (pronounced “ma tay”) version. Instructions for loading Mate are found here:

And follow the instructions for 16.04 – Raspberry PI 2/3.

You can use an HDMI TV and attached keyboard to initially set up the Pi, using the Graphical Environment. It also helps to have a direct Ethernet connection when doing the initial set up, because you need to load a lot of software initially. Using the Desktop, it is pretty easy to get WiFi working.

I suggest creating an 8 gig image on a 16gig SD card. After the initial software is on and you can bring up a graphical desktop, follow the intro screen and click on Raspberry PI info – it will enable you to expand the image to 16gig. It also will allow you to configure your WiFi. I suggest you still use the Ethernet Connection, but you can at this point open a terminal, type sudo graphical disable, and then use ssh over WiFi to complete the installation.

Once Ubuntu is working, continue loading ROS onto the PI,

(
You may have to maintain your Ubuntu distributions; the following commands are useful:

sudo apt-get update
sudo apt-get upgrade (must run both in sequence)

and sometimes to clear dpkg errors:

sudo dpkg –configure -a

)

Summary:

sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full

(if -full is not available, just get ros-kinetic-desktop)

sudo rosdep init
rosdep update
echo “source /opt/ros/kinetic/setup.bash” >> ~/.bashrc
source ~/.bashrc
sudo apt-get install python-rosinstall

ROS Catkin Workspace installation

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd …
catkin_make

And then edit .bashrc to change the source /opt/ros/kinetic/setup.bash to ~/catkin_ws/devel/setup.bash
also it helps to add the following line if the Pi is hosting the robot:

export ROS_MASTER_URI=http://$HOSTNAME.local:11311

Where “$HOSTNAME” is the name you have in the /etc/hostname file

Your /etc/hosts file should look like this:

127.0.0.1 localhost
127.0.1.1 “your hostname”

The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

This will support ROS networking.

You also may wish to install “chrony” to synchronize the time different ‘nodes’ are running at, this is because the Pi doesn’t have a real time clock, and if your Wifi is not connected to the Internet, the Pi will have the wrong time.

Next I suggest you load the following ROS packages into your catkin_ws/src workspace:

ROS by Example part one (RBX1) from Patrick Goebel

https://github.com/pirobot/rbx1 This should go on both your laptop and the PI

and

the SV-ROS Botvac nodes courtesy of mostly Mr. Ralph Gnauck

follow the instructions in the README files to install and test.

Example

cd ~/catkin_ws/src

git clone https://github.com/SV-ROS/intro_to_ros (this also should go on both)

cd …

catkin_make

TESTING

On the laptop:

roscd teleop

If nothing is found,

sudo apt-get install ros-kinetic-teleop-twist-keyboard

On the Botvac, turn on the pi, and sign on via a terminal window from the laptop.

I like to launch a custom base only node on the Pi

roslaunch bv80bot_node bv80bot_njoy.launch (code included at the end of this article)

Then you should hear the Neato Lidar unit start to spin.

On the Laptop open up another terminal window and

set up the ROS_IP and ROS_MASTER_URI environment variables via the ‘export’ command.

Test to see if you are getting topics:

rostopic list

and scans

rostopic echo /scan

Finally launch teleop

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

You should be able to drive your robot.

If you open RVIZ in another window, you should see the LIDAR returns.

What Next?

With just this simple robot, you can begin to learn how to accomplish advanced robotics tasks and begin to learn the subtleties of autonomous navigation. Because of the Neato’s XV-11 LIDAR unit, you can simultaneously accomplish localization and obstacle avoidance. Support for webcams and the Raspberry Pi Camera are available through ROS nodes. I have gotten teleop via a blue tooth joystick to work through the laptop, but not directly on the Rpi. Please note that though the Rpi has 4 USB slots, there is seldom enough power to run more than the Botvac interface and a WiFi dongle. A typical USB webcam will draw too much current and crash the Rpi.

With a WiFi connected phone and some ingenuity, you would be able to issue voice commands. So you can call up your home robot from the office and ask it to find the cat. The Botvac is a little underpowered for bringing you a snack from the kitchen, but when the next more powerful platform is available, you’ll know just how to program it.

Figures and Code

LISTING 1 /catkin_ws/src/intro_to_ros/bv80bot/bv80bot_node/launch/include/bv80bot_njoy.launch

LISTING 2 Terminal output from launching startup nodes:

roslaunch bv80bot_node bv80bot_njoy.launch &

rostopic list

/button
/cmd_vel
/cmd_vel_mux/active
/cmd_vel_mux/parameter_descriptions
/cmd_vel_mux/parameter_updates
/joint_states
/mobile_base_nodelet_manager/bond
/odom
/raw_cmd_vel
/robot_cmd_vel
/rosout
/rosout_agg
/scan
/sensor
/smoothed_cmd_vel
/teleop_velocity_smoother/parameter_descriptions
/teleop_velocity_smoother/parameter_updates
/tf
/tf_static

Figures:

https://drive.google.com/open?id=0B2Cigsr5YM6ldXZjNTAxeGdYWjg Fig 1 XV-12 dustbin removed

https://drive.google.com/open?id=0B2Cigsr5YM6lcHh3di00dTFYNTQ Fig 2 XV-12 Name Plate

https://drive.google.com/open?id=0B2Cigsr5YM6lSnAxT3JIc210U2c Fig 3 XV-12 Brush Removed

https://drive.google.com/open?id=0B2Cigsr5YM6ldFhYZ3JEcXdUUnM Fig 4 RPi 3 mounted

Youtubes of Turtlebot I from create base and voice control ~2013-2014? :

Other Youtubes of interest:

https://www.youtube.com/watch?v=Tzk9020D5x4 Botvac 2015

https://www.youtube.com/watch?v=F-hNlJfmdPI&t=100s Magni 2016

https://www.youtube.com/watch?v=w-Vk1Lcp6_0 Loki 2015

Very interesting and thank for your information. I am interested in building a robot that can carry a larger weight (>100kg). But I am lost when Raspberry Pi control the motor because, in comparison with Turtlebot, this robot will have a more powerfull motor. In your article it does not appear any other MCU, so my question is how is the motor controled?
Thank you.

The Botvac has its own microprocessor, motor drivers, etc. The Pi connects via a USB cable. There is no interface required. This was not the case on the original Turtlebot 1 which required a USB to serial TTL converter.

I am going to make your project and i am a beginner in ROS can you provide more details to build this project