Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
4e1d3d1
added initial version of imu plugin
marbosjo Jan 4, 2018
3b48d67
publish twist with covariance
marbosjo May 21, 2018
dc96bbf
diff_drive: added parameter broadcast_tf to enable tf broadcast from …
marbosjo May 21, 2018
4756763
Merge remote-tracking branch 'upstream/master'
marbosjo May 21, 2018
66a1e0a
imu: now reads parameter for broadcasting tf
marbosjo May 28, 2018
09c62e1
diff_drive: added flatland tf resolving for odom frame
marbosjo May 28, 2018
2df4f9f
Merge remote-tracking branch 'upstream/master'
marbosjo Jun 5, 2018
7601315
diff_drive: added parameter to publish twist in robot frame
marbosjo Jun 5, 2018
6eda932
Forced RelWithDebInfo for flatland_server and flatland_plugins. Simul…
josephduchesne Sep 10, 2021
b80d5cb
Fixed incorrect logic on legacy tricycle_drive parameter loading
josephduchesne Sep 10, 2021
26ce985
Cherry picked Rapyuta robotics smart optimization to the laser scan p…
josephduchesne Sep 10, 2021
113af7c
Moved map_to_lines.py into flatland_server program install space
josephduchesne Sep 10, 2021
5bcd916
Fix ground truth Tf changing parent frame
eborghi10 Dec 17, 2021
60485c8
removed changes to tf namespacing
josephduchesne May 3, 2022
5ea5b73
added warning skip for eigen third party library on clang source check
josephduchesne May 3, 2022
c0826a4
Merge pull request #79 from avidbots/laser-scan-cherry-pick
josephduchesne May 3, 2022
c8e8747
Merge pull request #81 from eborghi10/master
josephduchesne May 3, 2022
7d755f5
Version bump of flatland metapackage
josephduchesne May 4, 2022
8595ff4
Merge pull request #82 from avidbots/version-bump
josephduchesne May 4, 2022
4f91dd8
reorder include dirs to fix overlay builds
josephduchesne May 4, 2022
4deeb97
Merge pull request #83 from avidbots/fix-overlay-build
josephduchesne May 4, 2022
5ac1a48
Removed unused legacy variables, and fixed uninitialized acceleration…
josephduchesne May 9, 2022
f686dcf
Added several unit tests to the tricycle drive plugin
josephduchesne May 9, 2022
e25af5b
added ground truth frame id to tricycle drive plugin and updated docu…
josephduchesne May 9, 2022
d8dce46
Fixed a variety of typos
josephduchesne May 10, 2022
77fe3c0
Removed final todo
josephduchesne May 10, 2022
e972680
fixed one more typo
josephduchesne May 10, 2022
d4b1cfb
Merge pull request #84 from avidbots/fix-uninitialized-acceleration-l…
josephduchesne Jan 17, 2023
b61c941
Update package.xml
josephduchesne Jan 17, 2023
a0ceb25
version bump
josephduchesne Jan 17, 2023
59a0f62
yaml_preprocessor: add support for $include
pbelanger-avid Jan 18, 2023
deaed56
yaml_preprocessor: Add sequence include $[include]
pbelanger-avid Jan 18, 2023
631168f
Merge pull request #93 from pbelanger-avid/add-yaml-include-support
josephduchesne Jan 18, 2023
02d5c13
improved wording on scan direction laser plugin option. Added documen…
josephduchesne Jan 18, 2023
2267d30
added ros industrial ci test runner github action
josephduchesne Jan 18, 2023
b72df50
only kinetic ci for now
josephduchesne Jan 18, 2023
6e84710
only kinetic ci for now
josephduchesne Jan 19, 2023
b5dc140
Update industrial_ci_action.yml
josephduchesne Jan 19, 2023
b1e0408
Update industrial_ci_action.yml
josephduchesne Jan 19, 2023
83d1616
Update industrial_ci_action.yml
josephduchesne Jan 19, 2023
59097fa
yaml_preprocessor: fix processing empty sequences to null
pbelanger-avid Jan 19, 2023
80e8dfe
Merge remote-tracking branch 'origin/master' into clean-up-lidar-flip…
josephduchesne Jan 19, 2023
3b92feb
Merge branch 'clean-up-lidar-flip-param' of github.com:avidbots/flatl…
josephduchesne Jan 19, 2023
50b1f40
added extra time for services to start
josephduchesne Jan 19, 2023
8874c0a
Update laser.rst
josephduchesne Jan 19, 2023
c4e16b7
Version bump to 1.3.1
josephduchesne Jan 25, 2023
ddfdbf2
fixed lidar scan data direction, which apparently was backwards forever
josephduchesne Jan 25, 2023
d947f97
fixed incorrect lidar flip code
josephduchesne Jan 25, 2023
d0acfbe
reverted unintentional launchfile change
josephduchesne Jan 25, 2023
60e4b52
laser plugin: support clockwise-turning lidars
pbelanger-avid Jan 25, 2023
713a8fe
Update laser.rst
josephduchesne Jan 26, 2023
4c71e1a
Merge pull request #94 from avidbots/clean-up-lidar-flip-param
josephduchesne Jan 27, 2023
3915458
Added per package license files
josephduchesne Feb 2, 2023
8214028
1.3.2
josephduchesne Feb 2, 2023
b2f7792
Merge pull request #95 from avidbots/per-package-licenses
josephduchesne Feb 3, 2023
a88c12a
added missing std_srvs dep
josephduchesne Feb 6, 2023
1aac2be
added changelogs
josephduchesne Feb 6, 2023
b65c96b
1.3.3
josephduchesne Feb 6, 2023
93096a2
Merge pull request #96 from avidbots/add-missing-std_srvs
josephduchesne Feb 6, 2023
614dc24
Make diff drive plugin tf broadcasting a configurable option
avidbots-kenneth Jul 5, 2023
69f5a1a
Merge pull request #98 from avidbots/diff-drive-plugin-tf-broadcast-o…
avidbots-kenneth Aug 29, 2023
820990b
Merge remote-tracking branch 'marbosjo/master' into imu
avidbots-marc Oct 24, 2023
27773a6
Adding missing header.
avidbots-marc Nov 21, 2023
89af75f
Fixed documentation and comment errors.
avidbots-marc Nov 22, 2023
e795432
Added documentation for imu plugin.
avidbots-marc Nov 22, 2023
91a6bfa
Fixed formatting error in IMU documentation.
avidbots-marc Nov 22, 2023
cba1e4e
Merge pull request #103 from avidbots/imu
kam3k Nov 22, 2023
df9118e
version bumped to 1.4.0 for new IMU plugin
josephduchesne Nov 22, 2023
432bad1
Merge pull request #104 from avidbots/version-bump-1.4.0
josephduchesne Nov 22, 2023
e6aac15
Fixed cmake warning on ros build farm, bumped version to 1.4.1
josephduchesne Nov 24, 2023
b6cece7
Merge pull request #105 from avidbots/1.4.1-fixes
josephduchesne Nov 24, 2023
67d87c1
Added a lightweight profiling printout on the laser plugin
josephduchesne May 7, 2024
238bc03
Swapped out vectorization for opencv::findContours, and box2d line se…
josephduchesne May 7, 2024
6601c65
Added simplify_map feature, as well as benchmark. New simplify_map ca…
josephduchesne May 7, 2024
af437a9
feat(rr): squash-merge rr-devel changes onto upstream/master
sabarish-prasannna Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/workflows/industrial_ci_action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: CI

on: [push, pull_request]

jobs:
industrial_ci:
strategy:
matrix:
env:
- {ROS_DISTRO: noetic, ROS_REPO: main}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: 'ros-industrial/industrial_ci@master'
env: ${{matrix.env}}
6 changes: 4 additions & 2 deletions docs/core_functions/ros_launch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ Here are the full list of parameters with the default values
step_size:=0.005 \
show_viz:=true \
viz_pub_rate:=30.0 \
use_rviz:=false
use_rviz:=false \
simplify_map:=2

* **world_path**: path to world.yaml
* **update_rate**: the real time rate to run the simulation loop in Hz
* **step_size**: amount of time to step each loop in seconds
* **show_viz**: show visualization, pops the flatland_viz window and publishes
visualization messages, either true or false
* **viz_pub_rate**: rate to publish visualization in Hz, works only when show_viz=true
* **use_rviz**: works only when show_viz=true, set this to disable flatland_viz popup
* **use_rviz**: works only when show_viz=true, set this to disable flatland_viz popup
* **simplify_map**: Simpify map during vector tracing: 0=None (default), 1=moderately, 2=significantly
53 changes: 52 additions & 1 deletion docs/core_functions/yaml_preprocessor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,60 @@ Yaml Preprocessor
Flatland Server has a lua preprocessor for YAML with simple bindings for the environment variables and rosparam.
The intent is to be able to build parametric models that are defined by dimensions and flags found in either environment variables or rosparam, in a similar way to xacro+urdf. Because this is parsed at model load time, any roslaunch rosparam loading will have completed and those parameters will be available.

Including additional YAML files
-------------------------------
The YAML preprocessor allows for including of other YAML files using the `$include` keyword. When this string is encountered, the following filename is parsed as a YAML file and substituted for the `$include`-string. The file path bay be absolute or relative. Relative file paths are relative to the YAML file currently being processed.

.. code-block:: yaml

# project/param/parent.yaml
foo: 123
bar: $include child.yaml # Looks in current directory (project/param/) for relative filenames
baz: $include /absolute/path/to/project/param/child.yaml # or an absolute path can be specified

# project/param/child.yaml
a: 1
b: 2

# result of YAML preprocessing parent.yaml:
foo: 123
bar:
a: 1
b: 2
baz:
a: 1
b: 2

There is also a special form of `$include`, `$[include]`, that can be used to populate a sequence with an arbitrary number of items. Each individual document in the specified YAML file (separated by `---` as is standard for multi-document YAML files) becomes its own element in the sequence. For example:

.. code-block:: yaml

# parent.yaml
foo:
- first
- $[include] child.yaml
- last

#child.yaml
one
---
a: foo
b: baz
---
three

# result of YAML preprocessing of parent.yaml:
foo:
- first
- one
- a: foo
b: baz
- three
- last

body/joint/plugin enabled flag
------------------------------
Model bodies, plugins and joints now have a new flag `enabled` which can be set to true or false either directly in the yaml, or based on more complex logic from a lua `$eval` string that returns "true" or "false". Disabled bodies, plugins and joints are skipped during yaml loading, and as a result are never instantiated. From Flatland's perspective `enabled: false` causes the affected body/plugin/joint to be deleted.
Model bodies, plugins and joints now have a new flag `enabled` which can be set to true or false either directly in the yaml, or based on more complex logic from a lua `$eval` string that returns "true" or "false". Disabled bodies, plugins and joints are skipped during yaml loading, and as a result are never instantiated. From Flatland's perspective `enabled: false` causes the affected body/plugin/joint to be deleted.

bindings for env and param
-------------------------------
Expand Down
35 changes: 21 additions & 14 deletions docs/included_plugins/diff_drive.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ velocities and odometries are w.r.t. the robot origin
plugins:

# required, specify DiffDrive type to load the plugin
- type: DiffDrive
- type: DiffDrive

# required, name of the plugin
name: turtlebot_drive
name: turtlebot_drive

# required, body of a model to set velocities and obtain odometry
body: base
Expand All @@ -50,29 +50,34 @@ velocities and odometries are w.r.t. the robot origin
# optional, defaults to "twist", the topic to publish noisy local frame velocity
# that simulates encoder readings
twist_pub: twist

# optional, defaults to true, enables the advertising and publishing of both
# ground truth and noisy odometry
enable_odom_pub: true


# optional, defaults to true, enables the publishing of the TF between
# 'base_link' (or link specified in "body") and 'odom' links.
# Disable if your code has its own TF publisher for these two links.
enable_odom_tf_pub: true

# optional, defaults to true, enables the advertising and publishing of noisy local
# frame velocity
enable_twist_pub: true

# optional, defaults to [0, 0, 0], corresponds to noise on [x, y, yaw],
# optional, defaults to [0, 0, 0], corresponds to noise on [x, y, yaw],
# the variances of gaussian noise to apply to the pose components of the
# odometry message
odom_pose_noise: [0, 0, 0]

# optional, defaults to [0, 0, 0], corresponds to noise on
# optional, defaults to [0, 0, 0], corresponds to noise on
# [x velocity, y velocity, yaw rate], the variances of gaussian noise to
# apply to the twist components of the odometry message
odom_twist_noise: [0, 0, 0]

# optional, defaults to the diagonal [x, y, yaw] components replaced by
# odom_pose_noise with all other values equals zero, must have length of 36,
# represents a 6x6 covariance matrix for x, y, z, roll, pitch, yaw.
# This does not involve in any of the noise calculation, it is simply
# optional, defaults to the diagonal [x, y, yaw] components replaced by
# odom_pose_noise with all other values equals zero, must have length of 36,
# represents a 6x6 covariance matrix for x, y, z, roll, pitch, yaw.
# This does not involve in any of the noise calculation, it is simply
# the output values of odometry pose covariance
odom_pose_covariance: [0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
Expand All @@ -81,10 +86,10 @@ velocities and odometries are w.r.t. the robot origin
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0]

# optional, defaults to the diagonal [x velocity, y velocity, yaw rate]
# optional, defaults to the diagonal [x velocity, y velocity, yaw rate]
# components replaced by odom_twist_noise with all other values equals zero,
# must have length of 36, represents a 6x6 covariance matrix for rates x,
# y, z, roll, pitch, yaw. This does not involve in any of the noise
# must have length of 36, represents a 6x6 covariance matrix for rates x,
# y, z, roll, pitch, yaw. This does not involve in any of the noise
# calculation, it is simply the output values of odometry twist covariance
odom_twist_covariance: [0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0
Expand All @@ -105,4 +110,6 @@ velocities and odometries are w.r.t. the robot origin
linear_dynamics:
acceleration_limit: 0.0 # max acceleration (away from 0), in m/s/s; 0.0 means "no limit"
deceleration_limit: 0.0 # max deceleration (towards 0), in m/s/s; 0.0 means "no limit"; left blank, will default to acceleration_limit value
velocity_limit: 0.0 # max absolute velocity in m/s; 0.0 means "no limit"
velocity_limit: 0.0 # max absolute velocity in m/s; 0.0 means "no limit"

ground_truth_frame_id: map # The name of the ground truth origin TF frame
55 changes: 55 additions & 0 deletions docs/included_plugins/imu.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
.. image:: ../_static/flatland_logo2.png
:width: 250px
:align: right
:target: ../_static/flatland_logo2.png


IMU
==========
This plugin provides a simple simulation of an IMU (three-axis accelerometer and three-axis gyroscope).

* The reference frame of the IMU is x-forward, y-left, z-up. Because Flatland is 2D, only the x and y axes are populated with accelerations only the z axis is populated with an angular rate, and the orientation has components only in the z and w fields.

* The measurements are modelled in a simple manner; they are simply the ground truth corrupted with zero-mean Gaussian noise.

* Publishes a `sensor_msgs/Imu <http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html>`_ message with the simulated measurements

.. code-block:: yaml

plugins:

# required, specify Imu type to load the plugin
- type: Imu

# required, name of the plugin
name: turtlebot_imu

# required, body of a model to set location of simulated IMU
body: base

# optional, defaults to true, whether to publish the IMU data
enable_imu_pub: true

# optional, defaults to imu, TF frame name of the IMU
imu_frame_id: imu

# optional, defaults to imu/filtered, the topic on which the noisy imu data is published
imu_pub: imu/filtered

# optional, defaults to imu/ground_truth, the topic on which the true (no noise added) imu data is published
ground_truth_pub: imu/ground_truth

# optional, defaults to [0.0, 0.0, 0.0], the diagonal of the covariance matrix of the zero-mean noise added to the orientation . Note that because the simulation is 2D, only the third value (i.e., yaw noise) is used.
orientation_noise: [0.0, 0.0, 0.0]

# optional, defaults to [0.0, 0.0, 0.0], the diagonal of the covariance matrix of the zero-mean noise added to the angular velocity. Note that because the simulation is 2D, only the third value (i.e., yaw rate noise) is used.
angular_velocity_noise: [0.0, 0.0, 0.0]

# optional, defaults to [0.0, 0.0, 0.0], the diagonal of the covariance matrix of the zero-mean noise added to the linear acceleration. Note that because the simulation is 2D, only the first two values (i.e., x and y acceleration noise) are used.
linear_acceleration_noise: [0.0, 0.0, 0.0]

# optional, defaults to inifinity (i.e., as fast as the simulation updates), rate to publish IMU measurements, in Hz
update_rate: 40

# optional, defaults to true, whether to publish TF
broadcast_tf: true
15 changes: 14 additions & 1 deletion docs/included_plugins/laser.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ messages.
# optional, default to true, whether to publish TF
broadcast_tf: true

# optional, default to false, if true compute/publish even if no subscribers (for benchmarking)
always_publish: false

# optional, default to name of this plugin, the TF frame id to publish TF with
# only used when broadcast_tf=true
frame: laser_back
Expand All @@ -46,6 +49,9 @@ messages.

# required, w.r.t to the coordinate system, scan from min angle to max angle
# at steps of specified increments
# Scan direction defaults to counter-clockwise but clockwise rotations can be
# simulated by providing a decrementing angle configuration.
# e.g. min: 2, max: -2, increment: -0.1 (clockwise)
angle: {min: -2.356194490192345, max: 2.356194490192345, increment: 0.004363323129985824}

# optional, default to inf (as fast as possible), rate to publish laser scan messages
Expand All @@ -55,6 +61,13 @@ messages.
# lasers only detects objects in the specified layers
layers: ["all"]

# optional, invert the mounting orientation of the lidar (default: false)
# This will invert the laser's body->laser frame TF (roll=PI)
# And sweep the lidar scan across a field mirrored across its mounted axis
# (as if you physically mounted the lidar upside down)
upside_down: false


# another example
- type: Laser
name: laser_front
Expand All @@ -64,4 +77,4 @@ messages.
layers: ["layer_1", "layer_2", "layer_3"]
update_rate: 100
noise_std_dev: 0.01


4 changes: 3 additions & 1 deletion docs/included_plugins/tricycle_drive.rst
Original file line number Diff line number Diff line change
Expand Up @@ -147,4 +147,6 @@ has no effect on the actual motion of the robot.
# optional, defaults to 0.0 which means no limit
# sets the steering angular acceleration limit (absolute, rad/s^2)
# the steering angular acceleration will not exceed this absolute limit
max_steer_acceleration: 0.0
max_steer_acceleration: 0.0

ground_truth_frame_id: map # The name of the ground truth origin TF frame
8 changes: 8 additions & 0 deletions flatland/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ Change Log

This project adheres to `Semantic Versioning <http://semver.org/>`_.

1.4.1 (2023-11-24)
------------------
* CMake version required bump to fix ros build farm warning

1.4.0 (2023-11-22)
------------------
* Version Bump

1.1.0
------------------
* Added Lua based parametric model yaml files
Expand Down
2 changes: 1 addition & 1 deletion flatland/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8.3)
cmake_minimum_required(VERSION 3.0.2)
project(flatland)
find_package(catkin REQUIRED)
catkin_metapackage()
29 changes: 29 additions & 0 deletions flatland/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
BSD 3-Clause License

Copyright (c) 2023, Avidbots Corp.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2 changes: 1 addition & 1 deletion flatland/package.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<package>
<name>flatland</name>
<version>1.1.3</version>
<version>1.4.1</version>
<description>
This is the metapackage for flatland.
</description>
Expand Down
26 changes: 26 additions & 0 deletions flatland_msgs/CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Changelog for package flatland_msgs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1.4.1 (2023-11-24)
------------------
* CMake version required bump to fix ros build farm warning


1.4.0 (2023-11-22)
------------------
* Version Bump

1.3.3 (2023-02-06)
------------------
* Merge pull request `#95 <https://github.com/avidbots/flatland/issues/95>`_ from avidbots/per-package-licenses
Per package licenses
* Contributors: Joseph Duchesne

* Merge pull request `#95 <https://github.com/avidbots/flatland/issues/95>`_ from avidbots/per-package-licenses
Per package licenses
* Contributors: Joseph Duchesne

* Merge pull request `#95 <https://github.com/avidbots/flatland/issues/95>`_ from avidbots/per-package-licenses
Per package licenses
* Contributors: Joseph Duchesne
2 changes: 1 addition & 1 deletion flatland_msgs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8.3)
cmake_minimum_required(VERSION 3.0.2)
project(flatland_msgs)

# Ensure we're using c++11
Expand Down
Loading
Loading