Skip to content

Conversation

@SteveMacenski
Copy link
Member

@SteveMacenski SteveMacenski commented Aug 9, 2024

#3924

  • Config guide
  • Migration guide

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
@SteveMacenski SteveMacenski changed the title Adding new Nav2 loopback simulation! Adding new Nav2 loopback simulator Aug 9, 2024
@codecov
Copy link

codecov bot commented Aug 9, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

see 1 file with indirect coverage changes

@SteveMacenski
Copy link
Member Author

Docs: ros-navigation/docs.nav2.org#580

Copy link
Contributor

@aosmw aosmw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be useful. Many thanks. I approve for what its worth.

self.info('Loopback simulator initialized')

def setupTimerCallback(self):
# Publish initial identity odom transform & laser scan to warm up system
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor nit.
Does this comment match what is happening?

Do you mean for sendTransform() be called once only or repeatedly in the timer?
It would make sense if you also called sendTransform in the init().

You could just remove the comment from this setupTimerCallback()

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean for it to be repeated on a timer that runs before the initial pose is set. The 'real' simulators or hardware robots will have their odometry systems continuously publishing and that odom->base_link is needed by many node's lifecycle startup processes to make Nav2 fully initialize. We could publish it once, but that would be fragile in case there's a delay or a long plugin initialization cycle for that message to be out of the TF buffer duration. Plus, this is how "real" robots and simulators operate so its analogoous

The comment is mostly there for tutorial value for later on-lookers. I agree most of my comments are not necessary

# Don't consider velocities before the initial pose is set
return
self.curr_cmd_vel = msg
self.curr_cmd_vel_time = self.get_clock().now()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A comparison between the time in the msg.header and curr_cmd_vel_time could be used to identify, warn about and/or reject old cmd_vel messages.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no message header in Twist

# Initialize transforms (map->odom as input pose, odom->base_link start from identity)
self.initial_pose = msg.pose.pose
self.t_map_to_odom.transform.translation.x = self.initial_pose.position.x
self.t_map_to_odom.transform.translation.y = self.initial_pose.position.y
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

poor z. Maybe explicitly zero it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding :-)

t_map_to_base_link.child_frame_id = 'base_link'
t_map_to_base_link.transform.translation.x = self.initial_pose.position.x
t_map_to_base_link.transform.translation.y = self.initial_pose.position.y
t_map_to_base_link.transform.translation.z = self.initial_pose.position.z
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

translation.z is used here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Making analog to comment above


def publishTransforms(self, map_to_odom, odom_to_base_link):
map_to_odom.header.stamp = \
(self.get_clock().now() + Duration(seconds=self.update_dur)).to_msg()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are transforms published with a header.stamp in the "future" but Odometry (in publishOdometry()) is not?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is how all the global localizers work. We need the transformation from map->odom to slightly "lead" the system so that anyone that wants to transform map->XYZ frame gets that data available between global localization updates. Since that is a static transformation between updates, the time isn't really all that important (unlike the odom->base_link). If you look at Cartographer, AMCL, SLAM Toolbox, etc they all do this from the very beginning of ROS 1 as a known design pattern to prevent floods of those "extrapolation into the future" errors

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the explanation.

We have just killed off an controller_server control loop issue that is probably related to this.
i.e "Control loop missed its desired rate of %.4f Hz. Current loop rate is %.4f Hz."

Despite configuring for rtprio and we were still getting this warning

I think MPPI is effectively hanging around waiting for odom updates. We were running MPPI at 50Hz and the two ros_localisation ekfs at 30Hz and nav_sat_transform at 30Hz. So while it works I have a feeling there is effectively a live lock underneath it all.

Do you, in your robots change the robot_localization transform_time_offset from the default of 0.0? https://github.com/cra-ros-pkg/robot_localization/blob/f6b28e0c5bcf98d161cb65b9d28d00ced77fe3ab/params/ekf.yaml#L20

Bumping the ekfs to 100Hz and leaving nav_sat_transform at 30Hz makes nav2_controller/MPPI and me very happy.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I change transform_time_offset for the global EKF for GPS fusion only, but yeah I do use that parameter for this same reason!

"""


def addYawToQuat(quaternion, yaw_to_add):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to ignore below. I know its 2D and simple.

You could make a quaternion from the yaw and then multiply it to the existing quaternion.
In c++ I would also give it a normalize()

https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Quaternion-Fundamentals.html#applying-a-quaternion-rotation

It seems that tf_transformations does not expose a quaternion normalisation.
https://github.com/DLu/tf_transformations/blob/07d77223288c457cfe71f361257e9fdd350c6fd9/tf_transformations/__init__.py#L809

Underneath it uses transforms3d.quaternions.qmult - http://matthew-brett.github.io/transforms3d/reference/transforms3d.quaternions.html#transforms3d.quaternions.qmult

That does provide a transforms3d.quaternions.qnorm - http://matthew-brett.github.io/transforms3d/reference/transforms3d.quaternions.html#qnorm

Copy link
Member Author

@SteveMacenski SteveMacenski Aug 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know! I didn't previously see the quaternion_multiply method in that library to use https://github.com/DLu/tf_transformations/blob/main/tf_transformations/__init__.py#L809. The lack of transformation libraries built into TF for Python is quite irritating. Thanks @DLu for this work!

Will make that update

@SteveMacenski SteveMacenski merged commit 3f31112 into main Aug 12, 2024
@SteveMacenski SteveMacenski deleted the loopback_sim branch August 12, 2024 19:33
SteveMacenski added a commit that referenced this pull request Aug 24, 2024
* adding Nav2 loopback sim

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* drop performance by half

* lintin

* Add multirobot usecase comment

* fixing copy paste error

* fixing review comments

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
SteveMacenski added a commit that referenced this pull request Aug 24, 2024
* Updated README Table once Jazzy jobs turn over (#4482)

* add new Jazzy matrix

* missing header

* test toolg

* retry

* done!

* trim

* trim

* fix OS[0]

* shutdown services in destructor of `ClearCostmapService` (#4495)

Signed-off-by: GoesM_server <GoesM@buaa.edu.cn>
Co-authored-by: GoesM_server <GoesM@buaa.edu.cn>

* adjusting backup speed to be more reasonable (#4501)

* Adding Costmap filters to system tests and cleaning up old gazebo classic files (#4502)

* removing old files

* removing old refs to gazebo classic

* porting test body

* including in root

* Dock panel (#4458)

* Initial docking panel

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Only one goal status

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added dock  pose

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix size of text

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Update rviz

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Update rviz config

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix default view (#4504)

* Fix logo in nav2 panel (#4505)

* Fix logo in nav2 panel

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Move icon

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix world to map coordinate conversion (#4506)

Signed-off-by: HovorunBh <fipogh@gmail.com>

* Update README.md

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Add dock id (#4511)

* Implement dock id

Signed-off-by: redvinaa <redvinaa@gmail.com>

* Update tests

Signed-off-by: redvinaa <redvinaa@gmail.com>

* Update docs

Signed-off-by: redvinaa <redvinaa@gmail.com>

* Fix virtual override error

Signed-off-by: redvinaa <redvinaa@gmail.com>

---------

Signed-off-by: redvinaa <redvinaa@gmail.com>

* fix(nav2_costmap_2d): make obstacle layer not current on enabled toggle (#4507)

Signed-off-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Co-authored-by: Kemal Bektas <kemal.bektas@node-robotics.com>

* min_turning_r_ getting param fix (#4510)

* min_turning_r_ getting param fix

Signed-off-by: Ivan Radionov <i.a.radionov@gmail.com.com>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Ivan Radionov <i.a.radionov@gmail.com.com>

---------

Signed-off-by: Ivan Radionov <i.a.radionov@gmail.com.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Ivan Radionov <i.a.radionov@gmail.com.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* fixing gz sim launch file by using gz directly (#4514)

* port wait behavior to new gazebo (#4471)

Signed-off-by: stevedan <stevedan.o.omodolor@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Completely rewritten spin, backup, and drive on heading tests to remove flakiness (#4515)

* port backup behavior to new gazebo

Signed-off-by: stevedan <stevedan.o.omodolor@gmail.com>

* port drive on heading behavior to new gazebo

Signed-off-by: stevedan <stevedan.o.omodolor@gmail.com>

* completely rewritten spin test

* lint

* complete flaky test rewrite

---------

Signed-off-by: stevedan <stevedan.o.omodolor@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: stevedan <stevedan.o.omodolor@gmail.com>

* Return out of map update if frames mismatch. Signed-off-by Joey Yang (#4517)

Signed-off-by: Joey Yang <joeyyang.ai@gmail.com>

* Fix error_code_id (#4522)

Signed-off-by: redvinaa <redvinaa@gmail.com>

* completely shutdown dyn_params_handler_ (s)  (#4521)

* completely shutdown dny_params_handler_ in nav2_amcl

Signed-off-by: GoesM_server <GoesM@buaa.edu.cn>

* completely shutdown dyn_param_handler_ in controller_server

Signed-off-by: goes <GoesM@buaa.edu.cn>

* compeletly shutdown dyn_params_handler in nav2_costmap_2d

Signed-off-by: goes <GoesM@buaa.edu.cn>

* compeletly shutdown dyn_param_handler in nav2_docking

Signed-off-by: goes <GoesM@buaa.edu.cn>

* completely shutdown dyn_params_handler in nav2_velocity_smoother

Signed-off-by: goes <GoesM@buaa.edu.cn>

* compeletly shutdown dyn_param_handler in waypoint_follower

Signed-off-by: goes <GoesM@buaa.edu.cn>

* typo fixed

Signed-off-by: goes <GoesM@buaa.edu.cn>

* graceful-controller & dwb_controller

Signed-off-by: goes <GoesM@buaa.edu.cn>

* mppi-controller

Signed-off-by: goes <GoesM@buaa.edu.cn>

* navfn_planner & regulated_..controller

Signed-off-by: goes <GoesM@buaa.edu.cn>

* rotation_..controller & samc_planners

Signed-off-by: goes <GoesM@buaa.edu.cn>

* A*planner

Signed-off-by: goes <GoesM@buaa.edu.cn>

* code style

Signed-off-by: goes <GoesM@buaa.edu.cn>

* 1

Signed-off-by: goes <GoesM@buaa.edu.cn>

* fixed

Signed-off-by: goes <GoesM@buaa.edu.cn>

* fix the usage of weak_ptr

Signed-off-by: goes <GoesM@buaa.edu.cn>

* code-style

Signed-off-by: goes <GoesM@buaa.edu.cn>

* weak_ptr released

Signed-off-by: goes <GoesM@buaa.edu.cn>

* code style

Signed-off-by: goes <GoesM@buaa.edu.cn>

* code style

Signed-off-by: goes <GoesM@buaa.edu.cn>

* code style

Signed-off-by: goes <GoesM@buaa.edu.cn>

* code style update

Signed-off-by: goes <GoesM@buaa.edu.cn>

* back

Signed-off-by: goes <GoesM@buaa.edu.cn>

* rebase conflict resovled

Signed-off-by: goes <GoesM@buaa.edu.cn>

* rebase error fixed

Signed-off-by: goes <GoesM@buaa.edu.cn>

* fixed2

Signed-off-by: goes <GoesM@buaa.edu.cn>

* rebase fixed 3

Signed-off-by: goes <GoesM@buaa.edu.cn>

* 33

Signed-off-by: goes <GoesM@buaa.edu.cn>

* shared_ptr into weak_ptr

Signed-off-by: GoesM <goesm@buaa.edu.cn>

* remove adundant node.resest()

Signed-off-by: GoesM <goesm@buaa.edu.cn>

---------

Signed-off-by: GoesM_server <GoesM@buaa.edu.cn>
Signed-off-by: goes <GoesM@buaa.edu.cn>
Signed-off-by: GoesM <goesm@buaa.edu.cn>
Co-authored-by: GoesM_server <GoesM@buaa.edu.cn>

* check nullptr in smoothPlan() (#4544)

* check nullptr in smoothPlan()

Signed-off-by: GoesM <goesm@buaa.edu.cn>

* code-style

Signed-off-by: GoesM <goesm@buaa.edu.cn>

* code-style

Signed-off-by: GoesM <goesm@buaa.edu.cn>

* simple change

Signed-off-by: GoesM <goesm@buaa.edu.cn>

---------

Signed-off-by: GoesM <goesm@buaa.edu.cn>
Co-authored-by: GoesM <goesm@buaa.edu.cn>

* check nullPtr in `computeControl()` (#4548)

Signed-off-by: goes <GoesM@buaa.edu.cn>
Co-authored-by: goes <GoesM@buaa.edu.cn>

* Straight analytic expansions (#4549)

* Add test to verify analytic expansions are straight

Signed-off-by: James Ward <j.ward@sydney.edu.au>

* Use continuous scaling of angle when performing analytic expansion

Only applies to Hybrid A* - behaviour in lattice planner is unchanged

Signed-off-by: James Ward <j.ward@sydney.edu.au>

---------

Signed-off-by: James Ward <j.ward@sydney.edu.au>

* Rviz tool to get cost of costmap cell (#4546)

* Added GetCost srv

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added Service in costmap_2d

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added Rviz tool

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed Styling

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed Styles and Linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed Linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added Bool use_footprint to srv

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added unit test for costmap costcell cost service

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed unit test script

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added theta, Updated unit test, Updated rviz tool service call logic

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Updated requested changes

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

---------

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Switch to new-style static_transform_publisher arguments. (#4563)

These arguments have been the preferred way to use things
since at least Humble.  This avoids warnings when running it for the tests.

Signed-off-by: Chris Lalancette <clalancette@gmail.com>

* Updated slack link (#4565)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update README.md (#4589)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix flickering visualization (#4561)

* Fix Flickering visualization

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Refactoring Costmap2DPublisher and Costmap2DROS

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Refactoring costmap_2d_ros.cpp

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Refactoring Costmap2DPublisher and Costmap2DROS

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Update costmap_2d_publisher.cpp

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Change map_vis_z from float to double

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Add comment to  map_vis_z_ parameter

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

---------

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Copy fix-terminate diff from opennav_docking repo (#4598)

* Copy fix-terminate diff from opennav_docking repo

Signed-off-by: redvinaa <redvinaa@gmail.com>

* Lint

Signed-off-by: redvinaa <redvinaa@gmail.com>

---------

Signed-off-by: redvinaa <redvinaa@gmail.com>

* Fix race condition in AMCL for #4537 (#4605)

* Fixed timed_behavior.hpp (#4602)

Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>

* Adding new Nav2 loopback simulator (#4614)

* adding Nav2 loopback sim

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* drop performance by half

* lintin

* Add multirobot usecase comment

* fixing copy paste error

* fixing review comments

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Added laser data from map in nav2_loopback_sim (#4617)

* Added laser data from map

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed Linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed Linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed few requested changes

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fixed linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Requested changes

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added parameters and fixed requested changes

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* linting

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Added scan  using LineIterator

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* LineIterator max_distance or range_max

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* min of max_distance or range_max

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* final updates working correctly

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Fix lint

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* requested changes

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>

* Update nav2_loopback_sim/nav2_loopback_sim/loopback_simulator.py

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_loopback_sim/nav2_loopback_sim/loopback_simulator.py

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Making base frame ID for map to base link transform based on base frame ID parameter (#4632)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update Smac Planner for rounding to closest bin rather than flooring (#4636)

* adding stamped option for loopbacks im (#4637)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: GoesM_server <GoesM@buaa.edu.cn>
Signed-off-by: Alberto Tudela <ajtudela@gmail.com>
Signed-off-by: HovorunBh <fipogh@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: redvinaa <redvinaa@gmail.com>
Signed-off-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Signed-off-by: Ivan Radionov <i.a.radionov@gmail.com.com>
Signed-off-by: stevedan <stevedan.o.omodolor@gmail.com>
Signed-off-by: Joey Yang <joeyyang.ai@gmail.com>
Signed-off-by: goes <GoesM@buaa.edu.cn>
Signed-off-by: GoesM <goesm@buaa.edu.cn>
Signed-off-by: James Ward <j.ward@sydney.edu.au>
Signed-off-by: Jatin Patil <jatinpatil2003@gmail.com>
Signed-off-by: Chris Lalancette <clalancette@gmail.com>
Signed-off-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>
Co-authored-by: GoesM <130988564+GoesM@users.noreply.github.com>
Co-authored-by: GoesM_server <GoesM@buaa.edu.cn>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: Bohdan <72872431+HovorunBh@users.noreply.github.com>
Co-authored-by: Vince Reda <60265874+redvinaa@users.noreply.github.com>
Co-authored-by: Kemal Bektas <34746077+bektaskemal@users.noreply.github.com>
Co-authored-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Co-authored-by: Ivan Radionov <45877502+JJRedmond@users.noreply.github.com>
Co-authored-by: Ivan Radionov <i.a.radionov@gmail.com.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>
Co-authored-by: stevedan <stevedan.o.omodolor@gmail.com>
Co-authored-by: Joey Yang <joeyyang.ai@gmail.com>
Co-authored-by: James Ward <j.ward@sydney.edu.au>
Co-authored-by: Jatin Patil <89979346+JatinPatil2003@users.noreply.github.com>
Co-authored-by: Chris Lalancette <clalancette@gmail.com>
Co-authored-by: Vladyslav Hrynchak <vladyslav.hrynchak@logivations.com>
josephduchesne pushed a commit to josephduchesne/navigation2 that referenced this pull request Dec 10, 2024
* adding Nav2 loopback sim

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* drop performance by half

* lintin

* Add multirobot usecase comment

* fixing copy paste error

* fixing review comments

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Joseph Duchesne <josephgeek@gmail.com>
stevedanomodolor pushed a commit to stevedanomodolor/navigation2 that referenced this pull request Apr 29, 2025
* adding Nav2 loopback sim

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* drop performance by half

* lintin

* Add multirobot usecase comment

* fixing copy paste error

* fixing review comments

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: stevedanomodolor <stevedan.o.omodolor@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants