Orbital Robot Control Algorithms Development

Job ID: 37835839

Budget: $30 – $250 USD

I am working on a final year research project focused on teleoperated control of an orbital robot using CoppeliaSim. My project involves the use of Matlab for control and comparing functionality at the level of a 6D space mouse with standard keyboard control.

My primary requirement is professional assistance with the following:

- Creating and implementing control algorithms
- Writing time-sensitive Matlab code controlled applications

I am aiming specifically to develop efficient and effective Matlab-proportional code to optimize the system's response. Underpinning the fundamental importance of these coding assignments, real-time implementation is a vital attribute my project demands.

The successful bidder will need proven experience in:

- Matlab coding and debugging
- Real-Time Systems Programming
- Control theory, specifically Proportional–Integral–Derivative (PID)
- Integrating Matlab with simulation software, specifically CoppeliaSim

Your bid will be an invaluable contribution toward the realization of an important capstone research project. I thank you in advance for your proposals and look forward to engaging with your innovative Matlab Coding expertise.

I already have the space robot in coppeliasim and was able to connect through remote API cOppeliasim with ,atlas and was able to retrieve the target in coppelaisim with my code however I need to now program the control code such as control of the movements of the target in space robot through spacemouse and keyboard in Matlab. this is my current code : Expert for Matlab-CoppeliaSim Robotics Project
I am doing a final year research project on yeleoperated control of an orbital robot in coppeliasim using Matlab for real time control. I have a basis code and a model of the space robot in coppeliaisim however I am struggling with writing the code for the control of the robot itself in Matlab. I am also using a spacemouse to control the robot and comparing it to keyboard method of control input.

This is my Matlab code for now :
clear all; % Connect to CoppeliaSim vrep = remApi('remoteApi'); vrep.simxFinish(-1); id = vrep.simxStart('127.0.0.1', 19000, true, true, 5000, 5); if id < 0 disp('Failed to connect MATLAB to CoppeliaSim'); vrep.delete(); return; else fprintf('Connection %d to remote API server is open. \n', id); % Get object handle for the target in CoppeliaSim [returnCode, target] = vrep.simxGetObjectHandle(id, 'target', vrep.simx_opmode_blocking); % Check if object handle retrieval is successful if returnCode == vrep.simx_return_ok disp('Object handle for target retrieved successfully'); % Main loop for controlling the target with Space Mouse while true % Read position from Space Mouse [returnCode, currentPosition] = vrep.simxGetObjectPosition(id, target, -1, vrep.simx_opmode_oneshot); disp(currentPosition); % Check for errors if returnCode ~= vrep.simx_return_ok disp('Error getting object position'); end % Read keyboard input key = getkey(); % Update target position based on keyboard input step = 0.001; switch key case 'w' newPosition = [currentPosition(1), currentPosition(2) - step, currentPosition(3)]; case 's' newPosition = [currentPosition(1), currentPosition(2) + step, currentPosition(3)]; case 'q' % Add your custom movement logic here % For example, diagonal movement newPosition = [currentPosition(1) - step, currentPosition(2) - step, currentPosition(3)]; otherwise % No movement for other keys newPosition = currentPosition; end % Set the position of the target in CoppeliaSim returnCode = vrep.simxSetObjectPosition(id, target, -1, newPosition, vrep.simx_opmode_oneshot); % Check for errors if returnCode ~= vrep.simx_return_ok disp('Error setting object position'); end % Pause to control the loop speed pause(0.1); end % End simulation vrep.simxFinish(id); else disp('Failed to retrieve object handle for target'); end % Clean up vrep.delete(); end function key = getkey() % Function to get a single key press from the user key = ' '; while true [~, ~, keyCode] = KbWait; if any(keyCode) key = KbName(keyCode); break; end end end