viernes, 9 de julio de 2010

Alternativa...

La respuesta de Renato para el problema fue:

"Hola Oscar,

Esos 3 paquetes son de la stereo camara que estamos usando. Podrias quitarlo de la compilacion general tambien el PGR?

Saludos,

Renato."

Entonces en vez de compilar todos los paquetes aplicando simplemente rosmake decidí compilar todos los paquetes menos el siguiente (los compilé con privilegios de administrador #): sscrovers_vision

Todos los demás paquetes se compilaron sin mayor problema, continuaré con el tutorial.

jueves, 8 de julio de 2010

Solucion al compilar el package: sscrover-ros-pkg.

Renato me indicó que tengo que eliminar la dependencia al package denominado: libdc1394v2

Correo original:

"Hola Oscar,

Borra la dependencia de esos dos packages: libdc1394v2 y pgrlibdcstereo.

Que estas tratando de compilar? Me parece que se me han de haber colado estas dependencias en algun manifest.xml.


Saludos,

Renato."

Hasta ahora lo he eliminado en los manifest.xml (realmente comentado) de los packages:
pgrlibdcstereo
Triclops

Encontrados en el Stack: sscrovers_vision

Ahora es cosa de ver como sigue, si compila o si no....

y que no compila... ahora sale un error bien kñon.. a ver... parece ser que se tienen muchos errores en el archivo: pgr_stereocam.cpp a partir de la línea 706.

Errores:
----------------------------------------------
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:706: error: expected `;' before ‘err’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:707: error: ‘err’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:707: error: ‘struct PGRStereoCamera_t’ has no member named ‘camera’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:707: error: ‘writeTriclopsConfigFromCameraToFile’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:708: error: ‘DC1394_SUCCESS’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp: At global scope:
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:732: error: ‘dc1394bayer_method_t’ has not been declared
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp: In function ‘void extractImagesColorXB3(PGRStereoCamera_t*, int, unsigned char*, unsigned char*, unsigned char*, unsigned char**, unsigned char**, unsigned char**, TriclopsInput*, TriclopsInput*)’:
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:743: error: ‘dc1394error_t’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:743: error: expected `;' before ‘err’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:744: error: ‘dc1394video_frame_t’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:744: error: ‘frame’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:745: error: ‘err’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:745: error: ‘struct PGRStereoCamera_t’ has no member named ‘camera’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:746: error: ‘DC1394_CAPTURE_POLICY_WAIT’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:747: error: ‘dc1394_capture_dequeue’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:748: error: ‘DC1394_SUCCESS’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:766: error: ‘struct PGRStereoCamera_t’ has no member named ‘bayerTile’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:767: error: ‘dc1394_bayer_decoding_8bit’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:797: error: ‘struct PGRStereoCamera_t’ has no member named ‘camera’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:797: error: ‘dc1394_capture_enqueue’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp: In function ‘void extractImagesMonoXB3(PGRStereoCamera_t*, unsigned char*, unsigned char**, unsigned char**, unsigned char**, TriclopsInput*, TriclopsInput*)’:
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:817: error: ‘dc1394error_t’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:817: error: expected `;' before ‘err’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:819: error: ‘dc1394video_frame_t’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:819: error: ‘frame’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:820: error: ‘err’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:820: error: ‘struct PGRStereoCamera_t’ has no member named ‘camera’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:821: error: ‘DC1394_CAPTURE_POLICY_WAIT’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:822: error: ‘dc1394_capture_dequeue’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:823: error: ‘DC1394_SUCCESS’ was not declared in this scope
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:867: error: ‘struct PGRStereoCamera_t’ has no member named ‘camera’
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp:867: error: ‘dc1394_capture_enqueue’ was not declared in this scope
make[3]: *** [CMakeFiles/pgrlibdcstereo.dir/src/pgr_stereocam.o] Error 1
make[3]: Leaving directory `/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/build'
make[2]: *** [CMakeFiles/pgrlibdcstereo.dir/all] Error 2
make[2]: Leaving directory `/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/build'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/build'
--------------------------------

Como se puede ver el archivo es el siguiente path:
/opt/ros/boxturtle/ros/sscrovers-ros-pkg/sscrovers_vision/pgrlibdcstereo/src/pgr_stereocam.cpp

Seguiré invesitgando este error..

Bitacora V1


Bitacora de la instalación de los programas para manipular al pioneer.

1.- Primero entré a la página:
http://www.assembla.com/wiki/show/ssc-rovers/Starting_with_ROS

2.- Abrí la terminal e instalé lo siguiente:
$ svn co https://code.ros.org/svn/wg-ros-pkg/branches/trunk_cturtle/sandbox/teleop_base

3.- Después instalé:

$ rosrun rviz rviz -d /opt/ros/boxturtle/stacks/simulator_stage/stage/rviz/stage.vcg
------------------
Haré un paréntesis para ver un detalle de .bshrc.

Resulta que para tener acceso como root basta con escribir sudo su.

Copié la línea: -del path-

Del .bashrc del usuario al .basrc del root. Para accesar al .bashrc del usuario basta con ir al directorio:

/path /home/username/inst (inst se refiere a que ahi se encuentra dihco archivo)

y editar el .bashrc, creo que utilicé sudo para hacer esto.

Para accesar al .basrc del root, escribi cd, accese como root (sudo su) y luego use el comando:
gedit .bashrc

Para localiar un archivo puedo escribir:
locate archivo

Para localizar un archivo en la web debes de escribir:
roslocate svn nombrearchivo
Para descargar un archivo de la web
svn co direccionarchivo
------------------
Tras modificar los archivos setup.sh tanto de la carpeta del boxturtle como del beginner_tutorials y entrar como root, pude finalmente instalar adecuadamente el control_toolbox y el teleop_base así como instalarlos. Una vez hecho esto pude correr el teleop_base_keyboard para controlar el robot simulado.

Resulta ser que es precisamente en este documento en donde se designa que path se puede considerar como acceso para ROS_ROOT y entonces poder usar comandos de ROS como ROOT.

4.-Despues vi los tutoriales de Transorm for broadcaster and listener ,el tutorial del tf y de los sensores. Existe mucho material disponible sobre el tf, así como vieos muy interesantes.

5.-Ahora sigo con el de building a map
----
Listo ya cree un mapa con el tutorial. Otro dato interesante para la terminal es que puedes abrir imagenes con gimp .
----
Bueno ahorita me quede trabado al tratar de compilar el paquete que descargargué inmediatamente despues llamado: sscrovers-ros-pkg. Le mandé un correo a renato esperando una solución.

Lo que sigue por amientras es lo siguiente:
Imprimir el archivo printing.odt (esta en google docs) y estudiarlo
Imprimir el datasheet
Buscar tutorial de python en la web.
Buscar info sobre el laser sick y el robot pioneer, mandar un correo a pineda para solicitarsela nuevamente.
Buscar los tutoriales que dice laura de navegación.
Leer sobre navigation tutorials (igual y es lo mismo)
Conseguir info de libros y recursos web sobre navegación
Terminar tutorial HTML y JAVA para empezar con XML
Repasar temas de C++
Limpiar la MAC >.<

Nota: Esta bitacora no es de un solo día, la subi a la web como respaldo de un .odt que hice muy informal.

martes, 29 de junio de 2010

7)Understaning ROS Services and Parameters

7)Understaning ROS Services and Parameters

rosservice es otro medio mediante el cual los nodos se pueden comunicar entre si. Los services permiten a los nodos enviar request y recibir response.

rosservice tiene varios comandos que pueden ser usados en topics.

-rosservice list
Esta función permite ver que servicios están disponibles por el nodo en cuestión.

-rossservice type [service]
Esta función permite saber que tipo de servicio es service, osea que argumentos recibe y cuales envia.

-rosservice call [service] [args]
Esta función llama al servicio en cuestión.

rosparam permite almacenar y manipular información información en el ROS Parameter Server

-rosparam list
Esta función permite desplegar los parametros.

-rosparam set
Esta función permite cambiar el parametro a lo que deseemos

-rosparam get
Esta función permite obtener el valor de un parametro


rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names

lunes, 28 de junio de 2010

6) Understanding ROS Topics

6) Understanding ROS Topics

Vaya por fin entiendo bien el concepto de para que es un msg, un topic y un nodo. Resulta que cada nodo es una suerte de programa por si mismo que se comunica con otros nodos que hacen otras cosas para hacer en conjunto alguna tarea de un nivel superior. Se comunican a través de una suerte de board llamado topic en donde ellos publican lo que hacen a través de msgs. Se usa un topic de por medio para que sea de uso universal sin importar en que lenguaje esté programado el nodo, osea todo lo que tenga el nodo dentro. Un nodo puede publicar y/o subscribirse a un topic para enviar y/o recibir msgs que le indican cosas, tareas, info etc.

-rxgraph
Esta función pone en pantalla un diagrama en donde muestra los diferentes nodos que se están utilizando y los topicos que los interconectan.

-rostopic
Permite obtener información de distintos tipos acerca de un tipo, desde a que frecuencia se comunica, la lista de topicos activos, el tipo de topico etc.

Para ver en la terminal lo que está enviando un topic es necesario utilizar la función echo. Por ejemplo:

$ rostopic echo /turtle1/command_velocity

Para cada tipo de tópico hay un tipo de message que se utiliza para la comunicación a través del tópico. Para saber que tipo de mensaje es se escribe:
-rostopic type “topico”

-rostopic pub [topic] [msg_type] [args]
Esta función se utiliza para enviar info a un topico.

-rostopic hz [topic]
Esta función se utiliza para ver a que rate está enviando y recibiendo info el topico.

-rxplot
Esta función se utilliza para crear una gráfica dinámica de como estan siendo utilizadas las funciones de un topico en función del tiempo.

5) Entendiendo los Nodos.

5) Entendiendo los Nodos.

Un nodo es un conjunto de packages que realizan una tarea completa en conjunto. En este modulo se aprende a utilizar los siguientes comandos:

-roscore
Este comando es lo primerito que se tiene que correr si se piensa comenzar a utilizar ROS

-rosnode
Da una lista de los nodos que se encuentran activos

-rosnode info/”node”
Despliega información acerca de dicho nodo.

-rosrun [package_name] [Node_Name] corre el nodo que se encuentra en dicho package.

-rosnode ping
Envía pings para ver si el nodo se encuentra activo.

4)Creating a ROS msg and srv.

4)Creating a ROS msg and srv.

Los archivos msg son simples documentos de texto qe describe los campos de un mensage de ROS. Un utilizados para generar codigo para mensajes en diferentes lenguajes de programación.

Los srv describen un servicio, se compone principalmente de dos partes la solicitud y la respuesta.

Para creacr un msg primero te diriges al paquete en donde lo vas a crear, despues lo creas y por último lo editas.

ej.
$ roscd beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg

¿Porque tenemos que abrir CmakeLists.txt en este paso?

Al momento de utilizar rosmsg se puede ver el contenido de un msg.

Example:
$ rosmsg show beginner_tutorials/Num
You will see:
int64 num
Para crear un srv se hace de la misma forma.

$ roscd beginner_tutorials
$ mkdir srv
Así mismo se puede copiar de otro directorio utilizando roscp.

Usage:
$ roscp [package_name] [file_to_copy_path] [copy_path]
Now we can copy a service from the rospy_tutorials package:
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
Para ver el contenido de un srv se utiliza el comando rossrv show.

ej.

Example:
$ rossrv show beginner_tutorials/AddTwoInts
You will see:
int64 a
int64 b
---
int64 sum
Siempre que se modifica un msg se tiene que compilar nuevamente el package.
$ rosmake beginner_tutorials
Ayuda.

Para obtener ayuda acerca de un comando se puede escrobir depsues del mismo: -h
Esto sirve para la mayor parte de comandos existentes y permite desplegar información acerca del mismo comando en pantalla.

ej.

Try:
$ rosmsg -h
You should see a list of different rosmsg subcommands.
Commands:
rosmsg show Show message description
rosmsg users Find files that use message
rosmsg md5 Display message md5sum
rosmsg package List messages in a package
rosmsg packages List packages that contain messages
You can also get help for subcommands
$ rosmsg show -h
This shows the arguments that are needed for rosmsg show:
Usage: rosmsg show [options]

Options:
-h, --help show this help message and exit
-r, --raw show raw message text, including comments