Coder Social home page Coder Social logo

mars_ros's People

Contributors

chris-bee avatar dantenoguera avatar eallak avatar mascheiber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

mars_ros's Issues

[Question] Shouldn't stamped messages have a frame id?

Here is a geometry_msgs/PoseStamped message I get running an instance of a gps_node:

header: 
  seq: 12188
  stamp: 
    secs: 1661984306
    nsecs: 715818644
  frame_id: ''
pose: 
  position: 
    x: -0.6634237632091935
    y: 3.4947216960559073
    z: 0.06363313476750493
  orientation: 
    x: -0.005933376892896241
    y: 0.18921987844821742
    z: 0.02400976216308664
    w: 0.9816232291259008

(Notice the empty frame_id)

Without frame_id we can't visualize poses, for example.

bug: issue when initializing with initial state

Summary

Hey @Chris-Bee, as discussed when initializing, the ros wrappers do not wait for the initial states to be set through the first sensor measurement, although they already include a code to set the inital states p_wi_init_ and q_wi_init_:

if (!do_state_init_)
{
mars::PoseSensorStateType pose_cal = sensor_sptr->get_state(pose1_sensor_sptr_->initial_calib_);
q_wi_init_ = pose_meas.orientation_ * pose_cal.q_ip_.inverse();
p_wi_init_ = pose_meas.position_ + q_wi_init_.toRotationMatrix() * (-pose_cal.p_ip_);
do_state_init_ = true;
}

Detailed Information

The following core init call does not wait for the do_state_init_ to be set to true

if (!core_logic_.core_is_initialized_)

Instead, the line should look like

-  if (!core_logic_.core_is_initialized_ )
+  if (!core_logic_.core_is_initialized_ && do_state_init_)

This can yield the issue of the first couple of published states being wrong due to the filter converging after initializing its core state to identity (0 in position, and unit quaternion in orientation).

See graph for detailed example

image
The red vertical bar indicates when the initialization was called.

This issue can also apply to other wrappers and is especially present if the pose sensor provides updates significantly different from the identity/origin.

Problem in getting it work

Hi, thanks for the great and helpful work! I converted INSANE dataset into rosbag, and tried to fuse 6 DoF VIO with IMU data using mars_ros. However, the orientation of the fused pose was diverged (it kept rotating very fast). The result is the same for other datasets I've tested. But if I set "vision1_att_meas_noise" to very large values like [10.0, 10.0, 10.0], the fused pose's orientation seems getting stable. I don't think this is right. I was wondering whether you could provide some minimal examples of mars_ros for VIO/IMU/GNSS fusion using public datasets like Euroc or INSANE. Then it would be really helpful for us to try mars_ros on more scenarios.

Looking forward to your reply. Thanks.

[Question] Why don't we call MarsWrapperGps::RunCoreStatePublisher() in MarsWrapperGps::ImuMeasurementCallback(...)

Hi! As the title says shoudn't this:

if (publish_on_propagation_)
{
mars::BufferEntryType latest_state;
core_logic_.buffer_.get_latest_state(&latest_state);
mars::CoreStateType latest_core_state = static_cast<mars::CoreType*>(latest_state.data_.core_.get())->state_;
pub_ext_core_state_.publish(
MarsMsgConv::ExtCoreStateToMsg(latest_state.timestamp_.get_seconds(), latest_core_state));
}

be like this:

if (publish_on_propagation_)
{
this->RunCoreStatePublisher();
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.