Help us understand the problem. What is going on with this article?

ROS33:cartgrapher(3D)を動かす。

More than 1 year has passed since last update.

Googleのcartographerを3D動かすところ(エラーが発生しなくなる)までの備忘録です。まだ使い物になっていません。IMUが。。。
@yonekenさんの、https://github.com/ros-japan-users/cartographer_example を参考にしています。

使用機器

Hokuyo UST-10LX 2台

IMU razor 9dof
https://www.switch-science.com/catalog/679/
https://github.com/KristofRobot/razor_imu_9dof

事前知識

ROSのIMUとの向き

http://wiki.ros.org/razor_imu_9dof indigoのバージョンに
X axis pointing forward (towards the short edge with the connector holes)
Y axis pointing to the left
Z axis pointing up

って書かれているから、セッテイング
合っていますか?

はまりどころ

laserscanトピックをremapしないと以下のエラーが発生します。

[ INFO] [1495933910.028762966]: I0528 10:11:50.000000  3703 kalman_local_trajectory_builder.cc:77] PoseTracker not yet initialized.
F0528 10:11:50.073985  3703 ordered_multi_queue.cc:112] Check failed: last_dispatched_time_ <= next_data->time (636315307100542090 vs. 636315307100479828) Non-sorted data added to queue: '(0, scan)'
[FATAL] [1495933910.074488052]: F0528 10:11:50.000000  3703 ordered_multi_queue.cc:112] Check failed: last_dispatched_time_ <= next_data->time (636315307100542090 vs. 636315307100479828) Non-sorted data added to queue: '(0, scan)'
*** Check failure stack trace: ***
    @     0x7faef16bd5cd  google::LogMessage::Fail()
    @     0x7faef16bf433  google::LogMessage::SendToLog()
    @     0x7faef16bd15b  google::LogMessage::Flush()
    @     0x7faef16bfe1e  google::LogMessageFatal::~LogMessageFatal()
    @           0x5c18bf  cartographer::sensor::OrderedMultiQueue::Dispatch()
    @           0x5c2b0f  cartographer::sensor::OrderedMultiQueue::Add()
    @           0x5bfd64  cartographer::sensor::Collator::AddSensorData()
    @           0x5cad78  cartographer::mapping::CollatedTrajectoryBuilder::AddSensorData()
    @           0x5160f6  cartographer_ros::SensorBridge::HandleImuMessage()
    @           0x4eb85b  _ZN5boost6detail8function26void_function_obj_invoker1IZN16cartographer_ros12_GLOBAL__N_13RunEvEUlRKNS_10shared_ptrIKN11sensor_msgs4Imu_ISaIvEEEEEE2_vSD_E6invokeERNS1_15function_bufferESD_
    @           0x4f2a6e  boost::detail::function::void_function_obj_invoker1<>::invoke()
    @           0x4fb0c9  ros::SubscriptionCallbackHelperT<>::call()
    @     0x7faeee8255dd  ros::SubscriptionQueue::call()
    @     0x7faeee7cfcf0  ros::CallbackQueue::callOneCB()
    @     0x7faeee7d10f3  ros::CallbackQueue::callAvailable()
    @     0x7faeee8296a1  ros::SingleThreadedSpinner::spin()
    @     0x7faeee80e73b  ros::spin()
    @           0x4ecbde  cartographer_ros::(anonymous namespace)::Run()
    @           0x4e93c4  main
    @     0x7faeed228830  __libc_start_main
    @           0x4ead99  _start
    @              (nil)  (unknown)
[cartographer_node-7] process has died [pid 3703, exit code -6, cmd /home/tauchi/catkin_ws/install_isolated/lib/cartographer_ros/cartographer_node -configuration_directory /home/tauchi/catkin_ws/install_isolated/share/cartographer_example/configuration_files -configuration_basename urg04x_3d.lua __name:=cartographer_node __log:=/home/tauchi/.ros/log/992700b2-4342-11e7-9159-d481d76989a7/cartographer_node-7.log].

動いたもの

urg_3d.launch
<launch>
<!-- param name="/use_sim_time" value="true" / -->
  <node name="horizontal_laser" pkg="urg_node"
    type="urg_node" >
    <param name="ip_address" value="192.168.1.31" />
    <param name="frame_id" value="horizontal_laser_link" />
    <remap from="scan" to="horizontal_laser_3d" />
  </node>

  <node name="vertical_laser" pkg="urg_node"
    type="urg_node" >
    <param name="ip_address" value="192.168.1.32" />
    <param name="frame_id" value="vertical_laser_link" />
    <remap from="scan" to="vertical_laser_3d" />
  </node>

  <include file="$(find razor_imu_9dof)/launch/razor-pub.launch" />

  <node pkg="tf" type="static_transform_publisher" name="imu_link_connect" args="0 0 0 0 0 0 /imu_link /base_imu_link 100"/>

  <param name="robot_description"
    textfile="$(find cartographer_ros)/urdf/backpack_2d.urdf"/>

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

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_example)/configuration_files
          -configuration_basename urg04x_3d.lua"
      output="screen">
    <remap from="scan" to="horizontal_laser_3d" />
    <remap from="scan" to="vertical_laser_3d" />
  </node>

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_ros)/configuration_files/demo_3d.rviz" />
</launch>
urg04x_3d.lua
-- Copyright 2016 The Cartographer Authors
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--      http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.

include "map_builder.lua"
include "trajectory_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
  tracking_frame = "base_link",
  published_frame = "base_link",
  odom_frame = "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,
}

TRAJECTORY_BUILDER_3D.scans_per_accumulation = 16

MAP_BUILDER.use_trajectory_builder_3d = true
MAP_BUILDER.num_background_threads = 3
MAP_BUILDER.sparse_pose_graph.optimization_problem.huber_scale = 5e2
MAP_BUILDER.sparse_pose_graph.optimize_every_n_scans = 320
MAP_BUILDER.sparse_pose_graph.constraint_builder.sampling_ratio = 0.03
MAP_BUILDER.sparse_pose_graph.optimization_problem.ceres_solver_options.max_num_iterations = 10
-- Reuse the coarser 3D voxel filter to speed up the computation of loop closure
-- constraints.
MAP_BUILDER.sparse_pose_graph.constraint_builder.adaptive_voxel_filter = TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter
MAP_BUILDER.sparse_pose_graph.constraint_builder.min_score = 0.62


return options

現状

どんどん上昇していきます。IMUのキャリブレーションの問題かは不明

NWLab
Hello Worldの次の世界へ mbedはこっち: https://developer.mbed.org/users/yueee_yt/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした