git commit -m "first commit for v2"

This commit is contained in:
2025-12-29 16:21:22 +07:00
commit aa3d832d5c
1807 changed files with 307078 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
<!--
This launch file provides an example of how to work with GPS data using robot_localization. It runs three nodes:
(1) An EKF instance that fuses odometry and IMU data and outputs an odom-frame state estimate
(2) A second EKF instance that fuses the same data, but also fuses the transformed GPS data from (3)
(3) An instance of navsat_transform_node, which takes in GPS data and produces pose data that has been
transformed into your robot's world frame (here, map). The node produces a map-frame state estimate.
The first EKF instance produces the odom->base_link transform. The second EKF produces the map->odom transform,
but requires the odom->base_link transform from the first instance in order to do so. See the
params/dual_ekf_navsat_example.yaml file for parameter specification.
-->
<launch>
<rosparam command="load" file="$(find robot_localization)/params/dual_ekf_navsat_example.yaml" />
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_se_odom" clear_params="true"/>
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_se_map" clear_params="true">
<remap from="odometry/filtered" to="odometry/filtered_map"/>
</node>
<node pkg="robot_localization" type="navsat_transform_node" name="navsat_transform" clear_params="true">
<remap from="odometry/filtered" to="odometry/filtered_map"/>
</node>
</launch>

View File

@@ -0,0 +1,38 @@
<!--
This launch file provides an example of how to use ekf as nodelet or as node in one launch file.
By providing arguments like "use_nodelets this launch file will start a nodelet instead of a node.
This is very usefull in experimental setup to allow easy switch between nodelets and node.
Also it allows you to specify the manager the nodelet should run in.
-->
<launch>
<arg name="use_nodelets" default="${optenv USE_NODELETS false)" />
<arg name="nodelet_manager" default="$optenv robot_localization_NODELET_MANAGER robot_localization_nodelet_manager)" />
<!-- Placeholder for output topic remapping
<remap from="odometry/filtered" to=""/>
<remap from="accel/filtered" to=""/>
-->
<node unless="$(arg use_nodelets)"
pkg="robot_localization"
name="ekf_se"
type="ekf_localization_node"
clear_params="true"
output="screen"
>
<rosparam command="load" file="$(find robot_localization)/params/ekf_template.yaml" />
</node>
<node if="$(arg use_nodelets)"
pkg="nodelet"
type="nodelet"
name="ekf_se"
output="screen"
args="load RobotLocalization/EkfNodelet $(arg nodelet_manager)"
>
<rosparam command="load" file="$(find robot_localization)/params/ekf_template.yaml" />
</node>
</launch>

View File

@@ -0,0 +1,11 @@
<launch>
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_se" clear_params="true">
<rosparam command="load" file="$(find robot_localization)/params/ekf_template.yaml" />
<!-- Placeholder for output topic remapping
<remap from="odometry/filtered" to=""/>
<remap from="accel/filtered" to=""/>
-->
</node>
</launch>

View File

@@ -0,0 +1,51 @@
<!--
This node needs to know the values of three variables in order to function:
(1) A world-referenced heading (yaw). The node assumes an ENU standard for heading, with 0 facing east, though it
can support any heading.
(2) Odometry data that gives the robot's current pose in its own world coordinate frame (typically map or odom)
(3) A latitude/longitude/altitude.
These three items allow us to compute a transform from the global frame to your robot's local frame. There are
several means of providing them, though keep in mind that these modes are typically mutually exclusive.
(1) World-referenced yaw can be provided by:
(a) an IMU in a sensor_msgs/Imu message (topic is /imu/data/)
(b) the heading in the nav_msgs/Odometry message in (2) below can be used. To enable this behavior, set the
use_odometry_yaw parameter to true, and set the delay parameter to some small value (~3 seconds). Be
careful, though: this heading must still be globally referenced, so if your state estimation node always
starts with a 0 heading, you CAN NOT use this option.
(c) the "datum" service. See the template parameter file (params/navsat_transform_template.yaml).
(2) The odometry data, which needs to have a valid frame_id, can be provided by:
(a) a nav_msgs/Odometry message from your robot_localization state estimation node.
(b) the "datum" service (all odometry variables are assumed to be 0 in this case). See the template
parameter file.
(3) The latitude, longitude, and altitude can be provided by:
(a) a sensor_msgs/NavSatFix message
(b) the "datum" service. See the template parameter file.
(4) Alternatively, at any time, the user can send a robot_localization/SetDatum service message to the "datum"
service. This will manually set the latitude, longitude, altitude, and world-referenced heading, and will
assume an odometry message containing all zeros. This will effectively set the origin at the specified
lat/long, with the X-axis aligned with east. The user can set this datum via the "datum" service, or via the
launch file. If the wait_for_datum parameter is set to true, then the node will attempt to use the datum
parameter. If the parameter is not set, it will wait until it receives a service call.
The output of this node is an odometry message that contains the GPS data transformed into the robot's world
coordinate frame (i.e., the frame specified by input (2)'s frame_id), or the coordinate frame defined by the
message sent to the "datum" service. Optionally, the node can also produce a NavSatFix message corresponding
to the filtered odometry, transformed back into lat/long coordinates. The node can also optionally publish the
transform from the UTM frame the the world frame.
-->
<launch>
<node pkg="robot_localization" type="navsat_transform_node" name="navsat_transform_node" clear_params="true">
<rosparam command="load" file="$(find robot_localization)/params/navsat_transform_template.yaml" />
<!-- Placeholders for input remapping. Set your topic names as the "to" values.
<remap from="imu/data" to=""/>
<remap from="odometry/filtered" to=""/>
<remap from="gps/fix" to=""/>
-->
</node>
</launch>

View File

@@ -0,0 +1,11 @@
<launch>
<node pkg="robot_localization" type="ukf_localization_node" name="ukf_se" clear_params="true">
<rosparam command="load" file="$(find robot_localization)/params/ukf_template.yaml" />
<!-- Placeholder for output topic remapping
<remap from="odometry/filtered" to=""/>
<remap from="accel/filtered" to=""/>
-->
</node>
</launch>