Since a bit more than one year of hard work, we are glad to be able to show the world our pharo client framework for ROS.
ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more.
In order to make your life easy, we present here a virtualization with all the things needed installed and configured for the Groovy Galapagos version. Sadly, in this version of ROS (the last stable) the Gazebo simulator is not working, and also the most stable code of the previous version (Fuerte) is not working with gazebo anymore. Thats why the examples we show here are based on the easiest ROS simulator, the turtlesim.
We expect to be able to make a better showing up of all this world with the next version (Hydromedusa) which still unstable, but promise to have a whole new way to interact to simulators and so to let us show you a full simulated robot managed from your pharo image.
After you have downloaded the virtualization, and import it into your virtualbox installation, you need to get started into this new world. Remind always that currently, ROS is almost managed thought console commands, so, in order to interact with ROS and PhaROS you will need to use it, and of course, in order to use it you need to know some commands.
Yeah, cool, but you know, i just want to see something working, and i hate to waste my time understanding commands
So, open a terminal and execute:
rosrun esug pharos turtlesimpharo
Ok, you got my attention, i want to know a bit more about how to use ROS
roscd {package name} ” This command step into the folder of the package ”
roscd esug ” This application will drive you to the esug package folder ”
rosrun { package name } { package-binary-name } { arguments } ” This command execute a binary of a package, generally this means a ROS Node that will have some responsibility”
rosrun esug pharos {script name} “punctually this command will execute a given script. ”
rosrun esug headless { script name } ” this command works like pharos command, but starts with a headless VM. Regard the inspects and halts before use this”
rosrun esug edit ” this command will open the image related without execute anything. This way, each package has its own image, and is easy to point to it and edit or browse it”
In order to change IP/Port of the ROS master, you need to change both, ~/.bashrc file (Changing the Environment variables) and also the constructors used by the scripts.
It is there any cheat sheet to have all the commands ?
Yes of course: right here
Ok, i just execute the turtlesimpharo script, nice, there are more examples right?
yes of course :), here you have an other one a bit more complex
rosrun esug turtlesimpursuitturtles
Yeah! I love it, how do i make my own code?
A great way to begin is browsing PhaROSEsug package, it has commented methods and uses all the basic stuff. We will make some tutorials for advanced usage, but mean while you can have fun with that and browsing code and tests is always allowed ;).
I made roscd esug, and i found a lot of folders! i don’t understand anything!
├── bin
│ ├── edit
│ ├── headless
│ └── pharos
├── build
├── CMakeLists.txt
├── ex.launch
├── image
│ ├── Pharo.changes
│ ├── PharoDebug.log
│ ├── Pharo.image
│ ├── PharoV10.sources
│ └── scripts
│ ├── turtlesimpharo
│ ├── turtlesimpursuitturtles
├── include
├── msg
├── package.xml
├── src
└── vm
└── pharo -> /home/pharos/vm/pharo
——————–
bin
——————–
we have the commands to interact with the related package-image
——————–
build
——————–
Is here to keep layout compatibility with ROS. Maybe will store package-cache in the future.
——————–
CMakeLists.txt
——————–
ROS give a make tool in order to generate infrastructure code, like the structures related with topic messages. Actually this file should be mantained by hand.
——————–
image
——————–
In this folder we encounter the related image, the common source/changes bundle, and the scripts folder
——————–
image/scripts
——————–
In this folder we have all the scripts that we can run with this package. This files are actually generated and related with script methods in the package-related-object in the image side. (To look for the object of esug package punctually, browse PhaROSEsug ).
——————–
include
——————–
This folder is for ROS layout compatibility. We are not currently using this folder.
——————–
msg
——————–
This folder is for message definition files ( .msg extention). This folder is mantained automatically with the type generation from image side, but you can also add your own types with no relation with the image side. In any case, messages and it dependancies should be updated in the ros infraestructure files (CMakeLists.txt, package.xml)
——————–
package.xml
——————–
This is the package description file that ROS use to define compile-time / runtime dependancies, author, etc. You should not worry about this file in any case but in the case of new types definition.
——————–
src
——————–
This folder is for ROS-fuerte layout compatibility. Is actually deprecated and it will be removed soon.
——————–
vm
——————–
This folder has the vm needed to run the exisiting image and code. Commonly is a symbolic link to the VM that the image creator of the package.
This folder and vm are usually pointed by the scripts at the bin folder.