Roomblock: a Platform for Learning ROS Navigation With Roomba, Raspberry Pi and RPLIDAR(转)

What is this?
"Roomblock" is a robot platform consists of a Roomba, a Raspberry Pi 2, a laser sensor(RPLIDAR) and a mobile battery. The mounting frame can be made by 3D printers. ROS navigation system enable to make a map of rooms and use it to reach to the goal autonomously.
Who need this?
Anyone who want to learn the cutting-edge technologies of robotic navigation, mapping, and autonomous driving. This robot can be built easily and lower cost than other commercial platforms. ROS is now de facto standard software system for robotic research field. This movie shows what is possible with ROS navigation system.
Step 1: What You Need





Roomba
Roomba 500, 600, 700 and 800 series are available to build this system. You can buy one from local retailers or iRobot online store. It is worth to buy a Roomba to clean your room, of course!
Caution:Roomba 900 series are not available for this system, because they have no serial port.
Raspberry Pi
You can use Raspberry Pi 2 Model B. Raspberry Pi 3 may be available for this system, but not supported in this document.
USB WiFi dongle
Raspberry Pi 2 has no WiFi interface. You need a USB WiFi dongle for wireless connection. Our choice is this product, but this may only be available in Japanese market.
We found this product is a bit problematic with newer linux kernel. If you have trouble in using this device, please consult GitHub page.
This official product would be more convenient choice, however, we haven't tried with it.
RPLIDAR A2
This is a low-cost LIDAR(Laser Imaging and Ranging) sensor. It measures the distance to the object in 360 degrees around. It is a key device for robotic mapping and navigation.
USB serial cable
If you already have a USB cable for Roomba interface, you can use it. If not, we recommend to modify this USB-serial cable for creating one.
Mobile battery
Raspberry Pi and RPLIDAR are driven by a mobile battery. We choose this product, however, you can choose anything with similar size and capacity.
Local PC
You need a PC installed Ubuntu and ROS for processing ROS client and user interface. The PC needs to be on the same LAN with Raspberry Pi on the robot. You can log in the Raspberry Pi via SSH.
Joy pad (Optional)
If you have a joy pad for PC, you can use it to control the robot smoothly. But don't worry, if you don't have any joy pads, you can still use the keyboard to control the robot.
Raspberry Pi camera module (Optional)
If you have Raspberry Pi camera module, you can attach it to the system. You can use it to tele-operate the robot with first person view.
Step 2: Build a Base Frame





3D printing
The base frame is a shelf-like structure designed to be mounted on the Roomba. You can download 3D printable data (STL) from Thingiverse.
We used UP! plus2 and ABS filament, "normal" setting with 0.2mm pitch.
Assembling
- Using adhesive to the bottom of pillars makes it easy to assemble.
- A wide rubber band is attached for fixing the mobile battery.
- M2.5 screws are used to fix the Raspberry Pi.
- M3 screws are used to fix RPLIDAR to the plate.
- Use pieces of Velcro tape to fix it on Roomba top.
Step 3: Build a USB-serial Cable (Optional)




USB-serial cable
If you don't have USB-serial cable for Roomba, you can build it easily with this product.
Notice that the Roomba's inerface is TTL (5V).
Connector
You need a mini-DIN 8 pin connector for the Roomba's serial interface. Actually Roomba's connector is mini-DIN 7 pin, however, it is much easier to buy a 8 pin than 7 pin connector.
Soldering
Solder the serial cable to the 8 pin connector. Check the connection by the attached picture, and the document of Roomba open interface specification.
Please note, it is safe to connect Vcc(Red) and RTS(Green) for avoiding the hardware flow issue.
Step 4: Setup Raspberry Pi Camera Module (Optional)


If you have Raspberry Pi camera module, you can attach it to Raspberry Pi. This is optional for learning navigation, however, it is fun to get a view from the robot eyesight.
The camera mount part is also included in frame data on Thingiverse. The camera module can be fixed with four M2 screws.
Step 5: Setup Local PC

Install Ubuntu
Install Ubuntu 16.04 desktop following the official page
Install ROS
Plase consult ROS official page. Install Kinetic desktop full packages.
Install Roomblock ROS package
You need to install roomblock package from source code. The source code of the package is on GitHub.
Please follow the instruction in README.md.
If you have any problem or question concerning the software, please make an issue on GitHub Issues so that we can track the problems efficiently. Please avoid to post them on Instructables.
Step 6: Setup Raspberry Pi

Install Ubuntu
Install Ubuntu 16.04 to the Raspberry Pi following the install guide:
Install ROS
Install ROS Kinetic following the install guide:
Install Roomblock ROS package
You need to install roomblock package from source code. The source code of the package is on GitHub.
Please follow the instruction in README.md.
If you have any problem or question concerning the software, please make an issue on GitHub Issues, so that we can track the problems efficiently. Please avoid to post them on Instructables.
Raspberry Pi camera module(Optional)
If you have a Rasberry Pi camera module, you need to install libraspberrypi-dev. Please consult README.md in Github.
Step 7: Tele-operation


Bring up the base system on Raspberry Pi
First of all, you need to bring up the sysem. On the Raspberry Pi terminal, launch the basic system as:
$ export ROS_IP=IP_ADDRESS_OF_RASPBERRY_PI
$ roslaunch roomblock_bringup roomblock.launch
RPLIDAR start to spin, and now you can connect to the robot ROS master from your local PC.
Tele-operation from local PC
You can use a joy pad to operate the robot. If you have a joy pad of XBox, you can use this launch file. Otherwise, you may need to modify the launch file to fit your joy pad. Plase consult the ROS wiki pages for detail.
$ export ROS_MASTER_URI=http://IP_ADDRESS_OF_RASPBERRY_PI:11311<br>$ roslaunch roomblock_bringup teleop.launch
Now you can control the Roomba with joystick.
Instead, you can use a keyboard.
$ export ROS_MASTER_URI=http://IP_ADDRESS_OF_RASPBERRY_PI:11311<br>$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
Please consult the ROS wiki pages for detail.
Step 8: Launch the Mapping Software


Bring up the mapping software on local PC
Bring up the mapping software to create the map around the robot.
$ export ROS_MASTER_URI=http://IP_ADDRESS_OF_RASPBERRY_PI:11311<br>$ roslaunch roomblock_mapping gmapping.launch
Now you can see Rviz(visualization software). Operate the robot around the room to create a map of the room.
You can consult the ROS wiki page for mapping system.
Step 9: Launch the Autonomous Navigation


Bring up autonomous navigation software
Now you can start autonomous navigation system on the local PC as:
$ export ROS_MASTER_URI=http://IP_ADDRESS_OF_RASPBERRY_PI:11311<br>$ roslaunch rolomblock_navigation amcl.launch
You can use Rviz to specify the goal. The robot should go to the goal autonomously.
Please consult the ROS wiki page for the autonomous system.
Have fun!
If you have general questions or problems about ROS, please consult the ROS wiki. We cannot answer to general questions on ROS.
If you have any problem or question concerning the Roomblock software, please make an issue on GitHub Issues so that we can track the problems efficiently. Please avoid to post them on Instructables.
Roomblock: a Platform for Learning ROS Navigation With Roomba, Raspberry Pi and RPLIDAR(转)的更多相关文章
- Installing ROS Indigo on the Raspberry Pi
Installing ROS Indigo on the Raspberry Pi Description: This instruction covers the installation of R ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- Learning ROS for Robotics Programming - Second Edition(《学习ROS机器人编程-第二版》)
Learning ROS for Robotics Programming - Second Edition <学习ROS机器人编程-第二版> ----Your one-stop guid ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- IDEA 2018.2.5最新版破解到2100年图解教程
先看下我破解后的效果图 把下载的破解补丁放在你的idea的安装目录下的bin的目录下面(如下图所示),本文示例为F:\ProgramFiles\JetBrains\IntelliJ IDEA 2018 ...
- python 3编写贴吧图片下载软件(超简单)
业余时间初学者作品,大佬勿喷,代码都很简单. py文件打包成exe教程:python3.7 打包成exe程序, 本程序体验下载地址:python编译的贴吧图片下载工具 先上效果图 启动后是这样的: 按 ...
- DWM1000 测距原理简单分析 之 SS-TWR
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 超宽带测距,使用的TOF(time of fly) 的方式,也就是计算无线电磁波传输时 ...
- js 把 json 转为以 ‘&’ 连接的字符串
/** * URL编码; * @param {参数} param */ export function toParams(param) { var result = "" for ...
- __x__(32)0908第五天__Photoshop的基本操作
1. 设置 Photoshop 的单位为 像素px 2. 标尺 显示与隐藏 Ctrl + r 3. 放大与缩小 Ctrl + 1 放大到100% Ctrl + 0 适应屏幕 Alt + ...
- 11. cookie_session_原生ajax_readyState的值_同源策略_跨域_jsonp的使用
1. cookie 浏览器存储技术.(服务器将少量数据交于浏览器存储管理) 作用: 存储数据, 解决 http 协议无状态问题 工作流程: 浏览器发送请求给服务器,请求登录 服务器返回响应给浏览器,此 ...
- ubuntu16.04中supervisor安装与简单使用(转载)
ubuntu16.04中supervisor安装与简单使用 supervisor 进程管理是可以让进程在后台运行,而不占用控制台影响使用 1. 安装 supervisor sudo apt insta ...
- Python 面试中可能会被问到的30个问题
第一家公司问的题目 1 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译.这样解释型语言每执行一次 ...
- mysql 查询 练习题及答案
CREATE DATABASE school;USE school;/*1.创建student表格*//*id为主键 非空 唯一 */CREATE TABLE student (id INT(10) ...
- Django学习之django自带的contentType表 GenericRelation GenericForeignKey
Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...