Git Product home page Git Product logo

rl_hw4's Introduction

Robotics Lab Homework 4

1. Constructing a Gazebo World and Spawning the Mobile Robot

a) Robot Spawning:

  • Objective: Launch Gazebo simulation and spawn the mobile robot in the rl_racefield world.
  • Pose Configuration: Set robot pose to x = -3, y = 5, yaw = -90° with respect to the map frame. This is achieved by configuring the spawn_frame_gazebo.launch file with the necessary parameters.

b) Obstacle Adjustment:

  • Objective: Move obstacle 9 in the rl_racefield world to a new position.
  • New Pose: Set obstacle 9 to x = -17, y = 9, z = 0.1, yaw = 3.14. Adjustments were made to the rl_race_field.world file to update the obstacle’s pose.

c) ArUco Marker Placement:

  • Objective: Place ArUco marker number 115 on obstacle 9.
  • Procedure: Added the marker’s script and texture in the materials directory within the obstacle 9 description folder. Configured the SDF file to reference the marker and ensure its visibility to the robot’s camera.

2. Setting Up Static TF Goals and Navigation

a) Static TF Goals:

  • Objective: Place four static TF frames as navigation goals.
  • Goal Poses:
    • Goal 1: x = -10, y = 3, yaw = 0°
    • Goal 2: x = -15, y = 7, yaw = 30°
    • Goal 3: x = -6, y = 8, yaw = 180°
    • Goal 4: x = -17.5, y = 3, yaw = 75°
  • Implementation: Modified the spawn_fra2mo_gazebo.launch file to include these static TF frames.

b) TF Listener Implementation:

  • Objective: Implement TF listeners to get and print goal poses.
  • Implementation: Created four_goals.cpp to use TransformListener to retrieve and debug goal poses. The code listens to transformations and prints the position and orientation of each goal to the terminal.

c) Goal Navigation with Move Base:

  • Objective: Command the robot to navigate through goals in a specified order using move_base.
  • Order: Navigate through goals in the order: Goal 3 → Goal 4 → Goal 2 → Goal 1. Used MoveBaseClient to send goals and record the robot’s trajectory. Plotted the trajectory based on recorded data.

3. Mapping and Tuning Navigation Parameters

a) Additional Goals for Mapping:

  • Objective: Add goals to ensure a complete map of the environment.
  • Procedure: Added three additional goals to strategically explore the environment. Updated the map to reflect these additions.

b) Tuning Navigation Parameters:

  • Objective: Test different planner and move_base configurations to evaluate robot trajectories.
  • Configurations Tested:
    1. Race Mode: Increased velocity and acceleration limits for agile performance but observed sudden decelerations near obstacles.
    2. Obstacle Avoidance: Adjusted minimum obstacle distance to improve avoidance but led to infeasible trajectories in narrow spaces.
    3. Sharp Curves: Reduced resolution and adjusted hysteresis to enable sharp turns and detailed costmap representation.
    4. Minimal Look Ahead: Decreased lookahead distance and increased acceleration, resulting in collisions due to insufficient stopping distance.

4. Vision-Based Navigation

a) Running ArUco ROS Node:

  • Objective: Use the robot camera for ArUco marker detection.
  • Implementation: Uncommented camera configuration in fra2mo.xacro and included necessary launch files for ArUco detection.

b) 2D Navigation Task:

  • Objective: Navigate the robot to be near obstacle 9, detect the ArUco marker, and set a new goal.
  • Procedure: Moved robot close to obstacle 9, detected the ArUco marker pose, and set the next goal one meter away from the marker’s pose using MoveBaseClient.

c) Publishing ArUco Pose as TF:

  • Objective: Publish the ArUco marker’s pose as a TF frame.
  • Implementation: Used TransformBroadcaster to create and send the TF frame with the marker’s pose, including rotation matrix to quaternion conversion for orientation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.