ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Kai Bublitz's profile - activity

2021-06-10 13:55:19 -0500 received badge  Nice Answer (source)
2021-01-22 07:11:29 -0500 received badge  Great Answer (source)
2021-01-22 07:11:29 -0500 received badge  Guru (source)
2017-08-22 15:35:55 -0500 received badge  Nice Answer (source)
2016-09-16 07:14:34 -0500 received badge  Nice Answer (source)
2014-12-04 11:11:23 -0500 received badge  Taxonomist
2014-01-28 17:26:42 -0500 marked best answer Starting nodes on remote machine with different ROS version

Hi,

I have some launch files that I can start on my control pc that run some nodes on the robot, which is a different pc. The robot I am working with recently gut updated to ros fuerte, while my control pc still uses ros electric. (If I was in charge I would upgrade the control pc, too, but this is not my decision, I will talk to the responsible people) Now the problem is, the launch files do not work cross-version. This is the output I get:

remote[i60sr1-0] starting roslaunch
remote[i60sr1-0]: creating ssh connection to i60sr1:22, user[bublitz]
remote[i60sr1-0]: ssh connection created
remote[i60sr1-0]: env: /opt/ros/electric/ros/bin/roslaunch: Datei oder Verzeichnis nicht gefunden

[i60sr1-0] process has died
remote roslaunch failed to launch: sr1

It looks like roslaunch is trying to start another instance of roslaunch on the remote machine, gut is looking for roslaunch in the wrong place.

Now the question is: Is it possible to run nodes remote on a different version of ros? If yes what should I do? I already tried setting the ROS_ROOT variable in a script that is called by env-loader, but that dosn't do it.

Thanks for any help.

2014-01-28 17:26:16 -0500 marked best answer weird behaviour when loading controller in controller manager in gazebo

Hi, I have a strange problem again and I can't figure out what is going wrong.

I use the gazebo_ros_controller_manager plugin for controlling an arm and a pan/tilt unit in gazebo simulation. I use similar configuration parameters for both of them. I posted the yaml files at the end. Both configuration files are loaded to the parameter server, then I use the pr2_controller_manager spawner node to load the controllers. It works perfectly when I load the arm_controller, I can move the arm and everything. But when I try to load the pantilt_controller, the simulation gets freaky. All the robot parts that are attached with non-fixed joints are displayed somewhere in the centre of the gazebo area, the published joint states look like this:

header: 
  seq: 131001
  stamp: 
    secs: 1311
    nsecs: 61000000
  frame_id: ''
name: ['base_link_to_wheel_l_rim_joint', 'base_link_to_wheel_r_rim_joint', 'lenkrolle_base_to_lenkrolle_dreh_joint', 'lenkrolle_dreh_to_lenkrolle_rim_joint', 'kopf_base_to_kopf_pan_joint', 'kopf_pan_to_kopf_tilt_joint', 'arm_1_joint', 'arm_2_joint', 'arm_3_joint', 'arm_4_joint', 'arm_5_joint', 'arm_6_joint', 'arm_7_joint', 'gripper_base_to_finger_l', 'gripper_base_to_finger_r']
position: [31.415926535897945, 37.699111843077524, 9.42486522723199, 3.1416799200523933, -9.424716252608002, -9.424872208549377, -3.1415926535897913, -10.995570796905772, -1.5707998174534001, 7.853985124632986, 4.712385489726186, 1.5707998174534001, -1.5707998174533984, nan, nan]
velocity: [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
effort: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, nan, nan]

All the position values should be close to 0, velocity too. The other joints are controlled by different controllers, they don't even use the pr2 controller_manager, except for publishing the joint states. I tried using the JointSplineTrajectoryController instead but with the same result. Same result if I don't start the arm controller.

I'm really lost. I have no idea what I am doing wrong. It used to work some time ago, but I haven't used the simulation for some time. I can't remember I changed anything since it worked. There are no error messages, the spawner just gives two info messages "Loaded controllers: pantilt_controller" and "Started controllers: pantilt_controller". Maybe it is just a simple but stupid mistake again, but I can't find it. Please help me solve this problem. Thanks.

The configuration files I use:

arm_configuration.yaml:

arm_controller:
  type: robot_mechanism_controllers/JointTrajectoryActionController
  joints:
    - arm_1_joint
    - arm_2_joint
    - arm_3_joint
    - arm_4_joint
    - arm_5_joint
    - arm_6_joint
    - arm_7_joint
  gains:
    arm_1_joint:
      p: 2000.0
      d: 0.0
      i: 100.0
    arm_2_joint:
      p: 2000.0
      d: 0.0
      i: 100.0      
    arm_3_joint: 
      p: 2000.0
      d: 0.0
      i: 100.0
    arm_4_joint:
      p: 2020.0
      d: 0.0
      i: 100.0
    arm_5_joint:
      p: 2030.0
      d: 0.0
      i: 100.0
    arm_6_joint:
      p: 5050.0
      d: 0.0
      i: 100.0
    arm_7_joint:
      p: 2080.0
      d: 0.0
      i: 100.0

  arm_joint_trajectory_action_node:
    joints:
      - arm_1_joint
      - arm_2_joint
      - arm_3_joint
      - arm_4_joint
      - arm_5_joint
      - arm_6_joint
      - arm_7_joint
    constraints:
      goal_time: 0.6
      arm_1_joint:
        goal: 0.05
      arm_2_joint:
        goal: 0.05
      arm_3_joint:
        goal: 0.05
      arm_4_joint:
        goal: 0.05
      arm_5_joint:
        goal: 0.05
      arm_6_joint:
        goal: 0.05
      arm_7_joint:
        goal: 0.05

Update 1: I found out that the problem is ... (more)

2014-01-28 17:26:16 -0500 marked best answer problem loading walls model in gazebo 1.0

Hi

I have some problems switching to gazebo 1.0. My old .model file seem to be invalid (although there are others in the gazebo_worlds package that still seem to work and are parsed in "deprecated file mode"). So I copied over the wg_walls.model which is in version 1.0 format, but I'm not able to use this model the way I used the old one. My launchfile looks like this:

<param name="wg_walls" textfile="$(find gazebo_worlds)/objects/wg_walls.model" />
<node name="xml2factor_wg_walls" pkg="gazebo" type="spawn_model" args="-gazebo -param wg_walls -x -5.65 -y -5.65 -model wg_walls" respawn="false" output="screen" />

Unfortunately gazebo crashes when spawning the model.

Segmentation fault (core dumped)

No further output.

How can I load the walls model in gazebo? Do I need a different spawn command, is it a problem with the model? How would I include the walls in my world file? I remember I used the spawn_model node because the old gazebo crashed when using the walls within the .world file.

I can't find any up to date documentation about the world and model files for gazebo. Everything I can find seems to be pre 1.0.

UPDATE: after updating gazebo and with some help of hsu I can get the map to load now when I use the simple_office.jpg that is now inverted in the textures directory. But it still looks strange, textures aren't applied correctly and some walls are just missing. I wouldn't mind about the textures, but I need the walls. The walls are not at the position I like them to be. Where should I adjust the position? there is an origin tag within the link tag, an origin attribute within the heightmap tag and I can specify a position when spawning the walls model (using -x -y parameters). The spawn_model parameters seem to be ignored for static models, right? what about the origin tag? It doesn't seem to do anything either. So I have to use the origin attribute of heightmap, but I would prefer using the origin tag of the link and omitting the heightmap origin attribute, so I only have to change one value instead of two. And what about the size attribute? I use size="25.7 25.7 2", but if the grid has a resolution of 1m, the actual size of the map is something like 16x15m. Why are there multiple textures and blend tags within the (visual) hightmap? How do I know which texture is applied or which blend, what does blend do?

One more important question I have: Is it somehow possible to use images within my own stack folder to generate a map? I can't edit the files that are in the gazebo stack, but I would like to be able to make my own map. the heightmap filename doesn't accept full file names, setting the GAZEBO_RESOURCE_PATH environment variable to the folder where my files are doesn't help ... (more)

2014-01-28 17:24:53 -0500 marked best answer Can I modify portion of the global plan in TrajectoryPlannerROS?

Hi there,

I would like to know if it is possible to change the length of the "portion of the global plan that the local planner is currently attempting to follow" as stated in the wiki for the published topic.

The wiki says for goal_distance_bias parameter: "The weighting for how much the controller should attempt to reach its local goal". I assume the local goal is the end of the portion of the local plan, is that correct?

I want to use the TrajectoryPlannerROS plugin in move_base to follow a global path, but the robot tends to drive towards walls and get stuck, when driving around corners. I think I could improve the performance if I the portion of the global plan was shorter, because the robot would not try to take shortcuts that lead into walls. Basically I want the robot to follow the path more closely, however I don't want to increase the path_distance_bias because higher path_distance_bias means the robot can't avoid obstacles on the path then. I'm not sure what impact the local path length has to navigation, but I think it's worth trying.

So can I somehow influence the length of the current portion of the path? If it's possible how would I do this? Of course I surely can get the source code and make a new planner, but I don't want to this if it can be avoided.

Thanks in advance for anything that might help me improve the local planner behavior.

UPDATE1: Perhaps I could improve the behavior of the local planner by changing some other parameters, but I can't get it to work reliably. The footprint matches the actual robot plus some extra space for movement of the kinect and some padding. I don't think further increasing the footprint will help me. I tried different settings for the local costmap, but it did not help either. When I use high cost values around the obstacles the robot has problems going through doors. The idea behind my idea was , that it seems pretty useless scoring a local trajectory by "heading towards goal" if the goal is in a different room. I have an image of rviz: imagebam.com As you can see, the robot is heading toward the wall, where the goal is behind. If I could dynamically change the length of the plan portion, I could perhaps make the planner head towards the door. Though I'm not sure if this really works. I noticed I can improve the planner's behavior by increasing the sim_time parameter (to about 10 sec), but it does not work in every situation.

Here is a parameter dump of the relevant parameters:

TrajectoryPlannerROS: {acc_lim_th: 1, acc_lim_theta: 1.0, acc_lim_x: 1.0, acc_lim_y: 0.0,
  angular_sim_granularity: 0.025, controller_frequency: 20, dwa: true, escape_reset_dist: 0.1,
  escape_reset_theta: 1.57079632679, escape_vel: -0.1, gdist_scale: 0.8, global_frame_id: odom,
  goal_distance_bias: 0.8, heading_soring: false, holonomic_robot: false, latch_xy_goal_tolerance: true, max_rotational_vel: 0.3,
  max_vel_theta: 1.0 ...
(more)
2014-01-28 17:24:35 -0500 marked best answer inertia origin set in urdf handled wrong by gazebo?

Hi there,

I am currently developing an urdf model of our robot for simulation in gazebo. I always had problems setting the mass origin correctly. My model has a base_footprint link as root link, which has and so I didn't care about it's inertia origin, the child link is the base_link which is the main body of the robot, where I set the mass and origin values. I found out that gazebo (or the urdf converter?) is handling the model in a very strange way. The origin value of base_link is ignored and the origin for all (fixed) parts is the origin specified in base_footprint.

So now my question is how this is supposed to be? Is this wanted behaviour or a bug in gazebo? Or am I missing something? It took me weeks to figure out what exactly is the problem, and I couldn't find any information about this problem.

edit: Another question. Where should I specify the inertia values and how are they evaluated? e.g. what happens if I give an inertia matrix for both base_footprint and base_link at different origins?

UPDATE2: I removed my previous urdf, now here is a new example:

cube1.urdf:

<robot name="cube1">
    <link name="cube">
        <visual>
            <geometry>
                <box size="1 1 1"/>
            </geometry>
        </visual>
        <collision>
            <geometry>
                <box size="1 1 1"/>
            </geometry>
        </collision>
        <inertial>
            <mass value="10"/>
            <origin xyz="5 5 5" />
            <inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
        </inertial>
    </link>
</robot>

cube2.urdf:

<robot name="cube2">
    <link name="cube">
        <visual>
            <geometry>
                <box size="1 1 1"/>
            </geometry>
        </visual>
        <collision>
            <geometry>
                <box size="1 1 1"/>
            </geometry>
        </collision>
        <inertial>
            <mass value="10"/>
            <origin xyz="5 5 5" />
            <inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
        </inertial>
    </link>
    <link name="pseudo_link">
        <visual>
            <geometry>
                <box size="0.1 0.1 0.1"/>
            </geometry>
        </visual>
        <collision>
            <geometry>
                <box size="0.1 0.1 0.1"/>
            </geometry>
        </collision>
        <inertial>
            <mass value="0.00001"/>
            <inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
        </inertial>
    </link>
    <joint name="cube_joint" type="fixed">
        <origin xyz="0 0 0" rpy="0 0 0" />
        <parent link="pseudo_link"/>
        <child link="cube"/>
    </joint>
</robot>

Both times it's a simple cube with 1m sides and a mass of 10kg. The mass origin has an offset of 5m in every direction, so it is outside of the geometry. cube2 has an additional pseudo link as parent which has a very small mass and its origin in the center. If gazebo handled the mass origin correctly I would expect both cubes to show the same behavior. If you spawn both models in gazebo you can see that cube1 starts standing on the corner, as expected, because the mass origin is outside. However cube2 is just laying on the floor as normal cubes do. So clearly the mass origin of ... (more)

2014-01-28 17:23:07 -0500 marked best answer device open failed error when trying to start multiple camera1394 nodes

Hi,

I am trying to get images from three firewire cameras. I can open each camera when running a single camera1394 node.

Launch file:

<launch>
    <node pkg="camera1394" type="camera1394_node" name="fisheye_camera" cwd="node" respawn="false" output="screen" >
        <param name="guid" type="string" value="000a470104069253" />
        <param name="video_mode" type="string" value="format7_mode0" />
        <param name="format7_color_coding" type="string" value="rgb8" />
        <remap from="/camera" to="/fisheye_camera" />
    </node>
</launch>

I get the following output as expected:

process[fisheye_camera-1]: started with pid [7560]
[ INFO] [1320745534.175589661]: Found camera with GUID a470104069253
[ INFO] [1320745534.175965999]: camera model: AVT Marlin F046C
[ INFO] [1320745534.182929881]: Format7 unit size: (4x2), position: (2x2)
[ INFO] [1320745534.183078333]: Format7 region size: (780x580), offset: (0, 0)
[ INFO] [1320745534.204670708]: [000a470104069253] opened: format7_mode0, 15 fps, 400 Mb/s
[ WARN] [1320745534.292570577]: Calibrated image size (0x0) matches neither full Format7 size (780x580)) nor ROI size (780x580)
[ WARN] [1320745534.292964530]: [000a470104069253] calibration does not match video mode (publishing uncalibrated data)

When I now try to open a second camera with a similar launch file (different guid), while the first node is still running:

<launch>
    <node pkg="camera1394" type="camera1394_node" name="pantilt_camera" cwd="node" respawn="false" output="screen" >
        <param name="guid" type="string" value="000a47011109a214" />
        <param name="video_mode" type="string" value="format7_mode0" />
        <param name="format7_color_coding" type="string" value="rgb8" />
        <remap from="/camera" to="/pantilt_camera" />
    </node>
</launch>

I get the following output with error device open failed:

process[pantilt_camera-1]: started with pid [8145]
[ INFO] [1320746488.817020075]: Found camera with GUID a470104069253
[ INFO] [1320746488.825803202]: Found camera with GUID a47010f0771b0
[ INFO] [1320746488.835166689]: Found camera with GUID a47011109a214
[ INFO] [1320746488.835387890]: camera model: AVT Stingray F125C
[ INFO] [1320746488.846285059]: Format7 unit size: (4x2), position: (2x2)
[ INFO] [1320746488.846411706]: Format7 region size: (1292x964), offset: (0, 0)
libdc1394 error: juju: Failed to allocate iso resources
[ WARN] [1320746488.859773482]: [camera] exception opening device (retrying): [Camera1394::open]: Failed to open device!
[ INFO] [1320746488.870530423]: Found camera with GUID a470104069253
[ INFO] [1320746488.878520477]: Found camera with GUID a47010f0771b0
[ INFO] [1320746488.887673071]: Found camera with GUID a47011109a214
[ INFO] [1320746488.887826032]: camera model: AVT Stingray F125C
[ INFO] [1320746488.898584632]: Format7 unit size: (4x2), position: (2x2)
[ INFO] [1320746488.898770278]: Format7 region size: (1292x964), offset: (0, 0)
libdc1394 error: juju: Failed to allocate iso resources
[ WARN] [1320746488.912427925]: [camera] exception opening device (retrying): [Camera1394::open]: Failed to open device!
[ INFO] [1320746488.923146609]: Found camera with GUID a470104069253
[ INFO] [1320746488.931056190]: Found camera with GUID a47010f0771b0
[ INFO] [1320746488.940165987]: Found camera with GUID a47011109a214
[ INFO] [1320746488.940331928]: camera model: AVT Stingray F125C
[ INFO] [1320746488.953041566]: Format7 unit size: (4x2), position: (2x2)
[ INFO] [1320746488.953164625]: Format7 region size: (1292x964), offset: (0, 0)
libdc1394 error: juju: Failed to allocate iso resources
[ERROR] [1320746488.966902795]: [camera] device open failed: [Camera1394::open]: Failed to open device!

I allways get the same result no matter which camera I open first.

I am using ROS diamondback on Ubuntu 11.04 (kernel 2.6.38-11-generic), camera_drivers stack is version 1.4.2. The three cameras are connected via a firewire hub.

Can anybody tell me ... (more)

2013-09-09 14:58:19 -0500 received badge  Self-Learner (source)
2012-10-29 02:18:51 -0500 marked best answer How to compile a package with dynamic reconfigure server in C++

Hi,

I have problems compiling a package that uses the C++ dynamic reconfigure server. More specifically it is copy of base_local_planner with a few modifications.

I know that "there is no c++ api for dynamic reconfigure", however it is used there and I really don't want to remove it. I don't even know if my problem is related to the c++ api or dynamic reconfigure in general.

My problem is, that rosmake refuses to build my package, I get the following output:

[rosbuild] Building package adaptive_trajectory_planner
[rosbuild] Cached build flags older than manifests; calling rospack to get flags
[rosbuild] Including /opt/ros/electric/stacks/ros_comm/clients/rospy/cmake/rospy.cmake
[rosbuild] Including /opt/ros/electric/stacks/ros_comm/clients/roslisp/cmake/roslisp.cmake
[rosbuild] Including /opt/ros/electric/stacks/ros_comm/clients/cpp/roscpp/cmake/roscpp.cmake
MSG: gencfg_cpp on:BaseLocalPlanner.cfg
Finding dependencies for /home/bublitz/SR1/adaptive_trajectory_planner/cfg/BaseLocalPlanner.cfg
-- Configuring done
-- Generating done
-- Build files have been written to: /home/bublitz/SR1/adaptive_trajectory_planner/build
cd build && make 
make[2]: Betrete Verzeichnis '/home/bublitz/SR1/adaptive_trajectory_planner/build'
make[3]: Betrete Verzeichnis '/home/bublitz/SR1/adaptive_trajectory_planner/build'
make[4]: Betrete Verzeichnis '/home/bublitz/SR1/adaptive_trajectory_planner/build'
Scanning dependencies of target ROSBUILD_gencfg_cpp
make[4]: Verlasse Verzeichnis '/home/bublitz/SR1/adaptive_trajectory_planner/build'
make[4]: Betrete Verzeichnis '/home/bublitz/SR1/adaptive_trajectory_planner/build'
[  0%] Generating ../cfg/cpp/adaptive_trajectory_planner/BaseLocalPlannerConfig.h, ../docs/BaseLocalPlannerConfig.dox, ../docs/BaseLocalPlannerConfig-usage.dox, ../src/adaptive_trajectory_planner/cfg/BaseLocalPlannerConfig.py, ../docs/BaseLocalPlannerConfig.wikidoc
make[4]: execvp: ../cfg/BaseLocalPlanner.cfg: Keine Berechtigung
make[4]: *** [../cfg/cpp/adaptive_trajectory_planner/BaseLocalPlannerConfig.h] Fehler 127
make[4]: Verlasse Verzeichnis '/home/bublitz/SR1/adaptive_trajectory_planner/build'

"Keine Berechtigung" means "no permission"

Since I cannot find any useful documentation about how to use dynamic reconfigure parameters I have to ask here. Can anyone tell my what I have to do in order to make my package? I don't know what the commands inside the .cfg file do. Mostly the exit(gen.generate( ... line confuses me. I'm not sure if I just have to change the .cfg in some way or there's a problem somewhere else. Thanks for any help.

This is the (shortened) .cfg file

#!/usr/bin/env python

PACKAGE='adaptive_trajectory_planner'
import roslib; roslib.load_manifest(PACKAGE)

import sys
from math import pi

from dynamic_reconfigure.parameter_generator import *

gen = ParameterGenerator()

gen.add("acc_lim_x", double_t, 0, "The acceleration limit of the robot in the x direction", 1.0, 0, 20.0)
# some more gen.add(...) lines

exit(gen.generate(PACKAGE, "adaptive_trajectory_planner", "BaseLocalPlanner"))
2012-10-09 21:31:00 -0500 received badge  Notable Question (source)
2012-10-09 21:31:00 -0500 received badge  Famous Question (source)
2012-10-09 21:31:00 -0500 received badge  Popular Question (source)
2012-09-28 10:32:27 -0500 received badge  Famous Question (source)
2012-09-11 18:59:13 -0500 received badge  Famous Question (source)
2012-09-10 21:55:14 -0500 received badge  Nice Answer (source)
2012-09-04 20:33:54 -0500 received badge  Popular Question (source)
2012-09-04 20:33:54 -0500 received badge  Notable Question (source)