RoCKIn2014PhaseI
From robotica.unileon.es
Revision as of 09:13, 21 October 2013 by WikiSheriff (talk | contribs)
Contents
Hardware Preparation
We need to make some initial tasks to fulfill the basic hardware setup, configuration, and customization of the robot.
- Task 1
- Get power from roomba brush (It is going to be used in the arm )
- Task 2
- Emergency Stop Button
- Task 3
- Start Button
ToDo
Software Preparation
Environment setup
We are going to define the basis of the system to be deployed.
- Operative System : Ubuntu 12.04 LTS
- Software Restriction : ROS Fuerte
- Core drivers for Roomba : How to install roomba package
Packages search
We use ROS so we can find at least a package for each ability ready to deploy in a robot. In this way, this task involves search and test each package to evaluate if we are able to deploy in our platform.
Navigation 2D navigation stack Turtlebot Navigation
Mapping SLAM
Object recognition Simple Qt interface to try OpenCV implementations of SIFT, SURF, FAST, BRIEF and other feature detectors and descriptors. find-object stack
Speech recognition Speech Recognition and Text-to-Speech (TTS) in π robot Packages pocketsphinx and Festival
Cognition To be done during stacks integration
Person recognition
Person tracking
Object manipulation
Gesture recognition
Ros: Debugging Techniques
It is possible to make debugging in ROS in two ways
- Launch file
Following the Roslaunch techniques
launch-prefix="xterm -e gdb --args" : run your node in a gdb in a separate xterm window, manually type run to start it launch-prefix="gdb -ex run --args" : run your node in gdb in the same xterm as your launch without having to type run to start it launch-prefix="valgrind" : run your node in valgrind launch-prefix="xterm -e" : run your node in a separate xterm window launch-prefix="nice" : nice your process to lower its CPU usage launch-prefix="screen -d -m gdb --args" : useful if the node is being run on another machine; you can then ssh to that machine and do screen -D -R to see the gdb session launch-prefix="xterm -e python -m pdb" : run your python node a separate xterm window in pdb for debugging; manually type run to start it
then you only have to do
roslaunch <package> <launch>
- Running a single node
Following the Commandline techniques
rosrun <package> <node>
instead use
roscd <package>
valgrind bin/<node>or
gdb bin/<node>or
gdb GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Para las instrucciones de informe de errores, vea: <http://bugs.launchpad.net/gdb-linaro/>. (gdb) file <route to node> (gdb) run
Don't forget to add Debug in the CMakeLists.txt
cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
set(ROS_BUILD_TYPE Debug)
#set(ROS_BUILD_TYPE Release)
rosbuild_init(node)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
rosbuild_gensrv()
rosbuild_add_boost_directories()
add_subdirectory(src)
- EXTRA - Core dumps
The easy way to get core dumps
Set the core size to unlimited (if it is not set) :
$ ulimit -a core file size (blocks, -c) 0 ...< more info here >... $ ulimit -c unlimited $ ulimit -a core file size (blocks, -c) unlimited ...< more info here >...
To allow core dumps to be created (Ubuntu way)
$ sudo -s # echo 1 > /proc/sys/kernel/core_uses_pid