Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 2.25 KB

README.md

File metadata and controls

41 lines (29 loc) · 2.25 KB

ME495 Embedded Systems Homework 4

Author: Zhengxiao Han (韩 政霄)

nubot_nav: This package contains navigation application for nubot.

Dependencies

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

Quickstart

  • 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

Improvements

  • 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.