Introduction to Robotics Lab 1 Repository
Go to file
Charles STELANDRE a01e422239 Corrected linearControlFurther error messages. 2025-04-13 21:49:26 +02:00
include Added more comments in Kinematics. 2025-04-13 13:28:58 +02:00
src Corrected linearControlFurther error messages. 2025-04-13 21:49:26 +02:00
README.md Corrected README. Added test kinematics personal trial in comments. Corrected Kinematics syntax. 2025-04-13 21:42:35 +02:00
makefile Corrected the singularity detection within linearControlFurther to detect det(J) anomalies. 2025-04-13 14:54:47 +02:00

README.md

Overview

Each of the following codes allows a specific directive to be sent to a 2D planar robot:

jointControl: Drives the robot using joint values.

cartControl: Drives the robot using cartesian values.

testKinematics: Tests each kinematic algorithm and makes sure they are at the expected value.

linearControl: Drives the robot using cartesian values in a linear trajectory.

drawImage: Draws an input image.

linearControlFurther: Improvement of the linear control which checks for the determinant of the Jacobian to be valid.

Repository Structure

Find below the list of executables.

jointControl/

  • @file jointControl.cpp
  • @author Guillaume Gibert
  • @version -
  • @date 2025/04/13
  • @brief Description : This file was provided by G. Gibert. It allows to test different kinds of kinematics.
  • @functions : - void initRobot(DynamixelHandler& dxlHandler, std::string portName, float protocol, int baudRate) - void closeRobot(DynamixelHandler& dxlHandler) - int main()
  • Input:
    • L1 : Length of the first link (cm)
    • L2 : Length of the second link (cm)
    • q1 : Input for first joint value (deg)
    • q2 : Input for second joint value (deg)
    • qpen : Input for the pen's joint value (deg) (-90 for drawing mode)
  • Output:
    • Displacement of the robot using cartesian coordinates.

Ex. : ```./jointControl 5 6 0 0 -90

cartControl/

  • @file cartControl.cpp
  • @author Guillaume Gibert, Charles STELANDRE
  • @version V1
  • @date 2025/04/13
  • @brief Description : This file is a variant from jointControl, adapting cartesian Coordinates translation.
  • @functions :
  • @ - void initRobot(DynamixelHandler& dxlHandler, std::string portName, float protocol, int baudRate) - void closeRobot(DynamixelHandler& dxlHandler) - int main(int argc, char** argv)
  • Input:
    • L1 : Length of the first link (cm)
    • L2 : Length of the second link (cm)
    • x : x-component of target position (cm)
    • y : y-component of target position (cm)
  • Output:
    • Displacement of the robot using cartesian coordinates.

Ex. : ```./cartControl 5 6 8 3

testKinematics/

  • @file testKinematics.cpp
  • @author Guillaume Gibert, Charles Stelandre
  • @version -
  • @date 2025/04/13
  • @brief Description : This file was provided by G. Gibert. It allows to test different kinds of kinematics.
  • @functions : - bool testFK(float q1, float q2, float L1, float L2, std::vector expectedEndEffectorPosition, float errorThreshold) - bool testIK(float x, float y, float L1, float L2, std::vector expectedJointValues, float errorThreshold) - int main()

    Ex. : ```./testKinematics

linearControl/

  • @file linearControl.cpp
  • @author Guillaume Gibert
  • @version -
  • @date 2025/04/13
  • @brief Description : This file was provided by G. Gibert. It allows to use a proportionally controlled system to join two points in a linear trajectory.
  • @functions :
  • @ - void initRobot(DynamixelHandler& dxlHandler, std::string portName, float protocol, int baudRate) - void closeRobot(DynamixelHandler& dxlHandler) - int main(int argc, char** argv)
  • Input:
    • L1 : Length of the first link (cm)
    • L2 : Length of the second link (cm)
    • x : x-component of target position (cm)
    • y : y-component of target position (cm)
  • Output:
    • Displacement of the robot using cartesian coordinates.

    Ex. : ```./linearControl 5 6 8 3

drawImage/

  • @file drawImage.cpp
  • @author Guillaume Gibert
  • @version -
  • @date 2025/04/13
  • @brief Description : This file was provided by G. Gibert. It allows to use image processing to draw an image after converting it to correct dimensions.
  • @functions :
  • @ - void initRobot(DynamixelHandler& dxlHandler, std::string portName, float protocol, int baudRate) - void closeRobot(DynamixelHandler& dxlHandler) - int main(int argc, char** argv)
  • Input:
    • L1 : Length of the first link (cm)
    • L2 : Length of the second link (cm)
    • image : directory of an image to use for image drawing

    Ex. : ```./drawImage 5 6 ../resource/twitter2.png

linearControlFurther/

  • @file linearControl.cpp
  • @author Guillaume Gibert
  • @version -
  • @date 2025/04/13
  • @brief Description : This file was provided by G. Gibert. It allows to use a proportionally controlled system to join two points in a linear trajectory.
  • @functions : - void initRobot(DynamixelHandler& dxlHandler, std::string portName, float protocol, int baudRate) - void closeRobot(DynamixelHandler& dxlHandler) - int main(int argc, char** argv)
  • Input:
    • L1 : Length of the first link (cm)
    • L2 : Length of the second link (cm)
    • x : x-component of target position (cm)
    • y : y-component of target position (cm)

    Ex. : ```./linearControl 5 6 8 3

README.md

Documentation for the repository.

Requirements

Hardware: Poppy Ergo Jr.

Software: C++ Programming

Libraries: Ensure required libraries (Dynamixel SDK - DynamixelHandler.h)

Installation

Clone this repository:

git clone https://gitarero.ecam.fr/charles.stelandre/IntroRoboticsLab1.git

Open a text editor and navigate to the folder containing the .cpp file you want to use.

Install any necessary library.

Upload the code to your robot using a USB connection.

Usage

Navigate to your installation directory.

Make the file using make

Navigate to the bin folder.

Execute the desired file in the command line/

Follow any instructions provided in the comments within the code to execute experiments.