Author: Zhengxiao Han (韩 政霄)
nubot_nav
: This package contains navigation application for nubot.
I am using cartographer_ros
instead of slam_toolbox
because the mapping performance of slam_toolbox
is poor in the given scene. The direct issue appears to be the inaccuracy of odometry, which might be caused by missing friction configurations in Gazebo. I recommend checking the friction parameters in nubot.
To install the necessary dependencies, simply run the following commands:
cd <your_ws>
rosdep install --from-paths src --ignore-src -r
-
Manual Exploration
ros2 launch nubot_nav manual_explore.launch.py
me495_hw4_1.mp4
-
Automatic Exploration (Wall Following)
I am using a wall-following algorithm to automatically explore the entire scene. The robot uses sensor data (LaserScan) to detect obstacles (walls), then moves along the walls while maintaining a safe distance. It smoothly handles turns and avoids obstacles, ensuring that all reachable areas in the scene are explored. See details in explore.py.
ros2 launch nubot_nav explore.launch.py
me495_hw4_2.mp4
-
Friction Parameters:
As mentioned earlier, the nubot package lacks friction parameters. These should be added to the wheels, caster wheels, and ground to improve simulation accuracy.
-
Extended Kalman Filter (EKF):
I have tried adding IMU plugins in my forked nubot repository. With the IMU sensor, we could use
robot_localization
to fuse odometry and IMU data. However, as I have tried, the performance is still poor. -
Ground Truth Odometry:
As I have applied in homework3, Use odometry_publisher plugin to publish ground truth odometry.