Top 10 Robot Operating System (ROS) Books

Top 10 Robot Operating System (ROS) Books

This post shows all of the world’s existing ROS books, including the latest version and different language versions:

(Click on the picture for more information and to buy books)

  • Programming Robot with ROS

 

  • A Gentle Introduction to ROS

 

  • Learning ROS for Robotics Programming – Second Edition

 

  • ROS IN 5 DAYS Book Collection
    ros-basics

 

  • ROS Robotics By Example

 

  • ROS Robotics Projects

 

  • Mastering ROS for Robotics Programming – Second Edition

 

  • Effective Robotics Programming with ROS – Third Edition

 

  • Robot Operating System (ROS): The Complete Reference

 

  • A Systematic Approach to Learning Robot Programming with ROS

 

ROS Resources in other languages:

  • Robot Operating System Testing Technology(Chinese Edition)

 

  • ROS Robot Programming – Second Edition (in Korean): ROS 로봇 프로그래밍
  • ros-book-in-korean

 

  • ROS Robot Programming (in Japanese): Free PDF Download
    ros robot programming japanese

 

  • Robot Programming by ROS (in Japanese) ROSではじめる ロボットプログラミング
    ros books japanese

 

  • ROS Robot Programming (in Korean) ROS 로봇 프로그래밍

ros robot programming in korean

 

  • ROSBook KR (in Korean)

ROSBook KR korean

 

  • A Gentle Introduction to ROS (Chinese Version)机器人操作系统(ROS)浅析

ros

 

  • 基于ROS的机器人理论和应用

ros chinese

 

  • ROS机器人程序设计

ros chinese3

 

  • 机器人操作系统ROS原理与应用

ros chinese4

 

  • 开源机器人操作系统 – ROS

ros chinese5

 

ROS Q&A | Using git with ROS Development Studio

ROS Q&A | Using git with ROS Development Studio

 

You can synchronize your ROS projects developed in the ROS Development Studio with a git.

Sometimes, you must work in cooperation with other developers. Hence you will have to synchronize the work of the whole teamby means of a git. This video will show you how to use git with the ROS Development Studio

ROS Q&A | Move a certain distance, turn, then move (using odometry topic)

ROS Q&A | Move a certain distance, turn, then move (using odometry topic)

Hello Developers,

In a quick approach to make a robot move, we can start using some determined points or behaviors. In this post, we are going to test a simple algorithm that makes Turtlebot 2 performs a movement in a straight line, turn right and go straight again. In order to achieve a given point, we are going to use the Odometry, so the robot can localize itself while moves.

(more…)

ROS Q&A | Merge Laser Scans into single PointCloud

ROS Q&A | Merge Laser Scans into single PointCloud

 

I have been playing around with the laser_assembler ROS package and managed to make it work for assembling several laser scans into a single point cloud, and publish that point cloud on a topic.

What I have done is the following:
1- I created a package that will handle all the logic
2- On the launch file of that package, I launch the laser_assembler properly configured and my own node
3- My node subscribes to the service of the laser_assembler that provides point clouds
4- Then it calls the service, gets the response, and then publishes on a topic as a single PointCloud2 message

 

Using Python to do the conversion simplifies a lot. Let’s see how to do that using the laser_geometry package.

First, you need to launch the laser_geometry package from a launch file, properly configured. Here a suggested launch file:

<launch>
<node type="laser_scan_assembler" pkg="laser_assembler"
    name="my_assembler">
<remap from="scan" to="laser_scan"/>
<param name="max_scans" type="int" value="400" />
<param name="fixed_frame" type="string" value="my_robot_link_base" />
 </node>
  <node type ="laser2pc.py" pkg="laser_to_pcl" name="laser2pc"/>
</launch>

That file launches the laser_geometry package indicating that the frame from which the transform will be done is the my_robot_link_base (that is whatever tf link of your robot you want the point cloud to be refered from). Another parameter is the max_scans which indicates the max number of last scans that will be take into account for the computation of the point cloud ( this is useful in case your laser is rotating, so you can generate a full 3D cloud).

The launch file above also launches a second node that is the one you have to create to get the data and publish it into your selected topic. What should be the code of such a node? Check the following:

#!/usr/bin/env python

import rospy 
from laser_assembler.srv import AssembleScans2
from sensor_msgs.msg import PointCloud2

rospy.init_node("assemble_scans_to_cloud")
rospy.wait_for_service("assemble_scans2")
assemble_scans = rospy.ServiceProxy('assemble_scans2', AssembleScans2)
pub = rospy.Publisher ("/laser_pointcloud", PointCloud2, queue_size=1)

r = rospy.Rate (1)

while (True):
    try:
        resp = assemble_scans(rospy.Time(0,0), rospy.get_rostime())
        print "Got cloud with %u points" % len(resp.cloud.data)
        pub.publish (resp.cloud)

    except rospy.ServiceException, e:
        print "Service call failed: %s"%e

    r.sleep()

The code shows how to subscribe to the assemble_scans2 service. That is the one that will provide the point cloud on its answer. The code also shows that the point cloud will be published on a topic of type PoinCloud2. basically, the while loop what it does is, first, call to the service, then publish the answer of the service into a topic.

I have created a video describing step by step and code solution. In case you are interested, you can find it below

 

This post was created as an answer to the following question in ROS Answers Forum: Laserscan to PointCloud

Pin It on Pinterest