Programming with Robot Operating System in Pi – Part 2 [QUICK GUIDE]

In the last article I showed you how to setup the basic ROS in Armbian Orange Pi combination. This time we will get a bit further in getting to understand some basic concepts and run hello world code as well. For make this you need to have the following hardware

Hardware required:

Orange Pi Zero

https://www.banggood.com/Orange-Pi-Zero-Expansion-Board-Interface-Board-Development-Board-p-1115982.html?p=W214159476515201703B

Orange Pi Zero Interfaceboard

https://www.banggood.com/Orange-Pi-Zero-H2-Quad-Core-Open-source-512MB-Development-Board-p-1110210.html?p=W214159476515201703B

SD Card

https://www.banggood.com/8GB-MicroSD-TF-Memory-Card-For-RC-Quadcopter-Camera-p-68888.html?p=W214159476515201703B

USB TTL

https://www.banggood.com/USB-To-TTL-Debug-Serial-Port-Cable-For-Raspberry-Pi-3B-2B-COM-Port-p-1055396.html?p=W214159476515201703B

For getting start you need to know the basics of python.

The core ROS concept is based loosely on Data Distribution Service. It consist of a Data distribution server or DDS which act as a middleman for passing information between clients. The DDS in ROS is called ROS Master or otherwise called roscore and the clients are called nodes. The roscore offers facility to publish/subscribe information to a topic. It also provides an XMLRPC-based API for Remote procedure call.

rostopic

Apart from the mentioned core services it also provides parameter server and logging server. When developing a robot all you need to do is design how to different nodes should communicate and which node does what operation and etc. Each node can be writting in any language and there is already a list of languages ros clients are developed  in languages  such as c++, Python, Lisp, Ruby, Go, Nodejs, R etc.

rostopic1

The roscore needs to be run before you run your client and if you have already configured your bash as shown in the first tutorial, then roscore command will be available to you.


code@orangepizero:~$ roscore
... logging to /home/code/.ros/log/3f3ad618-a2f2-11e7-90c4-dc446db60d69/roslaunch-orangepizero-6575.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://orangepizero:35649/
ros_comm version 1.12.7

SUMMARY
========

PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.7

NODES

auto-starting new master
process[master]: started with pid [6586]
ROS_MASTER_URI=http://orangepizero:11311/

setting /run_id to 3f3ad618-a2f2-11e7-90c4-dc446db60d69
process[rosout-1]: started with pid [6599]
started core service [/rosout]

Now the ROS Master that is the roscore is running successfully, lets try to test the server.

For this purpose we have a tool called rostopic. It is a command line tool for displaying debug information about ROS Topics, including publishers, subscribers, publishing rate, and ROS Messages. It also contains an experimental Python library for getting information about and interacting with topics dynamically.

Publisher

 
code@orangepizero:~$ rostopic pub my_topic std_msgs/String "hello there"
publishing and latching message. Press ctrl-C to terminate

Subscriber

Here we are subscribing to the topic my_topic using the command rostopic echo my_topic.  and from the other window we are publishing the string “hello there” using the command rostopic pub my_topic std_msgs/String “hello there”. We can list the topics in the list using the below command.

code@orangepizero:~$ rostopic list
/my_topic
/rosout
/rosout_agg

Now we can see all the topics that are available and in that is our topic my_topic.

code@orangepizero:~$ rostopic info my_topic
Type: std_msgs/String
Publishers:
* /rostopic_6277_1506542386742 (http://orangepizero:53189/)
Subscribers:
* /rostopic_6249_1506542382478 (http://orangepizero:51324/)
* /rostopic_6538_1506543106943 (http://orangepizero:49806/)

If you see the information you can see a single publisher and two subscriber because I ran  rostopic echo my_topic twice.

For more information about rostopic then try help command

code@orangepizero:~$ rostopic help
rostopic is a command-line tool for printing information about ROS Topics.
Commands:
rostopic bw display bandwidth used by topic
rostopic delay display delay of topic from timestamp in header
rostopic echo print messages to screen
rostopic find find topics by type
rostopic hz display publishing rate of topic
rostopic info print information about active topic
rostopic list list active topics
rostopic pub publish data to topic
rostopic type print topic or field type
Type rostopic <command> -h for more detailed usage, e.g. 'rostopic echo -h'

With this we conclude the part2 of the series and we will cover further topics in the next section leading to build a complete humanoid robot.

 

 

One thought on “Programming with Robot Operating System in Pi – Part 2 [QUICK GUIDE]

Leave a Reply

Your email address will not be published. Required fields are marked *