Skip to content
Snippets Groups Projects
Unverified Commit 4b18e0d1 authored by Tixiao Shan's avatar Tixiao Shan Committed by GitHub
Browse files

Merge pull request #44 from 2scholz/base_link_param

add parameter for base_link (see @2scholz  comments)
parents af793997 396d5af7
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ lio_sam: ...@@ -8,6 +8,7 @@ lio_sam:
# Frames # Frames
lidarFrame: "base_link" lidarFrame: "base_link"
baselinkFrame: "base_link"
odometryFrame: "odom" odometryFrame: "odom"
mapFrame: "map" mapFrame: "map"
......
...@@ -72,6 +72,7 @@ public: ...@@ -72,6 +72,7 @@ public:
//Frames //Frames
string lidarFrame; string lidarFrame;
string baselinkFrame;
string odometryFrame; string odometryFrame;
string mapFrame; string mapFrame;
...@@ -152,6 +153,7 @@ public: ...@@ -152,6 +153,7 @@ public:
nh.param<std::string>("lio_sam/gpsTopic", gpsTopic, "odometry/gps"); nh.param<std::string>("lio_sam/gpsTopic", gpsTopic, "odometry/gps");
nh.param<std::string>("lio_sam/lidarFrame", lidarFrame, "base_link"); nh.param<std::string>("lio_sam/lidarFrame", lidarFrame, "base_link");
nh.param<std::string>("lio_sam/baselinkFrame", baselinkFrame, "base_link");
nh.param<std::string>("lio_sam/odometryFrame", odometryFrame, "odom"); nh.param<std::string>("lio_sam/odometryFrame", odometryFrame, "odom");
nh.param<std::string>("lio_sam/mapFrame", mapFrame, "map"); nh.param<std::string>("lio_sam/mapFrame", mapFrame, "map");
......
...@@ -34,11 +34,27 @@ public: ...@@ -34,11 +34,27 @@ public:
Eigen::Affine3f imuOdomAffineFront; Eigen::Affine3f imuOdomAffineFront;
Eigen::Affine3f imuOdomAffineBack; Eigen::Affine3f imuOdomAffineBack;
tf::TransformListener tfListener;
tf::StampedTransform lidar2Baselink;
double lidarOdomTime = -1; double lidarOdomTime = -1;
deque<nav_msgs::Odometry> imuOdomQueue; deque<nav_msgs::Odometry> imuOdomQueue;
TransformFusion() TransformFusion()
{ {
if(lidarFrame != baselinkFrame)
{
try
{
tfListener.waitForTransform(lidarFrame, baselinkFrame, ros::Time(0), ros::Duration(3.0));
tfListener.lookupTransform(lidarFrame, baselinkFrame, ros::Time(0), lidar2Baselink);
}
catch (tf::TransformException ex)
{
ROS_ERROR("%s",ex.what());
}
}
subLaserOdometry = nh.subscribe<nav_msgs::Odometry>("lio_sam/mapping/odometry", 5, &TransformFusion::lidarOdometryHandler, this, ros::TransportHints().tcpNoDelay()); subLaserOdometry = nh.subscribe<nav_msgs::Odometry>("lio_sam/mapping/odometry", 5, &TransformFusion::lidarOdometryHandler, this, ros::TransportHints().tcpNoDelay());
subImuOdometry = nh.subscribe<nav_msgs::Odometry>(odomTopic+"_incremental", 2000, &TransformFusion::imuOdometryHandler, this, ros::TransportHints().tcpNoDelay()); subImuOdometry = nh.subscribe<nav_msgs::Odometry>(odomTopic+"_incremental", 2000, &TransformFusion::imuOdometryHandler, this, ros::TransportHints().tcpNoDelay());
...@@ -106,7 +122,9 @@ public: ...@@ -106,7 +122,9 @@ public:
static tf::TransformBroadcaster tfOdom2BaseLink; static tf::TransformBroadcaster tfOdom2BaseLink;
tf::Transform tCur; tf::Transform tCur;
tf::poseMsgToTF(laserOdometry.pose.pose, tCur); tf::poseMsgToTF(laserOdometry.pose.pose, tCur);
tf::StampedTransform odom_2_baselink = tf::StampedTransform(tCur, odomMsg->header.stamp, odometryFrame, lidarFrame); if(lidarFrame != baselinkFrame)
tCur = tCur * lidar2Baselink;
tf::StampedTransform odom_2_baselink = tf::StampedTransform(tCur, odomMsg->header.stamp, odometryFrame, baselinkFrame);
tfOdom2BaseLink.sendTransform(odom_2_baselink); tfOdom2BaseLink.sendTransform(odom_2_baselink);
} }
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment