Ask Your Question

Devin's profile - activity

2018-10-25 14:01:11 -0500 received badge  Famous Question (source)
2018-08-23 02:57:38 -0500 received badge  Nice Question (source)
2018-07-26 17:29:51 -0500 received badge  Famous Question (source)
2017-04-20 14:34:54 -0500 received badge  Famous Question (source)
2016-11-02 02:05:37 -0500 received badge  Notable Question (source)
2016-05-24 16:02:45 -0500 received badge  Notable Question (source)
2016-05-10 15:10:33 -0500 commented answer Can I use robot_localization if I only have GPS data?

For my project, I only need relative trajectories of robots. And I can get longitude, latitude, velocity from smartphone using location api. It is enough for me. I don't know what you need for your project.

2016-05-10 14:04:27 -0500 commented answer Can I use robot_localization if I only have GPS data?

Yes. It is possible to use robot_localization if we only have GPS. Maybe you can use gps_common package to change the format of gps message and send it to robot_localization. I use smartphone to receive GPS which is already kalman filtered in gps chips. So I have no need to use robot_localization.

2016-05-10 12:57:45 -0500 received badge  Notable Question (source)
2016-05-10 12:57:45 -0500 received badge  Popular Question (source)
2016-05-04 04:41:17 -0500 marked best answer Fail to control two husky robots in Gazebo

I want to control two husky robots in Gazebo but only one of them can be controled. launch file 1:

<?xml version="1.0"?>

<launch>

  <arg name="world_name" default="worlds/empty.world"/>

  <arg name="laser_enabled" default="true"/>
  <arg name="ur5_enabled" default="false"/>
  <arg name="kinect_enabled" default="false"/>


  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(arg world_name)"/> <!-- world_name is wrt GAZEBO_RESOURCE_PATH environment variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

<group ns="husky1">
    <param name="tf_prefix" value="husky1_tf" /> 
    <include file="$(find husky_gazebo)/launch/spawn_huskys.launch">
      <arg name="laser_enabled" value="$(arg laser_enabled)"/>
      <arg name="ur5_enabled" value="$(arg ur5_enabled)"/>
      <arg name="kinect_enabled" value="$(arg kinect_enabled)"/>
      <arg name="x" value="1.0"/>
      <arg name="y" value="-1.0"/>
      <arg name="robotNamespace" value="husky1"/>
      <arg name="model" value="husky1"/>
    </include>
  </group>

  <group ns="husky2">
    <param name="tf_prefix" value="husky2_tf" /> 
    <include file="$(find husky_gazebo)/launch/spawn_huskys.launch">
      <arg name="laser_enabled" value="$(arg laser_enabled)"/>
      <arg name="ur5_enabled" value="$(arg ur5_enabled)"/>
      <arg name="kinect_enabled" value="$(arg kinect_enabled)"/>
      <arg name="x" value="-3.0"/>
      <arg name="y" value="-1.0"/>
      <arg name="robotNamespace" value="husky2"/>
      <arg name="model" value="husky2"/>
    </include>
  </group>

</launch>

another launch file:

<?xml version="1.0"?>
<launch>

  <arg name="laser_enabled" default="true"/>
  <arg name="ur5_enabled" default="false"/>
  <arg name="kinect_enabled" default="false"/>
 <!-- Robot pose -->

  <arg name="x" default="10"/>
  <arg name="y" default="10"/>
  <arg name="z" default="0"/>
  <arg name="roll" default="0"/>
  <arg name="pitch" default="0"/>
  <arg name="yaw" default="0"/>
  <arg name="model" default="husky"/>
  <arg name="robotNamespace" default="husky"/>
  <param name="robot_description" command="$(find xacro)/xacro.py '$(env HUSKY_GAZEBO_DESCRIPTION)'
    laser_enabled:=$(arg laser_enabled)
    ur5_enabled:=$(arg ur5_enabled)
    kinect_enabled:=$(arg kinect_enabled)
    " />

  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

  <!-- Load Husky control information -->
  <include file="$(find husky_control)/launch/control.launch"/>

  <!-- Include ros_control configuration for ur5, only used in simulation -->
  <group if="$(arg ur5_enabled)">

    <!-- Load UR5 controllers -->
    <rosparam command="load" file="$(find husky_control)/config/control_ur5.yaml" />
    <node name="arm_controller_spawner" pkg="controller_manager" type="spawner" args="arm_controller --shutdown-timeout 3"/>

    <!-- Fake Calibration -->
    <node pkg="rostopic" type="rostopic" name="fake_joint_calibration" args="pub calibrated std_msgs/Bool true" />

    <!-- Stow the arm -->
    <node pkg="husky_control" type="stow_ur5" name="stow_ur5"/>

  </group>

  <group if="$(arg kinect_enabled)">

    <!-- Include poincloud_to_laserscan if simulated Kinect is attached -->
    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan" output="screen">

        <remap from="cloud_in" to="camera/depth/points"/>
        <remap from="scan" to="camera/scan"/>
        <rosparam>
            target_frame: base_link # Leave empty to output scan in the pointcloud frame
            tolerance: 1.0
            min_height: 0.05
            max_height: 1.0

            angle_min: -0.52 # -30.0*M_PI/180.0
            angle_max: 0.52 # 30.0*M_PI/180.0
            angle_increment: 0.005 # M_PI/360.0
            scan_time: 0.3333
            range_min: 0.45
            range_max: 4.0
            use_inf: true

            # Concurrency level, affects number of pointclouds queued for processing and number of threads used
            # 0 : Detect number of cores
            # 1 : Single threaded
            # 2->inf : Parallelism level
            concurrency_level: 1
        </rosparam>
    </node>

  </group>

  <!-- Spawn robot in gazebo -->
    <node name="spawn_husky_model" pkg="gazebo_ros" type="spawn_model ...
(more)
2016-03-16 08:33:56 -0500 received badge  Famous Question (source)
2016-03-13 10:10:36 -0500 received badge  Popular Question (source)
2016-03-07 23:05:38 -0500 received badge  Famous Question (source)
2016-03-04 11:41:53 -0500 commented answer How to find a good covariance matrix in robot_localizaiton

Thank you, Tom. It works.

2016-03-01 15:13:55 -0500 received badge  Notable Question (source)
2016-03-01 14:33:27 -0500 commented answer How to find a good covariance matrix in robot_localizaiton

How about reseting kalman filter after turning?

2016-03-01 14:23:13 -0500 commented answer How to find a good covariance matrix in robot_localizaiton

I see. Thank you very much. But I still believe that it is possible to compute the absolute velocity(what I need) by absolute positions(GPS). is it right?

2016-03-01 13:24:59 -0500 commented question How to find a good covariance matrix in robot_localizaiton

It changes very slowly and it is obviously wrong. For example, velocity.linear.x is a positive number but position x is decreasing. I am sure it is accurate and correct at the beginning. But inaccurate after changing direction.

2016-03-01 13:12:09 -0500 received badge  Popular Question (source)
2016-03-01 12:18:59 -0500 commented question How to find a good covariance matrix in robot_localizaiton

filter works well at the beginning but it becomes inaccurate after robot changing direction. I think I need to reset the filter. Right?

2016-02-29 19:14:40 -0500 commented question How to find a good covariance matrix in robot_localizaiton

I think I need to reset the ekf_localization when I change the velocity direction. how?

2016-02-29 19:14:40 -0500 received badge  Commentator
2016-02-29 19:02:20 -0500 asked a question How to find a good covariance matrix in robot_localizaiton

I am using gps data only to compute the position and velocity of robot. In other words, only /fix can be used. I choose utm_odometry_node in gps_common package to transform /fix to /odom and then I feed it to ekf_localization node and it works. In my experiment, the velocity direction of robot will be changed. But the velocity changes slowly from ekf_localization if I change velocity of the robot.Now the question is how to find a good covariance matrix to get the accurate velocity as soon as possible?

input message:

---
header: 
  seq: 39697
  stamp: 
    secs: 993
    nsecs: 600000000
  frame_id: map
child_frame_id: ''
pose: 
  pose: 
    position: 
      x: 492824.687572
      y: 5527528.38954
      z: 0.144843751748
    orientation: 
      x: 1.0
      y: 0.0
      z: 0.0
      w: 0.0
  covariance: [1e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 99999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 99999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 99999.0]
twist: 
  twist: 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  covariance: [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, 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, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
---

launch file:

<?xml version="1.0"?>

<launch>


    <node pkg="robot_localization" type="ekf_localization_node" name="human1_ekf_localization_global" clear_params="true">

      <param name="frequency" value="30"/>

      <param name="sensor_timeout" value="0.3"/>

      <param name="two_d_mode" value="true"/>

      <!-- Defaults to "map" if unspecified -->
      <param name="map_frame" value="map"/>
      <!-- Defaults to "odom" if unspecified -->
      <param name="odom_frame" value="odom"/>
      <!-- Defaults to "base_link" if unspecified -->
      <param name="base_link_frame" value="base_link"/>
      <!-- Defaults to the value of "odom_frame" if unspecified -->
      <param name="world_frame" value="map"/>

      <param name="transform_time_offset" value="0.0"/>

 <param name="odom0" value="/human1/navsat/odom"/>

      <rosparam param="odom0_config">[true, true, false,
                                      false, false, false,
                                      false, false, false,
                                      false, false, false,
                             false, false, false]</rosparam>      

      <param name="odom0_differential" value="false"/>

      <param name="odom0_relative" value="false"/>

      <param name="print_diagnostics" value="true"/>

      <remap from="odometry/filtered" to="/human1/odometry/global"/>

    </node>

</launch>

a part of my covariance matrix:

<rosparam param="odom0_config">[true, true, false,
                                      false, false, false,
                                      false, false, false,
                                      false, false, false,
                             false, false, false]</rosparam>

      <rosparam param="process_noise_covariance">[1e-4, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                                  0,    1e-4, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                                  0,    0,    0.06, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                                  0,    0 ...
(more)
2016-02-29 11:49:21 -0500 commented question robot_localization as simple filter without fusion

Could you show me your configuration files? I have the same question. But without IMU, it doesn't work.Thanks.

2016-02-18 18:57:40 -0500 commented answer Is it possible to use robot_localization for multiple robots?

Thanks.^_^

2016-02-18 18:06:05 -0500 commented answer Is it possible to use robot_localization for multiple robots?

No, I cannot solve it. But I think it doesn't matter. Nothing seems wrong when I use robot_localization.

2016-02-18 07:07:55 -0500 received badge  Teacher (source)
2016-02-17 12:04:04 -0500 answered a question Gazebo doesn't give the option for saving a world

Maybe you can write a launch file to include models and world. You can put model in accurate position by writing it. An example. It is not complicated to do that.

2016-02-16 16:11:28 -0500 asked a question Can I use robot_localization if I only have GPS data?

I want to use human's GPS data (I only have GPS sensor)from smartphone to calculate human's velocity, position(utm). How to configure ekf_localization_node and navsat_transform_node?

2016-02-16 14:06:31 -0500 answered a question How to send right velocity to model in gazebo?

Maybe the model has Maximum speed.

2016-02-16 11:50:31 -0500 received badge  Enthusiast
2016-02-14 01:14:19 -0500 received badge  Popular Question (source)
2016-02-12 14:57:08 -0500 commented answer cannnot get orientation and twist when I use navsat_transform_node

Thanks. But how can I get the velocity direction of robot? I think I need to collect several coordinate data from GPS and compute the velocity direction. Any easier method?

2016-02-12 14:29:44 -0500 asked a question cannnot get orientation and twist when I use navsat_transform_node

I am using robot_localization. I cannot get orientation and twist when I use navsat_transform_node

/odometry/gps:

header: 
  seq: 28094
  stamp: 
    secs: 937
    nsecs: 125000000
  frame_id: map
child_frame_id: ''
pose: 
  pose: 
    position: 
      x: 2.49630257778
      y: 17.7388892993
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
  covariance: [1e-08, -5.048709793414476e-29, 0.0, 0.0, 0.0, 0.0, 5.048709793414476e-29, 1e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1e-08, 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, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
twist: 
  twist: 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  covariance: [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, 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, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
---

configuration:

<!-- Launch file for navsat_transform_node -->

<launch>

    <node pkg="robot_localization" type="navsat_transform_node" name="husky1_navsat_transform_node" respawn="true" output="screen">

      <param name="frequency" value="30"/>

      <param name="delay" value="3"/>

      <param name="magnetic_declination_radians" value="0.00003"/>

      <param name="yaw_offset" value="0"/>

      <param name="zero_altitude" value="true"/>

      <param name="broadcast_utm_transform" value="true"/>

      <param name="publish_filtered_gps" value="true"/>

      <param name="use_odometry_yaw" value="false"/>

      <param name="wait_for_datum" value="false"/>

      <remap from="/imu/data" to="/husky1/imu/data"/>
      <remap from="/odometry/filtered" to="/husky1/odometry/global"/>
      <remap from="/gps/fix" to="/husky1/navsat/fix"/>

      <remap from="/odometry/gps" to="/husky1/navsat/utm"/>
      <remap from="/gps/filtered" to="/husky1/navsat/fix/filtered"/>

    </node>

</launch>

/husky1/odometry/global:

---
header: 
  seq: 42357
  stamp: 
    secs: 1412
    nsecs: 656000000
  frame_id: map
child_frame_id: base_link
pose: 
  pose: 
    position: 
      x: 5.67409634562
      y: -0.00536289633199
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: -0.000118362412395
      w: 0.999999992995
  covariance: [70.66050408625279, 1.657914765327644e-06, 0.0, 0.0, 0.0, -2.806335318895866e-15, 1.6579147653275846e-06, 70.66541949291299, 0.0, 0.0, 0.0, -4.383180677631162e-12, 0.0, 0.0, 4.99170811431798e-07, -1.5429649866114815e-18, 2.7391211179689968e-14, 0.0, 0.0, 0.0, -1.542964986611482e-18, 4.983498248917792e-07, 5.097058643510261e-23, 0.0, 0.0, 0.0, 2.7391211179689968e-14, 5.0970586584165347e-23, 4.983498248908744e-07, 0.0, -2.8063353188958655e-15, -4.383180677631163e-12, 0.0, 0.0, 0.0, 9.99999583339231e-10]
twist: 
  twist: 
    linear: 
      x: -1.00203964705
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: -0.015310633634
  covariance: [0.0007568863759984565, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0007568863759984565, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.987593009686394e-07, -4.578453641153633e-26, 6.566583313329733e-23, 0.0, 0.0, 0.0, -4 ...
(more)
2016-02-12 11:31:22 -0500 received badge  Notable Question (source)