profile
viewpoint
Tom Moore ayrton04 Locus Robotics Edinburgh, United Kingdom

ayrton04/ros_comm 1

ROS communications-related packages, including core client libraries (roscpp, rospy, roslisp) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).

ayrton04/slam_karto 1

ROS Wrapper and Node for OpenKarto

ayrton04/buildfarm_deployment_config 0

Example configuration for buildfarm_deployment repo

ayrton04/design 0

Design documentation for ROS 2.0 effort

ayrton04/ecl_core 0

A set of tools and interfaces extending the capabilities of c++ to provide a lightweight, consistent interface with a focus for control programming.

ayrton04/EmulationStation 0

A Fork of Emulation Station for RetroPie. Emulation Station is a flexible emulator front-end supporting keyboardless navigation and custom system themes.

ayrton04/gazebo_ros_pkgs 0

Wrappers, tools and additional API's for using ROS with Gazebo. Formally simulator_gazebo stack

ayrton04/genpy 0

genpy

ayrton04/geometry 0

Packages for common geometric calculations including the ROS transform library, "tf". Also includes ROS bindings for "bullet" physics engine and "kdl" kinematics/dynamics package.

pull request commentcra-ros-pkg/robot_localization

fix issue caused by starting on uneven terrain

Just a note that I am not ignoring this. I am swamped at the moment, and will review soon. Thanks for submitting!

jrbaxter0

comment created time in 15 days

pull request commentcra-ros-pkg/robot_localization

Parameter for world_frame_id for navsat_transform

So the real root of this issue is that, if we specify the datum manually, we aren't able to get an odometry message before the frame_ids get used in the datum callback. I think that this PR needs three more things:

  1. Please also load the base_link_frame as a parameter.
  2. Both the world_frame and base_link_frame parameters should only get loaded if wait_for_datum is true. If those parameters are set and wait_for_datum is false, then we should warn the user that the parameters have no effect.
  3. If wait_for_datum is true, and we load the frame parameters, but we later get an odometry message and the frame_ids in that message don't match the ones in the parameters we set, we should issue a warning (once).
cdimmig

comment created time in 20 days

push eventcra-ros-pkg/robot_localization

push time in 22 days

push eventcra-ros-pkg/robot_localization

Tom Moore

commit sha 94162d55f1b1c318754564a0ff31be11a9fea816

Missed an exec_depend

view details

push time in 22 days

PR opened cra-ros-pkg/robot_localization

Reviewers
Fixing cppcheck

Addresses #580. While trying to make cppcheck work with the smart pointer macro in place, however, I also changed some things in the CMakeLists and the package.xml. If that's too bothersome, I am happy to break that into a separate PR.

ament_lint_auto appears to pull in all the linters that we were using. I verified this because you can yelled at for duplicate macros if you add ament_lint_auto_find_test_dependencies() and also retain the existing ones.

+15 -24

0 comment

3 changed files

pr created time in 22 days

create barnchcra-ros-pkg/robot_localization

branch : fix-cppcheck

created branch time in 22 days

issue commentcra-ros-pkg/robot_localization

[ROS2] cppcheck fails on smart pointer macro inclusion

Yeah, I'll do that tomorrow. If you want to fix it right now, feel free, but the build farm is at least happy for now.

SteveMacenski

comment created time in 22 days

issue commentcra-ros-pkg/robot_localization

[ROS2] cppcheck fails on smart pointer macro inclusion

So here's the command the build farm is running:

Test command: /usr/bin/python3 "-u" "/opt/ros/foxy/share/ament_cmake_test/cmake/run_test.py" "/tmp/ws/test_results/robot_localization/cppcheck.xunit.xml" "--package-name" "robot_localization" "--output-file" "/tmp/ws/build_isolated/robot_localization/ament_cppcheck/cppcheck.txt" "--command" "/opt/ros/foxy/bin/ament_cppcheck" "--xunit-file" "/tmp/ws/test_results/robot_localization/cppcheck.xunit.xml" "--language" "c++"

Boiling that down to this, and running it on the file in question, yields the test failure we're seeing:

ament_cppcheck --language "c++" src/robot_localization/include/robot_localization/filter_base.hpp 
[src/robot_localization/include/robot_localization/filter_base.hpp:89]: (error: unknownMacro) There is an unknown macro here somewhere. Configuration is required. If RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is a macro then please configure it.

However, if I just include the foxy root include directory, it's fine:

ament_cppcheck --include_dirs /opt/ros/foxy/include --language "c++" src/robot_localization/include/robot_localization/filter_base.hpp 
No problems found

So at the moment, it's not looking in the root ROS2 include directory when it runs ament_cppcheck, but that seems odd, because surely lots of packages use those smart pointer definitions.

SteveMacenski

comment created time in 23 days

issue commentcra-ros-pkg/robot_localization

navsat_transform: Parameter 'wait_for_datum' causes change to UTM transform.

Try this?

https://github.com/cra-ros-pkg/robot_localization/pull/576

Karl60

comment created time in 23 days

issue commentcra-ros-pkg/robot_localization

[ROS2] cppcheck fails on smart pointer macro inclusion

Looks a lot like this issue:

https://github.com/ament/ament_lint/issues/116

SteveMacenski

comment created time in 23 days

issue commentcra-ros-pkg/robot_localization

[ROS2] cppcheck fails on smart pointer macro inclusion

I'll get my ROS2 environment set up and have a run at this.

SteveMacenski

comment created time in 23 days

pull request commentros/rosdistro

robot_localization: 3.1.1-1 in 'foxy/distribution.yaml' [bloom]

Thanks for doing all this!

SteveMacenski

comment created time in 23 days

pull request commentcra-ros-pkg/robot_localization

adding boost dep

Wowza, well done. Maybe leave the cppcheck stuff. I'll take that as a "get my ROS2 environment dusted off and functional" task.

SteveMacenski

comment created time in 23 days

issue commentros/geometry2

New warning message for repeated transforms

Thanks for that. I have a better understanding of the change now.

While I can see the reason for not continually inserting the same transform, but I have two concerns about not permitting the overwrite:

  1. IMO, there may be perfectly valid cases where less accurate data is better than old data. I'd be willing to bet there are a fair number of fielded systems relying on this very concept. Granted, if you just ask for the most recent transform, you'll still get a usable-if-slightly-inaccurate transform, so perhaps that doesn't change anything, except that the user now has to change code to request the most recent transform instead of the one at the correct time.

  2. This represents a pretty big change from every other ROS 1 release, and it's affecting more than one package. My obvious interest in robot_localization aside, it's also (according to @doisyg) affecting packages like Cartographer. I know that new releases are good times to make such changes, but if I had to guess, this change is going to lead to a fair number of downstream code changes. For example, I'll need to add a feature to r_l (which I should have added ages ago, to be fair) to lag the generation of the state estimate.

Also potentially out of order delivery makes this problematic as the latest one "wins".

This would be an ideal use for sequence numbers, but I know those were deprecated (and I understand why).

I like the idea of designing an extension to allow for mutable transforms. If that is something for which nobody has extra cycles, would you consider changing this behavior so that, at least in this instance, we change this to only issue a ROS_WARN_ONCE or something?

ayrton04

comment created time in 24 days

Pull request review commentros/geometry2

Revert "do not add TF with redundant timestamp"

 bool TimeCache::insertData(const TransformStorage& new_data, std::string* error_       break;     storage_it++;   }++  // Allow to replace TF with the same timestamp   if (storage_it != storage_.end() && storage_it->stamp_ == new_data.stamp_)   {-    if (error_str)-    {-      std::stringstream ss;-      ss << "TF_REPEATED_DATA ignoring data with redundant timestamp";-      *error_str = ss.str();-    }-    return false;+    *storage_it = new_data;   }   else   {     storage_.insert(storage_it, new_data);+    pruneList();

Scratch that. It's using only the times in the list, not the current time.

Hugal31

comment created time in a month

Pull request review commentros/geometry2

Revert "do not add TF with redundant timestamp"

 TEST(TimeCache, DuplicateEntries)   EXPECT_TRUE(!std::isnan(stor.rotation_.w())); } +TEST(TimeCache, AllowReplaceData)

:+1:

Hugal31

comment created time in a month

Pull request review commentros/geometry2

Revert "do not add TF with redundant timestamp"

 bool TimeCache::insertData(const TransformStorage& new_data, std::string* error_       break;     storage_it++;   }++  // Allow to replace TF with the same timestamp   if (storage_it != storage_.end() && storage_it->stamp_ == new_data.stamp_)   {-    if (error_str)-    {-      std::stringstream ss;-      ss << "TF_REPEATED_DATA ignoring data with redundant timestamp";-      *error_str = ss.str();-    }-    return false;+    *storage_it = new_data;   }   else   {     storage_.insert(storage_it, new_data);+    pruneList();

pruneList prunes based on time, it appears, so maybe we want to leave it where it was? We might want to prune in either case.

Hugal31

comment created time in a month

Pull request review commentros/geometry2

Revert "do not add TF with redundant timestamp"

 bool TimeCache::insertData(const TransformStorage& new_data, std::string* error_       break;     storage_it++;   }-  if (storage_it != storage_.end() && storage_it->stamp_ == new_data.stamp_)-  {-    if (error_str)-    {-      std::stringstream ss;-      ss << "TF_REPEATED_DATA ignoring data with redundant timestamp";-      *error_str = ss.str();-    }-    return false;-  }-  else-  {-    storage_.insert(storage_it, new_data);-  }+  storage_.insert(storage_it, new_data);

Would it make sense to put a comment in here stating that repeated data is considered normal so that we don't get future PRs that change the behavior back?

Also, I haven't looked at the surrounding code too deeply, but if we find a transform with the same stamp in the storage_, should we do this?

if (storage_it != storage_.end() && storage_it->stamp_ == new_data.stamp_)
{
  *storage_it = new_data;
}
else
{
  storage_.insert(storage_it, new_data);
}

Apologies if I'm misinterpreting what's being done here and how storage_ is used later.

Hugal31

comment created time in a month

push eventcra-ros-pkg/robot_localization

David Jensen

commit sha 9277d982fa1a2d2a05eec4f59b4f8696ca903f1c

Local Cartesian Option (#575) * Added local cartesian option

view details

push time in a month

PR merged cra-ros-pkg/robot_localization

Local Cartesian Option

This PR adds a feature to navsat_transform that allows you to optionally use a Local Cartesian (also known as a Local Tangent Plane) coordinate system rather than the UTM coordinate system internally. This feature is useful for robots that operate within several kilometers of their origin location, but may need to operate close to or on top of a UTM boundary. Currently, navsat_transform does not handle crossing UTM boundaries.

The Local Cartesian transform is handled by GeographicLib: Local Cartesian

Changes in this PR:

  • Geographic lib is added as a build dependecy to the robot_localization package
  • The parameter use_local_cartesian is added to navsat_transform
  • Internal member variables of navsat_transform are re-named from "utm" to "cartesian" to more accurately reflect the data they hold

This feature has been tested on our robotic lawnmower across the UTM boundary between zones 16 and 17 at -84.0 degrees longitude.

+195 -112

9 comments

4 changed files

AGummyBear

pr closed time in a month

pull request commentcra-ros-pkg/robot_localization

Local Cartesian Option

Thanks again for the PR!

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 namespace RobotLocalization     nh_priv.param("transform_timeout", transform_timeout, 0.0);     transform_timeout_.fromSec(transform_timeout); +    // Check for deprecated parameters+    if (nh_priv.param("broadcast_utm_transform", unused, false))+    {+      ROS_WARN("navsat_transform, Parameter 'broadcast_utm_transform' has been deprecated. Please use"

Sorry to be a pain, but I think this will overwrite the value of broadcast_cartesian_transform_ with false if they don't have broadcast_utm_transform set. Maybe change this to getParam?

if (nh_priv.getParam("broadcast_utm_transform", broadcast_cartesian_transform_))
AGummyBear

comment created time in a month

issue commentros/geometry2

New warning message for repeated transforms

My first choice would be to get rid of the warning and overwrite the existing transform, if that's an option.

ayrton04

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 namespace RobotLocalization     nh_priv.param("transform_timeout", transform_timeout, 0.0);     transform_timeout_.fromSec(transform_timeout); +    // Check for deprecated parameters+    if (nh_priv.param("broadcast_utm_transform", unused, false))+    {+      ROS_WARN("navsat_transform, Parameter 'broadcast_utm_transform' has been deprecated. Please use"

I think we should maybe warn them, but then set the equivalent broadcast_cartesian_transform setting anyway. It gets a little more complicated if they do something silly like set broadcast_cartesian_transform: false and then broadcast_utm_transform: true (or vice-versa), but there's no reason for this to get too complex.

AGummyBear

comment created time in a month

delete branch locusrobotics/ros_comm

delete branch : initialize-repeat-latched

delete time in a month

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 0dd1d9206b6cce3e72cc6fbda29342595dde8fec

Initializing the repeat_latched option (#17) * Initializing the repeat_latched option and adding test

view details

push time in a month

PR merged locusrobotics/ros_comm

Initializing the repeat_latched option

Addresses https://locusrobotics.atlassian.net/browse/RST-3442.|

FYI @paulbovbel

+77 -3

4 comments

2 changed files

ayrton04

pr closed time in a month

push eventcra-ros-pkg/robot_localization

Ronald Ensing

commit sha f9a20dc4e0e4681e7f433cf0d5143cc82d4e73a7

Fix frame id of imu in differential mode, closes #482. (#522) * Fix frame id of imu in differential mode, closes #482.

view details

push time in a month

issue closedcra-ros-pkg/robot_localization

A possible invalid assumption regarding frame id of IMU in differential mode

I've experienced some problems with the state estimation only when I use (the orientation of) an IMU in differential mode. If I set differential mode to false, everything is fine. This line https://github.com/cra-ros-pkg/robot_localization/blob/086bcfcc81d422d357e2ecabbadcca68624a0062/src/ros_filter.cpp#L2534 seems suspicious to me. I would expect that it should use the frame_id of the IMU message. If I replace that line with poseTmp.frame_id_ = msg->header.frame_id; everything looks fine. Any idea why the frame id should be set to finalTargetFrame if differential mode is used?

closed time in a month

RonaldEnsing

Pull request review commentlocusrobotics/ros_comm

Initializing the repeat_latched option

 # POSSIBILITY OF SUCH DAMAGE.  import unittest+import rosbag+import roslaunch import rospy import rostest+import os import sys from std_msgs.msg import * +def generate_bags(topic, rosbag_args, player_name):+    pub = rospy.Publisher(topic, String, latch=True)++    pub.publish(String("hello"))++    # Wait for some time before starting the bag recording+    rospy.sleep(rospy.Duration.from_sec(5.0))

I think it's also testing latching, no? We want to confirm latching is working, so we

  • Publish
  • Wait a little while
  • Start recording
ayrton04

comment created time in a month

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 89c53d01089d3dd75e3997f6f3c1c9a0e904579e

PR feedback

view details

push time in a month

pull request commentlocusrobotics/ros_comm

Initializing the repeat_latched option

@tappan-at-git, sorry to do this again, but would you mind having one more look? I added a second test for the case where repeating is disabled.

ayrton04

comment created time in a month

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 719071c7a571682f8d93b52b247445e4f5d87bf4

Handling eval tag inside yaml files (#16)

view details

Tom Moore

commit sha a397feae670d5a3529f9aaf6fb9a956d629a8a5e

Initializing the repeat_latched option and adding test

view details

Tom Moore

commit sha 91980de49853fc86aabbcad55ac3a8e3b6394e1d

PR feedback

view details

push time in a month

delete branch locusrobotics/wireless

delete branch : RST-3447-not-associated

delete time in a month

push eventlocusrobotics/wireless

Tom Moore

commit sha 4793098d248a61c8b6a237aeaa2c4c413dcaa145

RST-3447 Fix crashing when wifi loses AP association (#5) * Handling case where wifi association fails

view details

push time in a month

PR merged locusrobotics/wireless

RST-3447 Fix crashing when wifi loses AP association

Trying to minimise changes to the existing codebase. I could have put the error in the exception and printed it in the except case, but this was less invasive.

+4 -1

0 comment

1 changed file

ayrton04

pr closed time in a month

push eventlocusrobotics/wireless

Tom Moore

commit sha 0c1562a18b9cb00e2a5e206fa70943ee0a1bd406

PR feedback

view details

push time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 namespace RobotLocalization       tf2::Quaternion imu_quat;       imu_quat.setRPY(0.0, 0.0, imu_yaw); -      // The transform order will be orig_odom_pos * orig_utm_pos_inverse * cur_utm_pos.+      // The transform order will be orig_odom_pos * orig_cartesian_pos_inverse * cur_cartesian_pos.       // Doing it this way will allow us to cope with having non-zero odometry position       // when we get our first GPS message.-      tf2::Transform utm_pose_with_orientation;-      utm_pose_with_orientation.setOrigin(transform_utm_pose_corrected.getOrigin());-      utm_pose_with_orientation.setRotation(imu_quat);+      tf2::Transform cartesian_pose_with_orientation;+      cartesian_pose_with_orientation.setOrigin(transform_cartesian_pose_corrected.getOrigin());+      cartesian_pose_with_orientation.setRotation(imu_quat); -      utm_world_transform_.mult(transform_world_pose_, utm_pose_with_orientation.inverse());+      cartesian_world_transform_.mult(transform_world_pose_, cartesian_pose_with_orientation.inverse()); -      utm_world_trans_inverse_ = utm_world_transform_.inverse();+      cartesian_world_trans_inverse_ = cartesian_world_transform_.inverse();        ROS_INFO_STREAM("Transform world frame pose is: " << transform_world_pose_);-      ROS_INFO_STREAM("World frame->utm transform is " << utm_world_transform_);+      ROS_INFO_STREAM("World frame->cartesian transform is " << cartesian_world_transform_);        transform_good_ = true; -      // Send out the (static) UTM transform in case anyone else would like to use it.-      if (broadcast_utm_transform_)+      // Send out the (static) Cartesian transform in case anyone else would like to use it.+      if (broadcast_cartesian_transform_)       {-        geometry_msgs::TransformStamped utm_transform_stamped;-        utm_transform_stamped.header.stamp = ros::Time::now();-        utm_transform_stamped.header.frame_id = (broadcast_utm_transform_as_parent_frame_ ? "utm" : world_frame_id_);-        utm_transform_stamped.child_frame_id = (broadcast_utm_transform_as_parent_frame_ ? world_frame_id_ : "utm");-        utm_transform_stamped.transform = (broadcast_utm_transform_as_parent_frame_ ?-                                             tf2::toMsg(utm_world_trans_inverse_) : tf2::toMsg(utm_world_transform_));-        utm_transform_stamped.transform.translation.z = (zero_altitude_ ?-                                                           0.0 : utm_transform_stamped.transform.translation.z);-        utm_broadcaster_.sendTransform(utm_transform_stamped);+        geometry_msgs::TransformStamped cartesian_transform_stamped;+        cartesian_transform_stamped.header.stamp = ros::Time::now();+        std::string cartesian_frame_id = (use_local_cartesian_)? "local_enu" : "utm";

The parentheses here are a little off. To retain the original style, we should do this:

std::string cartesian_frame_id = (use_local_cartesian_? "local_enu" : "utm");

I realize the parentheses are unnecessary, but IMO it makes these things more readable.

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

  #include <string> +#include <GeographicLib/Geocentric.hpp>

Nit: can we drop these headers before <string>? I like to keep the STL headers last.

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 namespace RobotLocalization       return false;     } -    response.map_point = utmToMap(utm_pose).pose.pose.position;+    response.map_point = cartesianToMap(cartesian_pose).pose.pose.position;      return true;   } -  nav_msgs::Odometry NavSatTransform::utmToMap(const tf2::Transform& utm_pose) const+  nav_msgs::Odometry NavSatTransform::cartesianToMap(const tf2::Transform& cartesian_pose) const   {     nav_msgs::Odometry gps_odom{}; -    tf2::Transform transformed_utm_gps{};+    tf2::Transform transformed_cartesian_gps{}; -    transformed_utm_gps.mult(utm_world_transform_, utm_pose);-    transformed_utm_gps.setRotation(tf2::Quaternion::getIdentity());+    transformed_cartesian_gps.mult(cartesian_world_transform_, cartesian_pose);+    transformed_cartesian_gps.setRotation(tf2::Quaternion::getIdentity());      // Set header information stamp because we would like to know the robot's position at that timestamp     gps_odom.header.frame_id = world_frame_id_;     gps_odom.header.stamp = gps_update_time_;      // Now fill out the message. Set the orientation to the identity.-    tf2::toMsg(transformed_utm_gps, gps_odom.pose.pose);+    tf2::toMsg(transformed_cartesian_gps, gps_odom.pose.pose);     gps_odom.pose.pose.position.z = (zero_altitude_ ? 0.0 : gps_odom.pose.pose.position.z);      return gps_odom;   }    void NavSatTransform::mapToLL(const tf2::Vector3& point, double& latitude, double& longitude, double& altitude) const   {-    tf2::Transform odom_as_utm{};+    tf2::Transform odom_as_cartesian{};      tf2::Transform pose{};     pose.setOrigin(point);     pose.setRotation(tf2::Quaternion::getIdentity()); -    odom_as_utm.mult(utm_world_trans_inverse_, pose);-    odom_as_utm.setRotation(tf2::Quaternion::getIdentity());+    odom_as_cartesian.mult(cartesian_world_trans_inverse_, pose);+    odom_as_cartesian.setRotation(tf2::Quaternion::getIdentity()); -    // Now convert the data back to lat/long and place into the message-    NavsatConversions::UTMtoLL(odom_as_utm.getOrigin().getY(),-                               odom_as_utm.getOrigin().getX(),-                               utm_zone_,-                               latitude,-                               longitude);-    altitude = odom_as_utm.getOrigin().getZ();+    if (use_local_cartesian_)+    {+      double altitude_tmp = 0.0;+      gps_local_cartesian_.Reverse(odom_as_cartesian.getOrigin().getX(),+                                   odom_as_cartesian.getOrigin().getY(),+                                   0.0,+                                   latitude,+                                   longitude,+                                   altitude_tmp);+      altitude = odom_as_cartesian.getOrigin().getZ();+    }+    else+    {+      NavsatConversions::UTMtoLL(odom_as_cartesian.getOrigin().getY(),+                                 odom_as_cartesian.getOrigin().getX(),+                                 utm_zone_,+                                 latitude,+                                 longitude);+      altitude = odom_as_cartesian.getOrigin().getZ();+    }   } -  void NavSatTransform::getRobotOriginUtmPose(const tf2::Transform &gps_utm_pose,-                                              tf2::Transform &robot_utm_pose,+  void NavSatTransform::getRobotOriginCartesianPose(const tf2::Transform &gps_cartesian_pose,+                                              tf2::Transform &robot_cartesian_pose,

Same comment re: parameter alignment.

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 namespace RobotLocalization     // Load the parameters we need     nh_priv.getParam("magnetic_declination_radians", magnetic_declination_);     nh_priv.param("yaw_offset", yaw_offset_, 0.0);-    nh_priv.param("broadcast_utm_transform", broadcast_utm_transform_, false);-    nh_priv.param("broadcast_utm_transform_as_parent_frame", broadcast_utm_transform_as_parent_frame_, false);+    nh_priv.param("broadcast_utm_transform", broadcast_cartesian_transform_, false);

Let's add two new parameters for broadcast_cartesian_transform and broadcast_cartesian_transform_as_parent_frame as well. Maybe check if the user set broadcast_utm_transform and issue a deprecation warning?

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 class NavSatTransform     //!     bool fromLLCallback(robot_localization::FromLL::Request& request, robot_localization::FromLL::Response& response); -    //! @brief Given the pose of the navsat sensor in the UTM frame, removes the offset from the vehicle's centroid-    //! and returns the UTM-frame pose of said centroid.+    //! @brief Given the pose of the navsat sensor in the cartesian frame, removes the offset from the vehicle's+    //! centroid and returns the cartesian-frame pose of said centroid.     //!-    void getRobotOriginUtmPose(const tf2::Transform &gps_utm_pose,-                               tf2::Transform &robot_utm_pose,+    void getRobotOriginCartesianPose(const tf2::Transform &gps_cartesian_pose,+                               tf2::Transform &robot_cartesian_pose,

With the method name change, the second and third parameters are now misaligned. Would you mind updating that?

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

 namespace RobotLocalization      if (can_transform)     {-      // Get the orientation we'll use for our UTM->world transform-      tf2::Quaternion utm_orientation = transform_orientation_;-      tf2::Matrix3x3 mat(utm_orientation);+      // Get the orientation we'll use for our Cartesian->world transform+      tf2::Quaternion cartesian_orientation = transform_orientation_;+      tf2::Matrix3x3 mat(cartesian_orientation);        // Add the offsets       double roll;       double pitch;       double yaw;       mat.getRPY(roll, pitch, yaw);       yaw += (magnetic_declination_ + yaw_offset_ + utm_meridian_convergence_);-      utm_orientation.setRPY(roll, pitch, yaw);+      cartesian_orientation.setRPY(roll, pitch, yaw);        // Rotate the GPS linear offset by the orientation       // Zero out the orientation, because the GPS orientation is meaningless, and if it's non-zero, it will make the-      // the computation of robot_utm_pose erroneous.-      offset.setOrigin(tf2::quatRotate(utm_orientation, offset.getOrigin()));+      // the computation of robot_c_pose erroneous.

*robot_cartesian_pose

AGummyBear

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Local Cartesian Option

   <build_depend>message_generation</build_depend>   <build_depend>python-catkin-pkg</build_depend>   <build_depend>roslint</build_depend>+  <build_depend>geographiclib</build_depend>

I'd like to retain the alphabetical order of these, if possible.

AGummyBear

comment created time in a month

pull request commentcra-ros-pkg/robot_localization

fix finding headers for yaml-cpp when building foxy

@SteveMacenski, can this be merged?

ManuelMeraz

comment created time in a month

Pull request review commentcra-ros-pkg/robot_localization

Fix frame id of imu in differential mode, closes #482.

 namespace RobotLocalization     {       // Otherwise, we should use our target frame       finalTargetFrame = targetFrame;-      poseTmp.frame_id_ = (differential ? finalTargetFrame : msg->header.frame_id);+      poseTmp.frame_id_ = msg->header.frame_id;

@RonaldEnsing sorry for the ping, especially as I took forever to get to this PR, but would you mind updating the PR with the code above so I can merge? If you don't have the cycles, let me know, and I'll take care of it. Thanks!

RonaldEnsing

comment created time in a month

Pull request review commentlocusrobotics/wireless

RST-3447 Fix crashing when wifi loses AP association

 def main():                 previous_error = False                 rospy.loginfo("Retrieved status of interface %s. Now updating at %f Hz." % (dev, hz)) -        except subprocess.CalledProcessError:+        except:

(Just FYI, the linter was cool with this)

ayrton04

comment created time in a month

Pull request review commentlocusrobotics/wireless

RST-3447 Fix crashing when wifi loses AP association

 def main():                 previous_error = False                 rospy.loginfo("Retrieved status of interface %s. Now updating at %f Hz." % (dev, hz)) -        except subprocess.CalledProcessError:+        except:

I just did a cursory readup on exceptions when I was writing this, and saw that not all exceptions are guaranteed to inherit from Exception, so I just though, "well, might as well get everything." But I am happy to catch everything below Exception instead.

ayrton04

comment created time in a month

pull request commentlocusrobotics/ros_comm

Initializing the repeat_latched option

Yeah, how do we feel about that? If this is getting PR-ed upstream, are they going to be unhappy about the removal of the existing test?

ayrton04

comment created time in a month

push eventlocusrobotics/wireless

Tom Moore

commit sha abe449e706c5167f95e5f45d68fe8f6606002d4f

Handling case where wifi association fails

view details

push time in a month

PR opened locusrobotics/wireless

Reviewers
RST-3447 not associated

Trying to minimise changes to the existing codebase. I could have put the error in the exception and printed it in the except case, but this was less invasive.

+4 -1

0 comment

1 changed file

pr created time in a month

create barnchlocusrobotics/wireless

branch : RST-3447-not-associated

created branch time in a month

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 699fe21e413ba888e57c1387252cac664fd7bfb4

Initializing the repeat_latched option and adding test

view details

push time in a month

pull request commentlocusrobotics/ros_comm

Initializing the repeat_latched option

Added a test as well.

ayrton04

comment created time in a month

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 9ef45b0ee7732ec0f56ea5b8173313bef8f50962

Initializing the repeat_latched option and adding test

view details

push time in a month

delete branch locusrobotics/ros_comm

delete branch : RST-3426-eval-tag

delete time in a month

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 719071c7a571682f8d93b52b247445e4f5d87bf4

Handling eval tag inside yaml files (#16)

view details

push time in a month

PR merged locusrobotics/ros_comm

RST-3426 Handling eval tag inside yaml files

See https://locusrobotics.atlassian.net/browse/RST-3426 for details.

+25 -9

0 comment

1 changed file

ayrton04

pr closed time in a month

PR opened locusrobotics/ros_comm

Reviewers
Initializing the repeat_latched option

Addresses https://locusrobotics.atlassian.net/browse/RST-3442.|

FYI @paulbovbel

+1 -0

0 comment

1 changed file

pr created time in a month

create barnchlocusrobotics/ros_comm

branch : initialize-repeat-latched

created branch time in a month

issue commentros/geometry2

New warning message for repeated transforms

Sorry for the direct mention, but do you have any thoughts on this, @tfoote?

ayrton04

comment created time in 2 months

Pull request review commentlocusrobotics/ros_comm

RST-3426 Handling eval tag inside yaml files

 def _eval_dirname_context(): return _eval_dirname(context['filename'])         raise SubstitutionException("$(eval ...) may not contain double underscore expressions")     return str(eval(s, {}, _DictWrapper(context['arg'], functions))) +def _resolve_eval(resolved, a, unused, context):+    eval_resolved = _eval(a[5:], context)+    return resolved.replace("$(%s)" % a, eval_resolved)

This is how some of the other handlers do this last step as well:

https://github.com/locusrobotics/ros_comm/pull/16/files#diff-85d266eabfa0eb4dda9a4551c1929065R296

ayrton04

comment created time in 2 months

Pull request review commentlocusrobotics/ros_comm

RST-3426 Handling eval tag inside yaml files

 def resolve_args(arg_str, context=None, resolve_anon=True, filename=None):         context = {}     if not arg_str:         return arg_str-    # special handling of $(eval ...)-    if arg_str.startswith('$(eval ') and arg_str.endswith(')'):-        return _eval(arg_str[7:-1], context)

Note that the parameters that we pass to eval originally were the raw string, e.g.,

$(eval radius * 2)

or

$eval(find('package') + '/directory')

They added this 'special handling' clause because you can have nested parentheses inside an eval tag (see the find example above), and _collect_args couldn't parse that.

To get around this, I adjusted the _collect_args method so it could correctly parse eval tags, even with nested params. Note that the splitting that we do here is useless for the purposes of eval. All it wants is the raw file string (resolved), the line string (a), and the context. I just had to make that method signature match the other commands handlers.

ayrton04

comment created time in 2 months

push eventlocusrobotics/ros_comm

Tom Moore

commit sha 2e3eeac991595710b4ebe5512e0195478efaf6a0

Handling eval tag inside yaml files

view details

push time in 2 months

PR opened locusrobotics/ros_comm

RST-3426 Handling eval tag inside yaml files

See https://locusrobotics.atlassian.net/browse/RST-3426 for details.

+13 -7

0 comment

1 changed file

pr created time in 2 months

create barnchlocusrobotics/ros_comm

branch : RST-3426-eval-tag

created branch time in 2 months

pull request commentcra-ros-pkg/robot_localization

Local Cartesian Option

Thank you very much for this PR. I will review it next week. In the meantime, the build farm is unhappy because of some linting:

http://build.ros.org/job/Mpr__robot_localization__ubuntu_bionic_amd64/37/testReport/roslint/LintCheck/roslint_robot_localization/

AGummyBear

comment created time in 2 months

pull request commentcra-ros-pkg/robot_localization

navsat_transform diagram to address #550

@SteveMacenski, if you agree, then feel free to merge.

mabelzhang

comment created time in 2 months

issue closedcra-ros-pkg/robot_localization

Release robot_localization into ROS Noetic?

Would you mind releasing robot_localization to ROS Noetic? It looks like all of its dependencies have been released, and recursively 15 repos need it.

I'm not sure how much work it will need. The Noetic Migration Guide or the guide about transitioning ROS packages to Python 3 may be useful.

closed time in 2 months

sloretz

issue commentcra-ros-pkg/robot_localization

Release robot_localization into ROS Noetic?

This is now complete. Note that we're tracking a different issue with tf2, but I think the fix is on their end in this case.

sloretz

comment created time in 2 months

issue commentcra-ros-pkg/robot_localization

Better support for relative pose measurements

Not at the moment, actually, no. We need to get a few example launch/config files in there, but it's been hard to find time for it. Hopefully we'll get to that soon!

NikolausDemmel

comment created time in 2 months

delete branch cra-ros-pkg/robot_localization

delete branch : minimum-cmake-version

delete time in 2 months

push eventcra-ros-pkg/robot_localization

Tom Moore

commit sha b93538896929159a2e3d32c7955f638ca0a0969c

Increasing the minimum CMake version (#573) * Increasing the minimum CMake version and linting

view details

push time in 2 months

PR merged cra-ros-pkg/robot_localization

Increasing the minimum CMake version

Testing if this will also work for the melodic builds.

+3 -1

0 comment

3 changed files

ayrton04

pr closed time in 2 months

issue commentcra-ros-pkg/robot_localization

TF_REPEATED_DATA warning in Noetic

Started a discussion here:

https://github.com/ros/geometry2/issues/467

ayrton04

comment created time in 2 months

issue openedros/geometry2

New warning message for repeated transforms

I just released robot_localization for Noetic, and I'm noting that while the tests pass, we are getting spammed with an endless stream of this message:

Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_link at time 1432235782.066014 according to authority unknown_publisher
         at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.1/src/buffer_core.cpp

For background, this is a common scenario with r_l:

Cycle 1: receive measurement from sensor with time stamp t1. Fuse measurement. Publish state (and transform) at time t1. Cycle 2: receive measurement from sensor with time stamp t2 < t1. Rewind filter, insert measurement from t2, fuse measurement from t2 and then measurement from t1. Publish corrected state at time t1.

From the way things look, it seems that tf2 used to re-insert the transform, until this change:

https://github.com/ros/geometry2/commit/eefb50935bfd28223c87b3d708e916f7bcc4b4ca

That would have been helpful for the use case in question, as overwriting the first transform is what we'd want to do.

However, it was later changed:

https://github.com/ros/geometry2/commit/04625380bdff3f3e9e860fc0e85f71674ddd1587#diff-c25683741e1f7b4e50eb6c5cdcad9661R275

Now insertData returns false and prints out an error.

Either of the previous behaviors would be preferable to the new one. What are the ramifications of restoring the behavior from this commit?

created time in 2 months

issue openedcra-ros-pkg/robot_localization

TF_REPEATED_DATA warning in Noetic

I'm running the package test suite in Noetic, and I am seeing this getting spammed:

Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_link at time 1432235782.066014 according to authority unknown_publisher
         at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.1/src/buffer_core.cpp
Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_link at time 1432235782.433942 according to authority unknown_publisher
         at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.1/src/buffer_core.cpp
Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_link at time 1432235782.865701 according to authority unknown_publisher
         at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.1/src/buffer_core.cpp
Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_link at time 1432235782.965662 according to authority unknown_publisher
         at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.1/src/buffer_core.cpp

This is clearly a new warning, and I'm assuming it's due to this common situation:

  • Cycle 1: receive measurement from sensor with time stamp t1. Fuse measurement. Publish state at time t1.
  • Cycle 2: receive measurement from sensor with time stamp t2 < t1. Rewind filter, insert measurement from t2, fuse measurement from t2 and then measurement from t1. Publish state at time t1.

It looks like this helpful change was added, in which tf2 would just overwrite the old transform with the new one:

https://github.com/ros/geometry2/commit/eefb50935bfd28223c87b3d708e916f7bcc4b4ca

However, that was later changed, such that attempting to broadcast the same transform at the same time would fail and spit out a warning:

https://github.com/ros/geometry2/commit/04625380bdff3f3e9e860fc0e85f71674ddd1587#diff-c25683741e1f7b4e50eb6c5cdcad9661R275

@SteveMacenski, what are your thoughts here? Should I open a ticket on the geometry2 repo?

created time in 2 months

push eventcra-ros-pkg/robot_localization

Tom Moore

commit sha c05634b1f4d7ae8d25a3ae69fb3299422c7cb8cf

Linting for good measure

view details

push time in 2 months

PR opened cra-ros-pkg/robot_localization

Increasing the minimum CMake version

Testing if this will also work for the melodic builds.

+1 -1

0 comment

1 changed file

pr created time in 2 months

create barnchcra-ros-pkg/robot_localization

branch : minimum-cmake-version

created branch time in 2 months

issue commentcra-ros-pkg/robot_localization

Release robot_localization into ROS Noetic?

https://github.com/ros/rosdistro/pull/25297

Once that gets merged and the buildfarm picks this up and (hopefully) builds it, I'll close this.

sloretz

comment created time in 2 months

create barnchayrton04/rosdistro

branch : bloom-robot_localization-6

created branch time in 2 months

PR opened ros/rosdistro

Reviewers
robot_localization: 2.6.8-2 in 'noetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository robot_localization to 2.6.8-2:

  • upstream repository: https://github.com/cra-ros-pkg/robot_localization.git
  • release repository: https://github.com/cra-ros-pkg/robot_localization-release.git
  • distro file: noetic/distribution.yaml
  • bloom version: 0.9.7
  • previous version for package: null

robot_localization

* Adding conditional build dependencies (#572 <https://github.com/cra-ros-pkg/robot_localization/issues/572>)
* Contributors: Tom Moore
+15 -0

0 comment

1 changed file

pr created time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 99915a24bfef478b08286266d836d59a748d1fbf

Rebase from 'upstream' (no changes)

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 47b6deedfc6e5115625f5b9268d783d2ab5f5c19

Modified tracks.yaml

view details

Tom Moore

commit sha d92072b0e495ed72137693447727191f71f3b4d2

Modified tracks.yaml

view details

Tom Moore

commit sha 64fb50c1f80f4d21dc34f134f516c4f8f84f99f2

Updating release inc to: 2

view details

Tom Moore

commit sha 12d2108ebf7bd660bd6ad215ef106483771bd56a

Updating README.md

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 4ac4291045c7a16bbecfe2811cfc3c82ceb5e556

Rebase from 'release/noetic/robot_localization'

view details

Tom Moore

commit sha 323fb5a2bcc6c5f5ba2c0f9cfc6ce78f5d37e3b2

Placing rpm template files

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 90b5f830c6df6f6a200d26a449f1a061f588a545

Rebase from 'rpm/noetic/robot_localization'

view details

Tom Moore

commit sha 985660c57ed51ce9afdc9ffe10448359db9ef83a

Generated RPM files for 32

view details

Tom Moore

commit sha 4f072b76a03a92541c2f0e04a20bc105456a2507

Renamed RPM spec file for 32

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 93f2b7e30720652a9fbc571b88a50fd7d4285f12

Rebase from 'debian/noetic/robot_localization'

view details

Tom Moore

commit sha 448a33b8812ca2ab3fb2ca26c7cb097a7b423184

Generated debian files for buster

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 400a4190851ec80ae6f3f66c12a3a1f472e8d81c

Updated patches.conf

view details

Tom Moore

commit sha 056035aeb3b08d6b5a0765776d019e3c2df55fe6

Updated patches.conf

view details

Tom Moore

commit sha 0620518e4840dd8835c8dd4c17ba02590826c56e

Store original patch config

view details

Tom Moore

commit sha 59f6c695acad222621cd793aebbeb03162ba4189

Updated patches.conf

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 1102521e4e86cede34ce987afb1838ed1b3f67b9

Updated patches.conf

view details

Tom Moore

commit sha e54f28de9fd6b0b913c54b3e3bfa9f874817d814

Updated patches.conf

view details

Tom Moore

commit sha d628c372a5bff0e247b726b470979c222ab4888a

Store original patch config

view details

Tom Moore

commit sha 5b34a909d2fe3d6bed2395ca2d5f7d20dfcfdfcb

Updated patches.conf

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 685ccf417135cba2e13efe04c3bce3c36f7105d3

Updating patches.

view details

Tom Moore

commit sha a8ee36a213993b80367fba64ed252a574e5ff312

Updated patches.conf

view details

Tom Moore

commit sha e037c51e0a30213c146be6bed1a82a154c6d2bc0

Updated patches.conf

view details

Tom Moore

commit sha 19f52fa87aae656c3c30cfe0f71bf6f8f359ced4

Store original patch config

view details

Tom Moore

commit sha 16fdb5ebaee0b585b490c374db81556b27037a3f

Updated patches.conf

view details

Tom Moore

commit sha 0da713726d440043946f68d9e025e97492986dcc

Updating patches.

view details

Tom Moore

commit sha b0704d4806b0327b3ab3112ac56c8753faeaeac0

Updated patches.conf

view details

Tom Moore

commit sha 8d69ed466181087d8551bcbb56474c85e39f4722

Updated patches.conf

view details

Tom Moore

commit sha 0acf179e65ada5c40ae80c954e0fb3821126a5e0

Store original patch config

view details

Tom Moore

commit sha 61dd328f480f2503918e469d147daed707610861

Updated patches.conf

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 3771a11846bc897f20ea22ea331906f23f16cb7a

Updated patches.conf

view details

Tom Moore

commit sha 5a1691e03a931d55c9c1437ebc0d363ae8806f28

Updated patches.conf

view details

Tom Moore

commit sha d14617b70a212545db39d6b45c82f73d9b8657ed

Store releaser history

view details

Tom Moore

commit sha a2d1c6fc55f61a4acadd32c6f21422c5013f1df7

Store original patch config

view details

Tom Moore

commit sha 6a19019fcbc988e6e7914fb984c6b1af7706ba90

Updated patches.conf

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 78fa7a06379d51b52dd5109e36b38afd8439d41e

Rebase from 'debian/noetic/robot_localization'

view details

Tom Moore

commit sha 8817952abfa149a74596fef5c59edeea5abf869f

Generated debian files for focal

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 899e84f8058e3a90462ac6a09070c0be5e1d9312

Updated patches.conf

view details

Tom Moore

commit sha 5e7dc6018c93e914a99ab9593eb804a36db399fa

Updated patches.conf

view details

Tom Moore

commit sha 36be606397e4e76001a84cc76053f6c12db1bdbc

Store original patch config

view details

Tom Moore

commit sha 9b02b7910b3cb703a7e841b233162455109353af

Updated patches.conf

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha f8fb3150b834113957689217914309f5883a87b9

Updated patches.conf

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha 23578af1234fc60da0a99c27e90952b31aac26fc

Rebase from 'release/noetic/robot_localization'

view details

Tom Moore

commit sha 84317df972d3acf48ff9e87fed0be5c8b2dd80c3

Placing debian template files

view details

Tom Moore

commit sha 9885f7b35ccfffce6ada79057bbe389ab4d26fb6

Adding O3 flag

view details

Tom Moore

commit sha 97685a14f3dbd324c358e9b93717013cfe5a5c23

Rebase from 'release/noetic/robot_localization'

view details

Tom Moore

commit sha 15d47bfce29e39166fb448646916e62718c54e49

Placing debian template files

view details

Tom Moore

commit sha f936d6e7db472b2f52cad8e4c69adfc9d5fa4f28

Adding O3 flag

view details

push time in 2 months

push eventcra-ros-pkg/robot_localization-release

Tom Moore

commit sha cc8901e8d1faae13df9709ed1a8de5f01fcef54b

Adding O3 flag

view details

push time in 2 months

more