LoginSignup
2
1

More than 5 years have passed since last update.

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

Posted at

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のキャリブレーションの問題かは不明

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1