Skip to content

Analytical tools for the IK and navigation sub-team of Lafayette's openDog.

Notifications You must be signed in to change notification settings

fainorr/opendog_IK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opendog_IK

During the 2019-2020 school year, the inverse kinematics and navigation sub-team of Lafayette's openDog senior design project worked on developing the IK motion equations and LIDAR analysis techniques in this repository. It contains python scripts to be executed in a terminal shell by navigating to cloned directory and running "python <script_name.py>". Included below are descriptions of each script.

IK:

  1. ARM_IK_3D.py: an arm with three links was built to allow the openDog to interact with its environment. This python script sets a path for the end-effector, calculates the four joint angles (controlled each by a motor) to achieve that path, and animates the result in 3D space as verification of the equations and requested path. The arm follows two distinct movements to approach the button directly, which are illustrated and described in a sketch of the arm motions. A visual of the animation window defines the links, axes, and angles utilized in the program.

  2. LEG_IK_3D.py: for openDog locomotion, this script helps develop and visualize various walking gaits in a 3-dimensional animation. Based on a chosen "action" from the options, it defines the gait parameters and leg phase shifts that accomplish the desired walking pattern, and then employs the three-dimensional inverse kinematic function to solve for the shoulder, femur, and tibia joint angles. The 3D walking gait shows the limb motions and prints annotations for the leg in blue. The angles and geometry are defined in a leg diagram, where the x-axis points in the forward direction, the y-axis toward the body center, and the z-axis up.

  3. LEG_IK_2D.py: this python script is a 2D simplification of the walking gait, which was used in the first attempts of making openDog walk.

  4. static_gait.py: the walking tests on the real openDog were unsuccessful at first because the walking gait could not achieve stability; so, a static gait where the legs are moved individually was developed. This script has a different set of foot position equations, but the IK function and animation are reproduced from the LEG_IK_3D.py script.

LIDAR:

visualizing and analyzing scans

  1. quad_analysis_methods.py: to identify obstacles in the environment, three analysis techniques were developed based on raw LIDAR scan data. For all the techniques, the scan is divided into four quadrants and a certain analysis is performed on each quadrant individually. This script defines the methods as functions:

    • "quadrant": the boolean output "quad_obstacles" returns 1 if an obstacle (designated by consecutive points) of the specified obst_size exists in the quadrant. The points are only recognized if they exist in a circle of radius safe_range.
    • "percent": the output "obst_percent" returns the percentage of points in each quadrant within the safe_range.
    • "intensity": the output "obst_intensity" returns a percentage of point intensities in each quadrant. This point intensity is inversely proportional to the squared distance from the LIDAR.
  2. lidar_animate.py: using recorded LIDAR scans, the methods were tested and animated. With a chosen laser scan file scan_data from within the "animate_scans" folder and a selected analysis method from the list of functions, this script animates the data with a visual representation of how the analysis technique operates.

  3. lidar_compare.py: using the same analysis techniques developed, this python script compares all three simultaneously for single-frame scans in a greater variety of scenarios. This helps determine which technique might be most credible in guiding the robot to avoid obstacle collisions.

scan text files

  1. animate_scans: for use with lidar_animate.py, multiple-frame scans in various locations around Acopian were gathered to better understand how the LIDAR sees its environment. The title of the .txt file indicate where the scan was taken, denoted by a key-word and the nearest room number.

  2. single_frame_scans: single-frame scans were gathered in more locations around Acopian for visualization in lidar_compare.py.

About

Analytical tools for the IK and navigation sub-team of Lafayette's openDog.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages