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

zzzZuo's profile - activity

2022-04-27 05:28:01 -0500 received badge  Stellar Question (source)
2020-03-23 19:46:03 -0500 received badge  Favorite Question (source)
2017-12-06 01:32:24 -0500 received badge  Famous Question (source)
2017-05-11 10:15:52 -0500 received badge  Famous Question (source)
2017-05-08 01:50:38 -0500 received badge  Nice Question (source)
2017-05-07 03:17:06 -0500 received badge  Notable Question (source)
2017-04-19 01:41:13 -0500 received badge  Popular Question (source)
2017-04-18 01:49:27 -0500 asked a question Using Cartographer as odometry with amcl for localization in a given map

I wanted to exploit the fact that Cartographer gives pretty accurate position estimate. I used Cartographer just using IMU and laser to make an indoor map, and it pretty good.

Then I want use Cartographer as odometry and amcl to do global localization in a pre-aquired map by Cartographer, but the robot drift away.

On my robot a TF frame that looks like this: image description

The configuration of Cartographer_ros is like:

include "map_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  map_frame = "odom",
  tracking_frame = "gyro_link",
  published_frame = "base_footprint",
  odom_frame = "google_odom",
  provide_odom_frame = true,
  use_odometry = false,
  use_laser_scan = true,
  use_multi_echo_laser_scan = false,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
}

MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.laser_min_range = 0.2
TRAJECTORY_BUILDER_2D.laser_max_range = 8.
TRAJECTORY_BUILDER_2D.laser_missing_echo_ray_length = 5.
TRAJECTORY_BUILDER_2D.use_imu_data = true
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.1)

SPARSE_POSE_GRAPH.constraint_builder.min_score = 0.65
SPARSE_POSE_GRAPH.constraint_builder.global_localization_min_score = 0.7

return options

I used the position estimate to find odometry and now Cartographer successful transform the required tf. But when I run amcl and publish an already created map using map_server, the pose of robot drift. It seems amcl doesn't work enven if the tf, map, laser_scan look like ok. And I also remap the Cartographer mapping map to something else . Please help how to resolve this issue.

2017-03-30 04:08:47 -0500 commented question Using CH Robotics IMU UM7 with ROS

@Naman @rob_tun, Hi, Naman and rob_tun, now I have the same problem while executing ros node. And my hardware interface is Serial2USB.could you tell me what do you solved your problem?

2016-10-12 08:07:47 -0500 received badge  Famous Question (source)
2016-08-09 04:43:21 -0500 answered a question How to use LSD Slam with a USB Webcam

Hi,I have the same problem with Cerin,but when I ran the launch file like Cerin's /webcam_lsd_slam.launch, it have some errors:

core service [/rosout] found
ERROR: cannot launch node of type [usb_cam/usb_cam_node]: usb_cam
ROS path [0]=/opt/ros/indigo/share/ros
ROS path [1]=/home/zuo/ros_ws/lsd_slam/src
ROS path [2]=/home/zuo/ros_ws/ws_uav/src
ROS path [3]=/home/zuo/ros_ws/ws_ethzasl_ptam/src
ROS path [4]=/opt/ros/indigo/share
ROS path [5]=/opt/ros/indigo/stacks
process[usb_cam/to_mono_node1-2]: started with pid [21536]
ERROR: cannot launch node of type [image_view/image_view]: image_view
ROS path [0]=/opt/ros/indigo/share/ros
ROS path [1]=/home/zuo/ros_ws/lsd_slam/src
ROS path [2]=/home/zuo/ros_ws/ws_uav/src
ROS path [3]=/home/zuo/ros_ws/ws_ethzasl_ptam/src
ROS path [4]=/opt/ros/indigo/share
ROS path [5]=/opt/ros/indigo/stacks
[ERROR] [1470734987.261875629]: Skipping XML Document "/opt/ros/indigo/share/hector_pose_estimation  hector_pose_estimation_nodelets.xml" which had no Root Element.  This likely means the XML is malformed or missing.

and my workspace is like:

~/lsd_slam
    src/
        /lsd_slam
            /lsd_slam
            /lsd_slam_core
            /lsd_slam_viewer
        /lsd_slam_test
           /launch
                /webcam_lsd_slam.launch

Thank in advance!

2016-08-09 04:32:13 -0500 commented question How to use LSD Slam with a USB Webcam

Hi Cerin, I want to do the same things with you.I add a launch file which is the same with you.But when I ran it, there have some error. And I put it in the answers 4, plz give me some advise. Thank you in advance!

2016-08-02 22:22:59 -0500 received badge  Famous Question (source)
2016-08-02 22:22:59 -0500 received badge  Notable Question (source)
2016-08-02 22:22:59 -0500 received badge  Popular Question (source)
2016-07-25 06:46:06 -0500 received badge  Citizen Patrol (source)
2016-07-25 06:31:32 -0500 asked a question Timer and MultiThread

Hi erveryone, I want to add some change in pr2_teleop/teleop_pr2_keyboard.cpp to add a front collision avoidance system in my UAV project.And then I have some questions:
1. I used ros::Timer to call keyboardLoop and subscribe a topic "/front_scan"(custom) to call a callback function RecieveCostmapCB to recieve UAV front costmap.

//create keyboard Timer
ros::NodeHandle nh_;  
ros::Timer keyboardTimer_;  
keyboardTimer_ = nh_.createTimer(ros::Duration(0.05), &TeleopPR2Keyboard::keyboardLoop, &tpk);  
keyboardTimer_.start();

But it can't step into RecieveCostmapCB until I press any key. As you know, that maybe can't step into RecieveCostmapCB when I press any key, but the result went counter to my hopes. So, why?
2. If I used ros::MultiThreadSpinner instead of ros::spin(), it will be OK! I know this is used MultiThread, but does ROS was so interlligence to do this?(I can't tell them what is belong to A thread and what is belong B thread.

ros::MultiThreadedSpinner spinner(2);  
spinner.spin();

void TeleopPR2Keyboard::init()
{
    cmd.linear.x = cmd.linear.y = cmd.angular.z = 0;  
    StopCmd.linear.x = StopCmd.linear.y = StopCmd.angular.z = 0;  
    vel_pub_ = n_.advertise<geometry_msgs::Twist>("cmd_vel", 1);  
    sub_costmap = n_.subscribe("/front_scan", 1000, &TeleopPR2Keyboard::RecieveCostmapCB, this);  
    ros::NodeHandle n_private("~");  
    n_private.param("walk_vel", walk_vel, 0.5);  
    n_private.param("run_vel", run_vel, 1.0);  
    n_private.param("yaw_rate", yaw_rate, 1.0);  
    n_private.param("yaw_run_rate", yaw_rate_run, 1.5);  
}
2016-07-04 03:31:22 -0500 received badge  Famous Question (source)
2016-06-08 03:13:46 -0500 received badge  Famous Question (source)
2016-05-31 18:59:29 -0500 received badge  Notable Question (source)
2016-05-16 10:52:34 -0500 received badge  Student (source)
2016-05-13 00:40:02 -0500 commented answer How to print values in SelfLocalizer.cpp in Nav2d

Thanks you so much for sharing!

2016-05-10 05:48:54 -0500 received badge  Notable Question (source)
2016-05-10 02:58:38 -0500 received badge  Popular Question (source)
2016-05-09 21:35:31 -0500 commented answer nav2d installation

Thanks for your advise!

2016-05-09 20:55:58 -0500 commented answer How to run amcl_demo in gazebo+RViz?

What's different on environment when use amcl_demo and gmapping in gazebo?And I'm so sorry for my english,hope you could understand. hhhhhhhhhhLOL

2016-05-09 20:53:30 -0500 commented answer How to run amcl_demo in gazebo+RViz?

I have used roslaunch gmapping in gazebo by relative path,and it's right.I think it maybe something wrong in launch file or .bashrc file.

2016-05-09 12:34:25 -0500 received badge  Popular Question (source)
2016-05-09 03:04:18 -0500 received badge  Commentator
2016-05-09 03:04:18 -0500 commented question Nav2d with Turtlebot failing to create map

Has your problem solved? I also have a similar problems that I couldn't receive a map after it roslaunch.

2016-05-09 03:03:59 -0500 commented answer How to run amcl_demo in gazebo+RViz?

I'm afraid it's not a path error.I try full path,but it also output next error info

process has died [pid 24354, exit code 255

In any case, thanks for your time.

2016-05-09 02:57:07 -0500 commented question How to recieve map using turtlebot and kinect

I have commented out the 3 remappings in the launch file, but it still has no map. I really don't know where is the problem caused in this way, thank you for your answer

2016-05-09 01:07:41 -0500 commented question How to recieve map using turtlebot and kinect

/opt/ros/indigo/share/turtlebot_navigation/maps/willow-2010-02-18-0.10.yaml

2016-05-08 22:55:42 -0500 asked a question How to recieve map using turtlebot and kinect

Im trying to use nav2d package with turtlebot and kinect to map an unknown room. But I couldn't recieve /map from Mapper node.

as you can see on my rqt_graph: image description

tf frame: image description

I can't use /StartMapping 3 and /StartExploration 2. These are the /map and the /Operator/local_map/costmap in RVIZ. image description image description

It has costmap, but has no map.

Here is my launch file:

 <launch>
<!-- Some general parameters -->

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

<rosparam file="$(find nav2d_tutorials)/param/ros.yaml"/>

<arg name="world_file"  default="$(env TURTLEBOT_GAZEBO_WORLD_FILE)"/>

 <arg name="base"      value="$(optenv TURTLEBOT_BASE kobuki)"/>  <!--create, roomba -->

<arg name="battery"   value="$(optenv TURTLEBOT_BATTERY /proc/acpi/battery/BAT0)"/>   <!--/proc/acpi/battery/BAT0 --> 

      <arg name="gui" default="true"/> 

      <arg name="stacks"    value="$(optenv TURTLEBOT_STACKS hexagons)"/>  <!-- circles, hexagons --> 

      <arg name="3d_sensor" value="$(optenv TURTLEBOT_3D_SENSOR kinect)"/>  <!-- kinect, asus_xtion_pro --> 

      <include file="$(find gazebo_ros)/launch/empty_world.launch">

      <arg name="use_sim_time" value="true"/>

      <arg name="debug" value="false"/>

      <arg name="gui" value="$(arg gui)" />

      <arg name="world_name" value="$(arg world_file)"/>

      </include> 

      <include file="$(find turtlebot_gazebo)/launch/includes/$(arg base).launch.xml">

      <arg name="base" value="$(arg base)"/>

      <arg name="stacks" value="$(arg stacks)"/>

      <arg name="3d_sensor" value="$(arg 3d_sensor)"/>

      </include>

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

           <param name="publish_frequency" type="double" value="30.0" />

     </node>

      <!-- Fake laser -->
      <node pkg="nodelet" type="nodelet" name="laserscan_nodelet_manager" args="manager"/>

      <node pkg="nodelet" type="nodelet" name="depthimage_to_laserscan"

               args="load depthimage_to_laserscan/DepthImageToLaserScanNodelet laserscan_nodelet_manager">

      <param name="scan_height" value="10"/>

      <param name="output_frame_id" value="/camera_depth_frame"/>   <!-- /camera_depth_frame -->

      <param name="range_min" value="0.45"/> 

      <remap from="image" to="/camera/depth/image_raw"/>

      <remap from="scan" to="base_scan"/>  <!-- <remap from="scan" to="base_scan"/>  -->

      </node> 

<!-- Start the Operator to control the simulated robot -->

<node name="Operator" pkg="nav2d_operator" type="operator" >

    <remap from="scan" to="base_scan"/>

    <remap from="cmd_vel" to="cmd_vel_mux/input/teleop" />

    <rosparam file="$(find nav2d_tutorials)/param/operator.yaml"/>

    <rosparam file="$(find nav2d_tutorials)/param/costmap.yaml" ns="local_map" />

</node>

<!-- Start Mapper to genreate map from laser scans -->

<node name="Mapper" pkg="nav2d_karto" type="mapper">

     <remap from="scan" to="base_scan"/>   

       <param name="base_frame" value="base_link"/>

    <param name="odom_frame" value="odom"/>

    <rosparam file="$(find nav2d_tutorials)/param/mapper.yaml"/>

</node>

<!-- Start the Navigator to move the robot autonomously -->

<node name="Navigator" pkg="nav2d_navigator" type="navigator">

    <rosparam file="$(find nav2d_tutorials)/param/navigator.yaml"/>  

</node>

<node name="GetMap" pkg="nav2d_navigator" type="get_map_client" />

<node name="Explore" pkg="nav2d_navigator" type="explore_client" />

<node name="SetGoal" pkg="nav2d_navigator" type="set_goal_client" />

<!-- RVIZ to view the visualization -->

<node name="RVIZ" pkg="rviz" type="rviz" args=" -d $(find nav2d_tutorials)/param/tutorial3.rviz" />

</launch>

ros.yaml:

laser_frame: base_laser_link

robot_frame: base_link

odometry_frame: odom

offset_frame: offset

map_frame: map

map_topic: map

laser_topic: scan 

map_service: static_map

costmap.yaml:

global_frame: odom

robot_base_frame: base_link

update_frequency: 5.0

publish_frequency: 1.0

publish_voxel_map: true

static_map: false

rolling_window: true

width: 6.0

height: 6.0

resolution: 0.05

map_type: costmap

track_unknown_space: true

transform_tolerance: 0.3

obstacle_range: 4.0

min_obstacle_height: 0.0

max_obstacle_height: 2.0

raytrace_range: 4.5

robot_radius: 0.18  #turtlrbot radius

inflation_radius: 0.5  #origin 0.75

cost_scaling_factor: 2.0

lethal_cost_threshold: 100

observation_sources: scan

scan: {data_type: LaserScan, expected_update_rate: 0.4 ...
(more)
2016-05-08 22:24:50 -0500 received badge  Editor (source)
2016-05-08 22:17:58 -0500 asked a question How to run amcl_demo in gazebo+RViz?

Hi ,every one. Now, I want to run amcl_demo in gazebo in my ROS(indigo + ubuntu14.04 + kinect1)

roslaunch turtlebot_gazebo turtlebot_world.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch
roslaunch turtlebot_gazebo amcl_demo.launch map_file:=database/test0.yaml

but after I ran

roslaunch turtlebot_gazebo amcl_demo.launch map_file:=database/test0.yaml

the terminal output some error info:

'[ERROR] [1462761356.977949263]: Map_server could not open database/test0.yaml.
 [ INFO] [1462761357.305058954, 74.440000000]: No matching device found.... waiting for devices. Reason: std::string      openni2_wrapper::OpenNI2Driver::resolveDeviceURI(const string&) @ /tmp/binarydeb/ros-indigo-openni2-camera- 0.2.5/src/openni2_driver.cpp @ 631 : Invalid device number 1, there are 0 devices connected.
[map_server-10] process has died [pid 11399, exit code 255, cmd /home/zuo/ros/ws/devel/lib/map_server/map_server database/test0.yaml __name:=map_server __log:=/home/zuo/.ros/log/94c0a0f6-158e-11e6-b559-005a39d84f79/map_server-10.log].
log file: /home/zuo/.ros/log/94c0a0f6-158e-11e6-b559-005a39d84f79/map_server-10*.log'

they said "No matching device found",but when I could ran gmapping in gazebo, it's OK!

roslaunch turtlebot_gazebo turtlebot_world.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch
roslaunch turtlebot_gazebo gmapping_demo.launch

So , what's problem with me? Thanks for your help!

2016-02-08 10:22:15 -0500 marked best answer Package "ompl" does not follow the version conventions.

When I ran

roslaunch turtlebot_bringup minimal.launch

there have

WARNING: Package "ompl" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).

And then I found RViz can't add RobotModel.

SOS! Thanks All!