Humanoid Robot. A thesis presented to. the faculty of. In partial fulfillment. of the requirements for the degree. Master of Science. Hemant K.

Size: px
Start display at page:

Download "Humanoid Robot. A thesis presented to. the faculty of. In partial fulfillment. of the requirements for the degree. Master of Science. Hemant K."

Transcription

1 Teleoperative Control Plus Simulation and Analysis of Walking for the DARwIn-OP Humanoid Robot A thesis presented to the faculty of the Russ College of Engineering and Technology of Ohio University In partial fulfillment of the requirements for the degree Master of Science Hemant K. Baxi August Hemant K.Baxi. All Rights Reserved.

2 2 This thesis titled Teleoperative Control Plus Simulation and Analysis of Walking for the DARwIn-OP Humanoid Robot by HEMANT K.BAXI has been approved for the Department of Mechanical Engineering and the Russ College of Engineering and Technology by Robert L. Williams II Professor of Mechanical Engineering Dennis Irwin Dean, Russ College of Engineering and Technology

3 3 Abstract BAXI, HEMANT K., M.S., August 2016, Mechanical Engineering Teleoperative Control Plus Simulation and Analysis of Walking for the DARwIn-OP Humanoid Robot Director ofthesis: Robert L.Williams II The thesis attains the objective of developing a teleoperative system for controlling the humanoid robot DARwIn-OP. The user interface and the hardware is installed and tested. The idea behind developing a teleoperative robot is to use the robot in times of emergency and other major crises without endangering human life. The hardware developed used Bluetooth technology and the user interface was developed using Android Programming Environment. Code is developed to make the robot work by inputing command using the tablet running on Android. The other objective of analyzing the human walk and a robot walk is also attained. Hip joint, Knee joint, Ankle joint are compared for a human walk with respect to joint angle, joint angular velocity and joint angular acceleration. In order to make DARwIn-OP walk more energy efficient it is proposed to use the ZMP method with Genetic algorithm for optimizing the Gait parameters. Darwin-OP has a programmable walking controller to help it locomote while in soccer mode. This controller generates a sinusoid for lateral body motion. It also generates a step period to help it move forward. The walk path generated from the controller appears to create short and choppy steps for Darwin-OP [33]. A new method for walking gait generation for Darwin-OP is proposed using ZMP and Genetic algorithm for optimizing the walking

4 gait of Darwin-OP. The ZMP method is able to generate a more stable walk path with longer strides. [34]. 4

5 5 Dedication This work is dedicated to the Faculty and Staff at Ohio University, my family and friends who have all supported in my endeavor.

6 6 Acknowledgments I really appreciate and thank Dr.Bob for his support, guidance and expertise which have helped me in finishing this thesis. It was a great pleasure to work under Dr.Bob and I really appreciate the freedom and support he gave me in completing my work. Without Dr.Bob s support it would not have been possible for me to finish my thesis. I would also like to thank my committee members; Dr. Gregory Kremer, Dr. Brian Clark, Timothy Cyders and Dr. Junghun Choi for their time, patience and guidance which helped me in completing the project.

7 7 Table of Contents Page Abstract... 3 Dedication... 5 Acknowledgments... 6 List of Figures... 9 Background and Literature Survey Robotics Mobile Robots Walking Robots Humanoid Robot DARwIn-OP Robotic Platform Technical specifications of DARwIn-OP Benefits of having open source Teleoperation Telerobotic Hardware Interface Thesis Objectives Methodology Objective One Hardware Used for the Teleoperation process Installing the Bluetooth Hardware in Darwin Communication between DARwIn-OP and Android Tablet Bluetooth programming Server side programming in Linux Writing the server side program Writing the client side program GUI for DARwIn-OP functions Methodology Objective Two Anatomy of a Human Walk Anatomy of DARwIn-OP Walk Results from Modeling Angle, Angular Velocity and Acceleration for Human... 32

8 8 Results Analysis of a Human Walk Hip angle analysis Knee angle analysis Ankle angle analysis Results from Modeling Angle, Angular Velocity and Acceleration for Darwin-OP Knee result plots Hip result plots Ankle result plots Comparison of Human and Darwin-OP Walk Recommendation for DARwIn-OP for a Better more Efficient Walk References Appendix A: Darwin-OP Start Guide Appendix B: Upgrading the Darwin-OP Kernel Appendix C: Installing Bluez Bluetooth Libraries in Darwin-OP Appendix D: Android Application Development Stages Appendix E: Code for Server Program Appendix F: Code for Client Program Appendix G: Simulation Code for Human & DARwIn-OP Walk... 84

9 9 List of Figures Page Figure 1 Targus USB Bluetooth Figure 2 Outgoing & Incoming Connection Bluetooth Programming [22],[25] Figure 3 Connection Using SDP [22] Figure 4 Client & Server Socket Connection Process [22] Figure 5 User Interface Figure 6 Human Walking Gait Cycle [27] Figure 7 Human Walking Gait Cycle Breakdown Figure 8 Darwin-OP Walking Gait Cycle Breakdown Figure 9 Joint Angle Results Obtained Using Curve Fitting Figure 10 Joint Angle Point from Published Data Zhang Bofeng [31] Figure 11 Angular Velocity Results of Joints Obtained by Differentiating the Joint Angle Equation Figure 12 Angular Velocity Results of Joints from Published Data Zhang Bofeng [31] Figure 13 Angular Acceleration Results of Joints Obtained by Differentiating the Joint Angle Equation Figure 14 Angular Acceleration Results of Joints from Published Data Zhang Bofeng [31] Figure 15 Joint Angles Plots for Human Hip, Knee and Ankle Figure 16 Model for Simulating Darwin-OP Walk [32] Figure 17 Leg Model for Darwin-OP Simulation Figure 18 Knee Joint Angle, Angular Velocity and Angular Acceleration Plots for Darwin-OP Figure 19 Hip Joint Angle, Angular Velocity and Angular Acceleration Plots for Darwin- OP Figure 20 Ankle Joint Angle, Angular Velocity and Angular Acceleration Plots for Darwin-OP... 47

10 10 Figure 21 Generalised Coordinates [34] Figure 22 Generalized Coordinates in Terms of the Inverse Kinematic Parameters [34]52 Figure 23 Gait Generation Parameters [34] Figure 24 Gait Generation Equactions [34] Figure 25 ZMP Calculations [34] Figure 26 User Interface Figure 27 Development Stages for Android Application [24]... 65

11 11 Background and Literature Survey Robotics Robotics is the study of design, construction, operation and application of robots [1]. A robot is usually an electro-mechanical machine that is controlled by programmable electronic Circuit [2]. Robots can be classified by application into industrial robots, medical robots; space robots etc or they can be classified by locomotion into stationary or moving robots [3]. Most of the industrial robots are stationary robots. Humanoids robots, like DARwIn-OP, ASIMO comes under moving robots [2], [3]. Mobile Robots Robots which can move around are called Mobile robots [4]. Autonomous mobile robots are mobile robots which can move around without the need for a control system [4]. On the other hand, there are mobile robots which rely on control system to navigate a pre-defined path are called Autonomous guided vehicles [4]. Mobile robots can be segmented into walking / Legged Robots, robots with wheels and robots moving on tracks [4]. Walking Robots Walking or Legged robots are a type of mobile robot [5]. Most of the walking robots have 2 or more legs [5]. Most legged robots have four or six legs for stability [5]. It is hard to program a biped robot for stability than a four or a six legged robot [5]. However, with advances in robotics technology many bipedal models are now being developed [5].

12 12 Humanoid Robot A humanoid robot is similar to a human being in structure. Humanoid robots are used in industry as well as in research. The Idea behind developing humanoid robots is to mimic human functions as best as we can. All products we humans use, the houses we live in, the cars we move around in, are built with the human user in mind. In a way an environment is created that is suitable for humans. So, for a robot to be helpful to humans it should fit into the human environment and the best way to do so is to look like a human. Otherwise we need to build a new environment to suit both robot and human, which would be expensive, as we will need to change the existing infrastructure. Although a considerable amount of research is being done on non-humanoid robotic platform, the recent advancements in research into humanoid motion planning, walking, communication suggests that humanoid platform is the most adequate platform for robotic research [6]. Humanoid Robots can work in places where the level of toxic waste or nuclear waste is so high that these places are inaccessible or dangers for humans to go. The Fukushima nuclear disaster is a case in point where we could have used humanoid robots to contain the nuclear spill and at the same time save human life from the risk of radiation [7]. Humanoid robots can be programmed not only do simple cleaning and lifting tasks but also complicated task such as installing and repairing machinery. Since humanoid robots are quick and easy to installed, they can help in responding quickly to emergency situations. The first two-legged (bipedal) robot of practical size was developed by Kato and et.al [10]. ASIMO [11], HRP [12], LOLA [13], and HUBO [14] are some of the many

13 13 humanoid robots developed so far and the features the much advancement that has taken place in this field [6]. NASA have used humanoid robots to help assist in space exploration by programming them to do some basic tasks and doing regular maintenance on the space ship [15]. In the future they plan to replace humans altogether from space exploration and use humanoids in place of them. Some might argue that replacing humans from space exploration is against the fundamental spirit of exploration, but removing the human variable from the space mission will help in simplifying the space mission design as scientists would not have to take into consideration the constraints of keeping human alive in space [15]. By integrating a teleoperation / telepresence system, a better solution can be achieved where both sides will be happy as we keep humans directly involved in the exploratory experience without the risk. DARwIn-OP Robotic Platform DARwIn-OP stands for Dynamic Anthropomorphic Robot with Intelligence Open Platform [6]. This humanoid robot was developed in collaboration between Virginia Tech, University Of Tokyo and Robotics Inc. [6]. Generally robots are difficult to expand or modify once they are build. But Darwin s platform with its characteristic network based modular structure and PC architecture solves this problem [6]. The modular structure makes Darwin expandable, modifiable, high performing and easily maintainable [6].

14 14 Technical specifications of DARwIn-OP. The DARwIn-OP is mm tall at Stand up position [6]. It weighs 2.9 kg and the Dynamixel [16] MX-28 servo motors attached to it gives it 20 degrees of freedom [6]. Two degree of freedom of the head, 3 degree of freedom of each arm and six degree of freedom of each leg [6]. Adding a gripper to the hand increases the overall degree of freedom to 22 [6]. Standard PC architecture makes it easy to add devices. It is built on a 1.6 GHz Intel Atom Z530 FitPC2i and has onboard memory of 4 GB SSD [6]. It also has a HD video camera, tri-axis accelerometer, and two microphones. The operating system of Darwin-OP is based on Linux Ubuntu and is programmable in C++ [6]. Benefits of having open source. DARwIn-OP robot is licensed as open source, which means all technical documents and programming codes are available for anyone to use and modify [17]. Open source platforms has the benefit of accumulated growth, as more people will have access to the development already made on the platform and will add to those development which also will be available to all developers. With more people having the source code for development an open platform also leads to better and faster developments. People developing on this platform are encouraged to keep their work open source and thus help in the incentivized benefits of open source. By working with the open source platform of DARwIn-OP Ohio University can add value to the DARwIn- OP development community [18].

15 15 Teleoperation Teleoperation means operation of a machine from a distance [8]. The distance can be a few centimeters to thousands of kilometers. Teleoperation has been in use for quite some time and we remote control our model aircraft and cars. Teleoperation is usually used to avoid hostile environment, neither the quality nor the efficiency of the work is improved. Generally a Teleoperation is a closed loop operation with the operator getting a feedback of the input command [9]. With the advancement in communication technologies researchers can operate from virtually anywhere, like the Mars rover being controlled from earth [9]. Telerobotic Hardware Interface Hardware interfaces means the interface in computing systems between many of the components such as the buses, I/O devices, storage devices etc. [19]. A hardware interface is described by the signals at the interface and the various rules or protocol used for understanding and sequencing those signals [19]. For a humanoid Robot, it make sense to have a wireless interface as it will give it more freedom as it is not tethered with any cord [20]. Also this will allow the freedom to accomplish tasks that are dangerous for human beings to perform.

16 16 Thesis Objectives The work done in this thesis will satisfy the following objectives Objective 1 : Develop a Teleoperative interface between DARwIn-OP and an Android tablet. Also, Develop the user interface on the Android tablet and provide input from it to control all DARwIn-OP functions. Objective 2: Simulate and analyze the similarities and differences between the walk of a Human and a humanoid Robot. This analysis will help me to propose a better trajectory motion for the humanoid. The first objective of this thesis is to design an wireless interface for the control of a humanoid robot. The motive for developing of the teleoperative system is that in the case of emergency the majority of available system of cable networks systems may be inaccessible or difficult to build, so a teleoperative based system makes sense as it provides a faster response time and can be operated from a distance, which is useful in case of hazardous situations. The second part of the first objective is to develop a user interface on the Android tablet. The operator uses this interface to command Darwin. Through This interface the user will be able to control all the functions of DARwIn-OP. The motive behind developing the user interface on a tablet is to make the human interaction with the robot user friendly. The operator will be able to give commands by just clicking on the tablet touch screen with his fingers, instead of typing in the command line, as he does in case he is operating the robot from a desktop. Also a tablet being handy and light can be moved around as the operator feels convenient. Also as the sales of tablets is increasing day by

17 17 day and surpassing the sales of desktops, a tablet user interface for controlling Darwin will be much accepted. The second objective is to simulate and analyze the similarities and differences between walk of a human and a humanoid Robot. This analysis will help to propose a better trajectory motion for the humanoid. Human walking is a periodic motion which alternates between a stable and an unstable phase. Though complex, this is an efficient way of biped locomotion [26]. On the other hand humanoid walk though stable at every step is highly inefficient compared to Human walk. Studying Human walk and comparing it with the walk of a humanoid can give insight for making better algorithm for the humanoid. The things I am trying to deliver through this thesis: 1. Develop a Bluetooth interface to control DARwIn-OP. 2. Develop an Android App as the Human Interface to control DARwIn-OP. Through This interface the user will be able to control all the functions of DARwIn-OP. 3. Write a report of the similarities and differences between the walk of a Human and a robot and simulate better trajectory algorithms for the DARwIn-OP robot.

18 18 Methodology Objective One The first objective is to develop the hardware interface to teleoperate Darwin-OP using an Android Tablet. Also part of this objective is to develop the user interface on the Android table to provide input commands to the humanoid robot. For connecting Darwin- OP with the Android tablet, Bluetooth technology is used. Bluetooth hardware is installed on the robot and Darwin-OP software is upgraded to accomplish the installation of the Bluetooth. Using Android Software Development kit, the user interface is developed. The user interface application is installed on the Android tablet. Hardware Used for the Teleoperation process DARwIn-OP doesn t have Bluetooth capability. So, in order for it to connect to an Android Tablet Bluetooth, Darwin-OP s hardware needs to be upgraded. The Bluetooth USB dongle that is used for this project is a Targus USB Bluetooth (fig-1) which has an inbuilt Broadcom Chipset [21]. But the Bluetooth dongle does not have drivers for Ubuntu so an upgrade is made to the Darwin-OP s operating system so as to make Darwin-op recognize the Bluetooth hardware. Figure 1 Targus USB Bluetooth

19 19 Installing the Bluetooth Hardware in Darwin The Ubuntu installed in Darwin-op has a kernel whose version is 2.6. This version does not support the Broadcom Bluetooth dongle. To make Darwin recognize the Bluetooth we need to upgrade its kernel to version 3.5. The steps for upgrading the kernel are shown in Appendix B. First the kernel files are downloaded from UNIX depositaries on the World Wide Web. The kernel files are then installed on Darwin-OP. The robot is rebooted so as to make the changes permanent. After rebooting Darwin-OP recognize the Bluetooth Hardware. The details of the steps involved are shown in Appendix B. Communication between DARwIn-OP and Android Tablet Bluetooth communication between an Android Tablet and Darwin-OP takes place according to the Bluetooth transport protocol [22]. Bluetooth transport protocols are the standards that are to be followed in order to connect and transfer data between two devices using Bluetooth technology [22]. This section describes how Darwin-OP and Android Tablet are configured and programmed to conform to the Bluetooth transport protocol and are able to communicate with each other. Bluetooth programming. Bluetooth is a Technology used by devices to communicate wirelessly with each other [22]. The process of establishing a Bluetooth connection depends on whether the device is establishing an outgoing or accepting an incoming connection [22]. A device (i.e server) establishing an outgoing connection means it is the device which sends the first data packet. A device (i.e client) accepting an incoming connection means it is the device which accepts the incoming data [22]. We refer to the device initiating the

20 20 connection as the server and the device accepting the connection as the client [22]. For this project Darwin-OP is the server and the android tablet is the client. The Device (i.e Server) initiating an outgoing connection needs to choose a target device (i.e Client) and a transport protocol for establishing connection before it can begin to transfer data / signal [22]. The device (i.e client) which accepts an incoming connection also needs to choose a transport protocol which is the same as the Server device and has to listen for incoming data/signal before accepting the connection and start transferring data / signal [22]. Fig 2 shows the basic steps in the incoming and outgoing Bluetooth connection process. The next two sections describe these steps and a detailed description of the server and client program codes.

21 21 A Search for Open Devices - Device Discovery B Hard Code protocol RFCOMM, L2CAP or SCO Query Each Open Device for Device MAC address Choose Port number Choose the Target Device Hard Code the Protocol RFCOMM, L2CAP or SCO Open Socket & listen to incoming connection Search Target device with matching SDP Record Advertise service with local SDP server Choose port number which matches record Listen to incoming connection and accept connection Find Socket & Connect to socket Send and receive data Send & Receive Data Close connection Close connection Figure 2 Outgoing & Incoming Connection Bluetooth Programming [22],[25] Incoming Connection Bluetooth Programming (A) Outgoing Connection Bluetooth Programming (B) [22], [25]

22 22 Server side programming in Linux. DARwIn-OP is the server and since it is running on Ubuntu, the Bluetooth Server should be written in a language compatible to Linux. To be able to write Bluetooth programs in Linux, Bluetooth libraries are needed. Since Ubuntu has its libraries written in C programming Language, so Bluetooth Library written in C are installed on Darwin- OP. Libraries are codes written in the native language of the Operating system to communicate and control the hardware installed on the system. The package used for the project is Bluez [23]. The step to install Bluez on Darwin-OP is given in Appendix C. Writing the server side program. The Bluez libraries are developed in C, so the server (i.e Darwin-OP) side program is also written in C so as to use the libraries [23]. The Bluetooth libraries contain the code needed to control the Bluetooth Hardware. The various steps we need to do to write the server program is shown in figure 2 A. [22]. The Server program open a Bluetooth socket and keep the socket open so that the client program can scan and discover it and connect to it (figure 3) [22]. There are various steps and protocols to be followed before the client can identify the server and connect to it. The details of the various steps are given below. In the first step in the server program, the device which establishes an incoming connection should choose a transport protocol [22]. Bluetooth contain many protocol but for the project the RFCOMM protocol is used. The Radio Frequency Communication (RFCOMM) protocol is a streaming protocol [22].

23 23 The next step in server programming is to assign a port on which the client is going to connect [22]. In RFCOMM protocol, ports are called channels. Channels from 1-30 are available for use as port numbers [22]. If the port number is hard coded in both the server and the client application, then the client application will know before hand on which port the server is listening and can connect to it [22]. The problem here is that in this approach it is not possible for more than one application to use the same port [22]. In a system which runs many applications, hard coding ports can lead to shortage of port for use by other applications [22]. To overcome this, the ports are dynamically assigned. Bluetooth use the service discovery protocol to dynamically assign port numbers. [22] The Bluetooth client device (i.e tablet) maintains an SDP server listening on an assigned port number [22]. When the server application (i.e running on the Darwin-OP) starts, it registers a description of itself and the port number with the SDP server on the local device (i.e Darwin-OP) [22]. When the remote client application (i.e running on the tablet) first connects to the server device (i.e Darwin-OP), the client device provides a description of the service it s looking for on the SDP server on the server side (i.e Darwin OP). The SDP server on the server (Darwin-OP) provides a list of all services that match the inquired service from the client (i.e Tablet) [22]. This approach allows Bluetooth server applications to assign port number dynamically as the SDP server on the server (Darwin-OP) can assign any port number that is not being used on the server and ensures that conflict for port numbers does not occur [22].

24 24 The description which the server application registers with the SDP server and which is transmitted to the client consists of a Service ID and a Service Class ID [22]. Both these numbers are 128 bit Universally Unique Identifiers (UUID) [22]. So the client application just needs to provide the particular server application UUID s to the SDP server on the server side to connect with the server side application [22]. The next step in developing the server program is opening a socket, A socket is the end part of a communication link [22]. The server application s first step is to create a socket (figure 4) [22]. Next the server application binds the socket to the Bluetooth resources on the server by specifying the Bluetooth adapter address and a port number to use [22]. Then the socket is placed listening on listening mode to look for any incoming connection [22]. It accepts the connection to complete the link, which is used to transfer and receive data [22]. Once the application is done with the signals to be transfered, the socket is disconnected to close the connection and release the Bluetooth resources [22]. Figure 3 Connection Using SDP [22]

25 25 Figure 4 Client & Server Socket Connection Process [22] Writing the client side program. Android Tablet is the client and since it is running on Android OS the client program is written in JAVA since Android supports JAVA programming language [24]. To be able to write Android application in JAVA, tools like the Android Software Development Kit (SDK) and an Independent Development Environment (IDE) like an eclipse is needed [24].The IDE/SDK bundle is downloaded from [24]. This is open source and is available to all developers.

26 26 The various steps we need to do to write the client program is shown in figure 2.B. In the first step, the client program search for devices to which it wants to connect. Device discovery is the process through which the device scans the local network for any Bluetooth Device open to pairing and request information from each of those devices [25]. If the client device is in discoverable mode, it will send back its MAC address, its device name and class definition [25]. Using this information the Service device can initiate a connection to the client device [25]. Next in order for the applications running on two devices to communicate with each other, one device (Server) must open a server socket and the other one (Client) must initiate the connection [22]. The client Bluetooth devices try to acquire the server Bluetooth socket and initiate the connection. Here the client passes the UUID of the server application it wants to connect to [22].The passed UUID here must be the same as that used by the server device [22]. When this call is made by the Client, the Server performs an SDP lookup in order to find the application which matches the UUID [22]. If the match is successful the Server accepts the connection [22]. Now both the Server and the client share the same transfer protocol channel and the connection is successful [22]. Each device can send and receive data now [22]. GUI for DARwIn-OP functions. A simple Graphic user interface is written with this program to make the robot walk up, move right, move left, turn his head and move his arms. The controls of the GUI are shown below:

27 27 Figure 5 User Interface The left arrow moves Darwin-OP to the left and the right arrow moves Darwin- OP to the right. The UP arrow moves Darwin straight and the small bars are for moving the left and the right arms. Also, the larger bar is to move Darwin s head. The controls are used to control the various functions that Darwin-OP can perform.

28 28 Methodology Objective Two The second objective is to compare the similarities and differences between the walk of a Human and the walk of Darwin-OP humanoid robot. The walks of both Human and Darwin-OP are simulated using Matlab. A comparison of the Hip, Knee and Ankle walking joint angle, joint angular velocity and joint angular acceleration are made. A design modification is recommended so as to create a better walking system for DARwIn-OP. A new method for walking gait generation for Darwin-OP is proposed using ZMP and Genetic algorithm for optimizing the walking gait of Darwin-OP. The ZMP method is able to generate a more stable walk path with longer strides [34]. Anatomy of a Human Walk The alternating action of the two legs causes walking [26]. The rotation of the leg joints causes the forward translation motion [26]. The Walking cycle begins with one starting step followed by a repetition of steady steps with both the left and right feet alternating for support [26]. If we begin our walk with the right leg, in the first step from the vertical position of the biped, the right leg goes forward and is put on the ground with the support of the left leg all along during this phase [26]. Next is the first steady step. In this phase the left leg is lifted with support from the right leg and is swung forward till it is planted on the ground all the while the biped's weight is supported on the right leg [26]. During the second steady step which is similar to the first steady step, the right foot is swung and the left foot support the biped's weight [26]. The continous repeatation of steady steps produces walking motion in the sagittal plane [26]. At the end of each steady step the humaoid is supported on both legs. [26]

29 29 Figure 6 Human Walking Gait Cycle [27] The humanoid Gait cycle is divided into two separate areas, one is during the timeframe when the foot is in contact with the ground (stance stage) and the other is during the timeframe when the foot is not in contact with the ground (swing stage) [27]. During the Stance phase the foot is in contacts with the ground, and the mass of the biped body is supported by the foot [27]. During the later stage of the Stance phase the humanoid body moves forward [27]. The stance phase is divided into discrete events as described below: [28]

30 30 Heel-strike: The moment when the foot makes contact with the ground. This for the most part happens with the heel touching the ground first [28]. Foot-flat : The moment when whatever is left of the foot comes down to contact the ground. This is the instance when the full weight of the humanoid body is supported by the leg [28]. Midstance is characterized when the center of mass of the humanoid is specifically above the lower leg joint center [28]. Heel-off happens when the heel starts to lift off from the ground in planning for the forward impetus of the body [28]. Toe-off happens as the last occasion of contact amid the position stage [28]. Figure 7 Human Walking Gait Cycle Breakdown

31 31 Anatomy of DARwIn-OP Walk Similar to a Human walk a Robot walk can be divided into four phases: [29] Double Support Phase (DSP) In this stage both the feet of the Humanoid Robot are firmly supported on the ground [29]. Pre-Swing Phase In this stage the heel of the back foot is lifting from the floor however the biped is still in double support as the toes of this foot are still in contact with the ground [29]. Single Support Phase (SSP) In this stage one foot is completely supported on the ground and the other foot translates forward [29]. Post-Swing Phase In this stage the toe of the front foot is moving towards the floor. The humanoid robot is in double support as the heel of front foot is touching the floor and the other back foot is still supporting the weight of the robot [29]. Figure 8 Darwin-OP Walking Gait Cycle Breakdown

32 32 Results from Modeling Angle, Angular Velocity and Acceleration for Human Using data from the paper Human Walking Analysis, Evaluation and Classification Based on Motion Capture System by Bofeng Zhang1, Susu Jiang1, Ke Yan1 and Daming Wei, a model was developed using curve fitting techniques in python [31]. The results from the analysis are discussed below. The equations for the joint angles developed using curve fitting are gven below: Hip angle equation: Y e+05 x e+05 x e+06 x e+06 x e+05 x e+05 x x x x x Knee angle equation: Y 6.809e+05 x e+06 x e+06 x e+06 x e+06 x e+06 x e+05 x e+04 x x x Ankle angle equation: Y e+06 x e+07 x e+08 x e+08 x e+08 x e+08 x e+07 x e+07 x e+06 x e+05 x e+04 x x

33 33 Below are the comparisons of the plots obtained with the results obtained in the paper: Figure 9 Joint Angle Results Obtained Using Curve Fitting

34 Figure 10 Joint Angle Point from Published Data Zhang Bofeng [31] 34

35 Figure 11 Angular Velocity Results of Joints Obtained by Differentiating the Joint Angle Equation 35

36 36 Figure 12 Angular Velocity Results of Joints from Published Data Zhang Bofeng [31]

37 37 Figure 13 Angular Acceleration Results of Joints Obtained by Differentiating the Joint Angle Equation

38 38 Figure 14 Angular Acceleration Results of Joints from Published Data Zhang Bofeng [31]

39 39 Results Analysis of a Human Walk Hip angle analysis. Hip position at initial contact is about 20 degrees of flexion. During loading phase hip remains at about 20 degrees of flexion, although at the end of the phase there may be the initiation of a bit of extension. During this phase angular velocity decreases slightly and the angular acceleration decreases steeply as the change takes place in a small amount of time. During midstance the hip extends towards neutral achieving a position of about 5 degree of flexion by the end of the phrase for a total of 15 degrees. Angular velocity falls during this phase and so does angular acceleration. During terminal stance there is continued extension through neutral to a position of 10 degree of extension. There is not much change in the angular velocity and acceleration during this phase. During pre-swing phase there is a reversal of direction. Change from flexion to nearly neutral occurs. Total motion is 10 degrees of flexion. Angular velocity rises as the changes in joint angles in this phase takes place in a short time. Angular acceleration also rises during this phase. During initial swing rapid flexion to about 15 degrees of flexion takes place. Total motion during this phase is 20 degree of flexion. Angular velocity and angular acceleration also rises steeply during this phase. During mid swing flexion slows, then stops at the end of the phase at a position of about 20 degrees. Total motion during this phase is 5 degrees. Angular velocity and acceleration falls during this phase. Terminal swing initially holds steady then extends slightly to a position of about 20 degrees for a total motion of 5 degrees. This is primary due to the hip extension activity decelerating the swinging limb.

40 40 Figure 15 Joint Angles Plots for Human Hip, Knee and Ankle Knee angle analysis. At initial contact the knee is about 5 degrees of flexion and knee flexion is already underway. During loading response knee continue to flex reach a position of close to 10 degrees of flexion which is nearly its peak flexion. The angular velocity reaches a peak during this phase. Angular acceleration also increases during this phase. During early mid stance flexion ceases and knee begins extending. Thus during midstance the knee is mostly extending, reaching a position of about 5 degrees of flexion. Angular velocity decreases during this phase and so do the angular acceleration. During terminal stance at first the knee continues extending, reaching about neutral position and then the motion is reversed and the knee begin flexing to about 10 degrees of flexion. Both angular velocity and acceleration change direction during this phase. During pre swing rapid flexion to about 40 degree of flexion takes place. Both Angular velocity and acceleration change rapidly during this phase. During initial swing the knee continues flexing reaching a peak of about 50 degrees. Then the motion is reversed and the knee begins extending, so that at

41 41 the end of initial swing a position of 50 degree of flexion is achieved. Angular velocity and acceleration tapers off during this phase. Both angular velocity and acceleration change direction during this phase. During mid swing rapid extension to a position of about 25 degrees of flexion takes place. Both angular velocity and acceleration increase rapidly. During the terminal swing phase the knee continues extending, reaching or almost reaching the neutral position. Then the motion is reversed and the knee begins flexing, so that at the end of terminal swing a position of about neutral flexion has been achieved. Ankle angle analysis. At initial contact the knee is at neutral (90 degrees). This helps to initiate a heel rocker. It also places the ground reaction force vector behind the ankle creating plantar flexion moment. During loading response the ankle begins the phase in neutral, and planter flexion rapidly to about 95 degrees then reverses this motion and dorsiflexes so that at the end phase of the loading response the ankle has returned to neutral. Both angular velocity and angular acceleration decrease during this phase. During the mid stance phase the ankle steadily dorsiflexes to about 95 degrees. This is the ankle rocker which allows progression over the weight bearing limb. Both angular velocity and acceleration rise during this phase. During terminal stance the heel begins to rise but initially the ankle continues dorsiflexing, reaching a peak of about 102 degrees. Eventually this motion ceases and then just before pre swing the ankle begins plantar flexing, reaching about 100 degrees at the end of terminal stance. Not much change takes place in both angular velocity and acceleration during this phase. At the end of this phase

42 42 both angular velocity and acceleration change directions. During preswing rapid plantar flexion from 100 degrees of dorsiflexion to about 85 degree of plantar flexion, as gastroc and soleus continue contracting and as weight is shifted onto the other limb. Angular velocity changes rapidly and so does angular acceleration. During initial swing there may be a bit of additional plantar flexion but almost immediately the ankle begins dorsiflexing in order to clear the toes during swing to about 80 degrees of plantar flexion. Both angular velocity and acceleration change direction rapidly in this phase. During mid swing dorsiflexion is completed as the ankle reaches neutral. During Terminal swing the ankle remains in neutral. Not much change takes place in angular velocity and acceleration during this phase. Results from Modeling Angle, Angular Velocity and Acceleration for Darwin-OP Darwin-OP has a programmable walking controller to help it locomote while in soccer mode. This controller generates a sinusoid for lateral body motion. It also generates a step period to help it move forward [32]. Figure 16 Model for Simulating Darwin-OP Walk [32]

43 43 Let b denote the distance between the swing and stance foot at the beginning of the single support phase and f is the distance between the swing and stance foot at the end of the phase. Then for the swing leg foot, we can generate a smooth sinusoid that begins and ends at the correct position with starting and end acceleration of zero [32]. If we assign the vertical trajectory of the swing foot as a sinusoid with max amplitude zα(t) [32]. Inverse Kinematics Equation for Darwin-OP Simulation Let us Consider, one leg of a humanoid robot, with just the joints hip, knee, and ankle in the sagittal plane. Let (x1, z1) represent the hip joint, (x2, z2) represent the ankle joint, (xk, zk) represent the knee joint, and θl, θ2 repesent the rotations for each limb in the orientation above. Then we can write the system to express the joint equations, Substituting for xk, zk yields,

44 44 Figure 17 Leg Model for Darwin-OP Simulation By completing the triangle and assigning the variable labels in the diagram above, the relationships can be established [32], Thus, which gives us the rotation angles ( θl, θ2 ) of the limbs on the legs expressed in terms of the leg lengths (l1,l2) and the position of the hip (x1, z1) and the ankle (xk, zk).

45 45 Results obtained for angles, angular velocity and angular acceleration for hip, knee and ankle joints for Darwin-OP Knee result plots. knee angle time angular velocity knee angular acceleration Knee 0.5 time time Figure 18 Knee Joint Angle, Angular Velocity and Angular Acceleration Plots for Darwin-OP

46 46 Hip result plots. Figure 19 Hip Joint Angle, Angular Velocity and Angular Acceleration Plots for DarwinOP

47 47 Ankle result plots. Figure 20 Ankle Joint Angle, Angular Velocity and Angular Acceleration Plots for Darwin-OP

48 48 Comparison of Human and Darwin-OP Walk A humanoid structure is rigid unlike human. So, the humanoid robot s kinematics and dynamics mechanisms differ from those of the human. Since the Human and Humanoid have different phase in their walk, a better comparison can be made if we consider the walking motion to be a two phase motion i.e when the foot is in stance position and when the foot is in swing position. Both the Human and Humanoid have these phases and so a better comparison can be made. Darwin Moves with a Bend hip angle. Both Darwin and human use the hip angle during the swing phase. In the stance phase Darwin always has a bent hip angle and it never goes down to zero that means Darwin s upper leg is never vertical. This is done to maintain stability for the robot. But for Human the hip angle goes down below zero. The total change in the hip angle for Darwin during the stance phase is around 25 degrees but for a human it is around 35 degrees. During the stance phase there is not much change in angular velocity of the hip angle for both human and Darwin. The change is much steeper for Darwin then for human. For human the change in acceleration is steep at the start and end of the stance phase. For Darwin the change in angular acceleration is steep towards the end of stance phase when it is getting ready to move into the swing phase. During swing phase the Hip angle changes steeply for Darwin and towards the end of the swing phase the change in the knee angle decreases when Darwin is about to put his foot on the ground. The change in the hip angle for human during the swing phase is similar to Darwin, but the change is smaller towards the end of the swing phase. Angular velocity and angular acceleration change are similar for both human and Darwin. Both angular

49 49 velocity and angular acceleration rise during the start of the phase and decrease towards the end of the swing phase. Knee Joint is used by Darwin for lifting up its foot during the free leg phase. Darwin s knee angles moves as a sinusoidal wave during the stance phase. The knee angle is always bent for stability. Darwin knee bent is more than a human knee. For Darwin the angular acceleration at the knee is steeper in the beginning than at the end of the stance phase. Similar is the case with the human knee acceleration. During the swing phase there is steep change in knee angle for Darwin. For human as well the change in knee angle is steep during the swing phase but is more uniform and smooth than the change in Darwin s knee angle. Both angular velocity and angular acceleration at the knee angle first decrease and then increase towards the end of the swing phase for Darwin. Simlar kind of change is also seen in the angular velocity and acceleration charts for human. As Darwin s walk with a lower bent leg, the ankle angle is always more than 90 degrees. During the stance phase the knee angle for Darwin rises steadily from 100 degrees to about 125 degrees. Similarly for human during the stance phase the ankle angle rises from 90 to about 102 degrees. The change in angular velocity and angular acceleration for the ankle joint is small for Darwin during the stance phase. Similarly there is not much change in the angular velocity and angular velocity of the ankle joint for human during the stance phase. During the swing phase there is steep change in the ankle angle for Darwin. During the swing phase for human first there is a fall during the starting of the phase. This is because of the change in the angle of the lower leg. But as

50 50 the phase progresses the ankle angle again start increasing for humans because of the change affected by the movement of the human foot. For Darwin there is a steep change in the angular velocity and angular acceleration during the start of the swing phase but both starts increasing during the end of the swing phase. Similar changes are seen for angular velocity and acceleration change for ankle angle in humans. Both the rise and fall cycles for angular velocity and angular acceleration are steadier for humans. Humanoid Robots are built to imitate the structure and locomotive charcteristics of Humans. Humanoid robots actuate using power from electricals motors and their structure is made of interconnected rigid bodies. Human walk is highly efficient but is extremely complex. It consists of periodic motions of the legs that alternate between a stable and an unstable phase [29]. The unstable phase ensures forward motion. As it is difficult to model this unstable phase in Robots, the ZMP criteris is used for robotic motion [29]. A dynamically stable robot the ZMP should be within the support polygon [29].So, Humanoid robots have kinematic redundancy, as there is no unique ZMP path mapped to the joint motions [29]. So, stability is attained in Humanoid robots at the cost of efficiency [29]. Recommendation for DARwIn-OP for a Better more Efficient Walk Darwin-OP has a programmable walking controller to help it locomote while in soccer mode. This controller generates a sinusoid for lateral body motion. It also generates a step period to help it move forward. The walk path generated from the controller appears to create short and choppy steps for Darwin-OP [33].

51 51 A new method for walking gait generation for Darwin-OP is proposed using ZMP and Genetic algorithm for optimizing the walking gait of Darwin-OP. The ZMP method is able to generate a more stable walk path with longer strides. [34]. The steps in the walking gait generation of Darwin-OP biped are - The generalized coordinate s equactions in terms of inverse kinematic parameters are developed and shown below. The inverse kinematics is expressed in terms of certain gait parameters. Figure 21 Generalised Coordinates [34]

52 52 Figure 22 Generalized Coordinates in Terms of the Inverse Kinematic Parameters [34] The next step is the parameterization of walking gait. Step-length s, bendingheight h, maximum lifting-height H, maximum frontal-shift n, and step-time T are used to express the walking gait [34].

53 53 Figure 23 Gait Generation Parameters [34] Figure 24 Gait Generation Equactions [34]

54 54 The next step is the calculating the ZMP parameters. Figure 25 ZMP Calculations [34] These walking parameters are then optimized using GA. The optimisation is trade off between stability margin and walking speed. Stability margin is directly affected by the ZMP positions were as walking speed depends on step-size [34]. The walking gait with maximum stability margin is obtained by minimizing the function [34]

55 55 Therefore the CF is defined as [34] If the maximum numerical values of f1 and f2 are f1max and f2max respectively, then the cost function is can be given by [34] By maximizing the cost function the optimal walking parameters are obtained [34].

56 56 References [1] Oxford Dictionary. "Robotics." Web. 02 Feb [2] Spong, Mark W., and Mathukumalli Vidyasagar. Robot dynamics and control. John Wiley & Sons, [3] "Types of Robots." Web. 02 Feb [4] "Mobile Robot." Mobile Robot. Wikipedia. Web. 01 May [5] "Legged Robot." Legged Robot. Wikipedia. Web. 01 May [6] Ha, Inyong, et al. "Development of open humanoid platform DARwIn-OP." SICE Annual Conference (SICE), 2011 Proceedings of. IEEE, [7] E. Guizzo. (2011, April 7). Robots enter Fukushima reactors, detect high radiation. IEEE Spectrum [Online]. Available: robotsenter-fukushima-reactors-detect-high-radiation [8] "Types of Robots." Web. 02 Feb [9] Mihelj Matjaž, Podobnik Janez. Teleoperation systems. in Haptic for Virtual reality and Teleoperation, Ed. New York : Springer, 2012, pp [10] Kato, I., Y. Mori, and T. Masuda. "Pneumatically powered artificial legs walking automatically under various circumstances." Proc. of 4th Int. Symposium in External Control of Human Extremities

57 57 [11] K. Hirai, M. Hirose, Y. Haikawa, and T. Takenaka, The Development of Honda Humanoid Robot, International Conference on Robotics and Automation, pp , [12] K. Kaneko, K. Harada, F. Kanehiro, G. Miyamori, and K. Akachi, Humanoid robot HRP-3,International Conference on Intelligent Robots and Systems, pp ,2008. [13] S. Lohmeier, T. Buschmann, and H. Ulbrich, Humanoid Robot LOLA,International Conference on Robotics and Automation, pp , [14] I.W. Park, J. Y. Kim, J. Lee, and J. H. Oh, Mechanical Design of Humanoid Robot Platform KHR-3 (KAIST Humanoid Robot 3:HUBO),International Conference on Humanoid Robots, pp , [15] C.B. Myers. (2010, Sept. 3). NASA ready to send humanoid robot to space. IEEE Spectrum [Online]. Available: nasa-ready-to-send-humanoid-robot-to-space [16] ROBOTIS Co, Ltd. Web Site, [17] Robotis.Inc (2012, Aug. 12). DARwIn-OP downloads page [online]. Available: [18] J.Lerner and J.Tirole, The economics of technology sharing, Journal of Economic Perspectives, vol.19, pp , Spring, [19] Wikipedia. "Interface (Computing)." Web. 02 Feb

58 58 [20] B. Sellers, Lecture, Topic: Introduction to Interfaces, ICT 224, Faculty of Engineering, Loughborough University, Leicestershire, UK, [21] "Targus Bluetooth 4.0 Dual-Mode Micro USB Adapter." Targus Bluetooth 4.0 DualMode Micro USB Adapter. Web. 23 Dec [22] Huang, A. (2005). An introduction to bluetooth programming. URL: csail. mit. edu/albert/bluez-intro [23] Bluez Project. "Download." Web. 02 June [24] Google. "Developing Android App." Web. 02 June [25] Google. "Bluetooth." Developers. Web. 02 Feb [26] Dr. Robert Williams. Engineering Biomechanics of Human Motion. Print. Walking Anatomy/Physiology Overview [27] "Human Gait Cycle." Web. 02 June [28] Ayyappa, E., Normal Human Locomotion, Part 1: Basic Concepts and Terminology. JPO: Journal of Prosthetics and Orthotics, (1): p [29] M.H.P. Dekker. ZERO-MOMENT POINT METHOD FOR STABLE BIPED WALKING. Eindhoven: U of Technology, Print. [30] "Lesson: Shoes Under Pressure." Teach Engineering. Web. 02 Feb [31] Zhang, Bofeng, et al. Human Walking Analysis, Evaluation and Classification Based on Motion Capture System. INTECH Open Access Publisher, [32] Liu, Ruisen Eric. "Walking Pattern Generation for Humanoid Robots." (2015).

59 59 [33] Rudy, Joseph. "Zero moment point walking controller for humanoid walking using darwin-op" (2013). [34] Dip, Goswami, Vadakkepat Prahlad, and Phung Duc Kien. "Genetic algorithm-based optimal bipedal walking gait synthesis considering tradeoff between stability margin and speed." Robotica (2009): [35] "Index of /~kernel-ppa/mainline." Ubuntu Kernel. Web. 02 June 2013.

60 60 Appendix A: Darwin-OP Start Guide The basic steps needed to start Darwin-OP and get it into & out of the Bluetooth mode are as follows: The first step is to position Darwin-OP in the sitting position. The next step is either to plug in the DC power supply or to plug in the battery pack provide with the robot. Then the power switch, which is on the back side of DarwinOP, is turned on. Darwin-OP goes through a sequence of initialization step and after the initialization is complete it goes into the default setting of the Demonstration ready mode. By pushing the mode button at the back of Darwin-OP, the robot can be set up in the Autonomous soccer mode or Interactive Motion Mode or Vision processing mode. For getting Darwin-OP into the Bluetooth mode and hence control it with a tablet, DarwinOP after being power on and initialized, the connect button on the Android application installed on the Tablet is pushed (figure 24). Figure 26 User Interface

61 61 Darwin-OP goes into the Bluetooth mode and can be operated from the tablet. To get out of the Bluetooth mode, press the disconnect button on the application running on the Android tablet (figure 24). After being disconnected Darwin-OP goes back to its default mode i.e Demonstartion ready mode.

62 62 Appendix B: Upgrading the Darwin-OP Kernel The step in the process to upgrade the kernel is are the following The first step is to download the kernel files. The kernel is downloaded from the website : kernel.ubuntu.com/~kernelppa/mainline/ [35]. The kernel version v3.10 is downloaded. For an intel based machine the kernel files to be download are [35] linux-headers generic_ _i386.deb, linux-headers _ _all.deb linux-image generic_ _i386.deb. For a AMD machine the kernel files to be download are linux-headers generic_ _amd64. deb linux-headers _ _all.deb linux-image generic_ _amd64. deb. The next step is to install the Kernel files. The Downloaded files are in the Downloads folder of Ubuntu. By changing the directory (cd) to the downloaded folder,

63 63 he following command is executed. After installation the system is rebooted so that the kernel is updated and DARwIn-OP detects the Bluetooth Hardware.

64 64 Appendix C: Installing Bluez Bluetooth Libraries in Darwin-OP The Bluez libraries are downloaded from the site [23]. These are open source libraries. The bluez-utils-3.36.tar.gz package is downloaded. Updated Bluetooth utility packages are available but for this project version 3.36 was used. The package is unzipped with the following command: After uncompressing the package the following command is executed to install Bluez. After installation a file libbluetooth will be created in the folder /usr/local/bin.

65 65 Appendix D: Android Application Development Stages The development stage for an android app is shown in figure 25 below [24]: Figure 27 Development Stages for Android Application [24]

66 66 Appendix E: Code for Server Program /** * This was adapted from a post from Huang, A. (2005). An introduction to bluetooth programming. URL: csail. mit. edu/albert/bluez-intro, * **/ #include <stdio.h> #include <unistd.h> #include <sys/socket.h> #include <bluetooth/bluetooth.h> #include <bluetooth/sdp.h> #include <bluetooth/sdp_lib.h> #include <bluetooth/rfcomm.h> #include <string.h> sdp_session_t *register_service() // Function for registering SDP server { // Universal Unique Identification number of server application uint32_t svc_u2id_int[] { 0x0000, 0x1101, 0x0000, 0x0000 }; // RFCOMM port number assigned uint8_t rfc_port 1; // Application service name assigned const char *service_name "Darwin-OP Connection"; // Application service description const char *service_type "Bluetooth Connection";

67 67 const char *service_provider "Darwin-OP"; // UUID s are of uuid_t data type uuid_t main_u2id, llcap_u2id; uuid_t rfc_u2id, svc_u2id, svc_cl_u2id; // Initializing the SDP linked list sdp_list_t *llcap_l 0, *rfc_l 0, *root_l 0, *proto_l 0, *access_proto_l 0, *svc_cl_l 0, *profile_l 0; // initializing the channel for the SDP server sdp_data_t *channel 0; // sdp profile descripter is used for describing the Bluetooth profile sdp_profile_desc_t profile; // initialing the service record advertised by the SDP server sdp_record_t data { 0 }; // initializing a connection to SDP server sdp_session_t *SDP_session 0; sdp_set_service_id( &data, svc_u2id );

68 68 // service class is initalized sdp_set_service_classes(&data, svc_cl_l); // Bluetooth profile information is initialized sdp_set_profile_descs(&record, profile_list); // opening the service to all devices sdp_set_browse_groups( &record, root_list ); // registering the RFCOMM protocol channels and sockets channels sdp_data_alloc(sdp_uint8, &rfcomm_port); rfcomm_l sdp_list_append( 0, &rfcomm_u2id ); // initializing the service provider, and description sdp_set_info_attr(&record, service_name, service_prov, service_dsc); // initialting connectin to the SDP server & register the record on the server sdp_record_register(session, &record, 0); // freeing up the resources from the pointers sdp_data_free( channel ); return session; } int main() { // Starting SDP server session sdp_session_t* session register_service();

69 69 // initialing data type for storing server and client addresses struct sockaddr_rc local_address { 0 }, rem_addr { 0 }; char buffer[1024] { 0 }, command[50]; socklen_t opt sizeof(rem_addr); // allocating memory for the socket s socket(af_bluetooth, SOCK_STREAM, BTPROTO_RFCOMM); // allocating memory address for the Server bluetooth adapter loc_addr.rc_family AF_BLUETOOTH; loc_addr.rc_bdaddr *BDADDR_ANY; bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr)); // opening up the socket in listening mode listen(s, 1); // server accepting incoming connection client accept(s, (struct sockaddr *)&rem_addr, &opt); ba2str( &rem_addr.rc_bdaddr, buffer ); memset(buf, 0, sizeof(buf)); // scanning for input data from the client application bytes_read read(client, buffer, sizeof(buffer)); if( bytes_read > 0 ) { strcpy(command, "ls -l"); system(command); }

70 70 // close connection close (client); close(server); // close SDP server session sdp_close( session ); return 0; }

71 71 Appendix F: Code for Client Program The client code is developed in Java and consists of five java files. The client code do the following four tasks: set up the host Bluetooth adapter, search for other Bluetooth device to connect to, setup socket connection with other Bluetooth devices and transfer data over the established connection between the devices. The main.java file contains the code for the interface UI s and have functions defined to call the other java files. The showdevices.java contains the code for other device discovery by the host device. The Acceptthread.java file contains the code for connecting the client socket with the server socket. The connectionthread.java file contains the code for maintaining the connection between the client and the server and also transferring and receiving data between the server and the client. /** * This was adapted from a post from Google. "Bluetooth." Developers. Forum. * **/ // main.java package darwin.example.darwin_op; import java.util.arraylist; import java.util.set; import java.util.uuid; import android.app.activity; import android.bluetooth.bluetoothadapter; import android.bluetooth.bluetoothdevice; import android.content.intent; import android.os.bundle; import android.os.handler; import android.os.message; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button;

72 72 import android.widget.imagebutton; import android.widget.seekbar; import android.widget.seekbar.onseekbarchangelistener; import android.widget.textview; public class DataTransferActivity extends Activity { private static final String TAG "Darwin"; private static final int REQUEST_ENABLE_BT 0; private static final int SELECT_SERVER 1; public static final int DATA_RECEIVED 3; public static final int SOCKET_CONNECTED 4; public static final UUID APP_UUID UUID.fromString(" F9B34FB"); // defining the GUI private Button serverbutton, clientbutton; private ImageButton button3,button4,button5; private TextView tv null; private SeekBar seekbar1,seekbar2,seekbar3; private BluetoothAdapter mybluetoothadapter null; private ConnectionThread mybluetoothconnection null; private String data; private boolean public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // starting the device Bluetooth adapter mybluetoothadapter BluetoothAdapter.getDefaultAdapter(); if (mbluetoothadapter null) { Log.i(TAG, "Bluetooth is not supported on device"); finish(); } // setting the GUI layout setcontentview(r.layout.main); tv (TextView) findviewbyid(r.id.text_window); serverbutton (Button) findviewbyid(r.id.server_button); serverbutton.setonclicklistener(new OnClickListener() public void onclick(view v) { startasserver(); mservermode true; } });

73 73 clientbutton (Button) findviewbyid(r.id.client_button); clientbutton.setonclicklistener(new OnClickListener() public void onclick(view v) { selectserver(); } }); button3 (ImageButton) findviewbyid(r.id.button3); button3.setonclicklistener(new OnClickListener() public void onclick(view v) { connecttowrite(); } }); button4 (ImageButton) findviewbyid(r.id.button4); button4.setonclicklistener(new OnClickListener() public void onclick(view v) { connecttowrite(); } }); button5 (ImageButton) findviewbyid(r.id.imagebutton1); button5.setonclicklistener(new OnClickListener() public void onclick(view v) { connecttowrite(); } }); seekbar1 (SeekBar) findviewbyid(r.id.seekbar1); seekbar1.setonseekbarchangelistener(new OnSeekBarChangeListener(){ public void onprogresschanged(seekbar seekbar, int progress, boolean fromuser) { // TODO Auto-generated method stub tv.settext("seekbar value is L Arm "+progress); }

74 74 public void onstarttrackingtouch(seekbar seekbar) { // TODO Auto-generated method stub } public void onstoptrackingtouch(seekbar seekbar) { // TODO Auto-generated method stub } }); if (!mbluetoothadapter.isenabled()) { Intent enablebluetoothintent new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE); startactivityforresult(enablebluetoothintent, REQUEST_ENABLE_BT); } else { setbuttonsenabled(true); } protected void onactivityresult(int requestcode, int resultcode, Intent data) { if (requestcode REQUEST_ENABLE_BT && resultcode RESULT_OK) { setbuttonsenabled(true); } else if (requestcode SELECT_SERVER && resultcode RESULT_OK) { BluetoothDevice device data.getparcelableextra(bluetoothdevice.extra_device); connecttobluetoothserver(device.getaddress()); } } private void startasserver() { setbuttonsenabled(false); new AcceptThread(mHandler).start(); } private void selectserver() {

75 75 setbuttonsenabled(false); Set<BluetoothDevice> paireddevices mbluetoothadapter.getbondeddevices(); ArrayList<String> paireddevicestrings new ArrayList<String>(); Intent showdevicesintent new Intent(this, ShowDevices.class); showdevicesintent.putstringarraylistextra("devices", paireddevicestrings); startactivityforresult(showdevicesintent, SELECT_SERVER); } private void connecttobluetoothserver(string id) { tv.settext("connecting to Server..."); new ConnectThread(id, mhandler); } private void connecttowrite() { tv.settext("sending data..."); String message "Hello from Android.\n"; byte[] msgbuffer message.getbytes(); mbluetoothconnection.write(msgbuffer); } public Handler mhandler new Handler() public void handlemessage(message text) { switch (text.what) { case SOCKET_CONNECTED: { mbluetoothconnection (ConnectionThread) msg.obj; if (!mservermode) mbluetoothconnection.write("this is message".getbytes()); break; } case DATA_RECEIVED: { data (String) msg.obj; tv.settext(data); if (mservermode) mbluetoothconnection.write(data.getbytes()); } default: a

76 76 break; } } }; private void setbuttonsenabled(boolean state) { serverbutton.setenabled(state); clientbutton.setenabled(state); //button3.setenabled(state); } }

77 77 //Show device //showdevices.java package darwin.example.darwin_op; import java.util.list; import android.app.listactivity; import android.bluetooth.bluetoothadapter; import android.bluetooth.bluetoothdevice; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.content.intentfilter; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; public class ShowDevices extends ListActivity { BluetoothAdapter mbluetoothadapter null; ArrayAdapter<String> marrayadapter null; // creating a broadcast receiver private final BroadcastReceiver mybroadcastreceiver BroadcastReceiver() { public void onreceive(context context, Intent intent) { String action intent.getaction(); // if device is found in auto discover mode if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device intent.getparcelableextra (BluetoothDevice.EXTRA_DEVICE); } } protected void oncreate(bundle savedinstancestate) { super.oncreate (savedinstancestate); // initialize the default adapter mybluetoothadapter BluetoothAdapter.getDefaultAdapter(); new

78 78 // including the discovered devices in a listview final ListView lv getlistview(); final TextView footer new TextView(this); footer.settext("discover More Devices"); lv.setfooterdividersenabled(true); lv.addfooterview(footer, null, true); final List<String> devices getintent().getstringarraylistextra("devices"); myarrayadapter new ArrayAdapter<String>(this, R.layout.list_item,devices); setlistadapter(myarrayadapter); // onclick item listener when a list item is clicked getlistview().setonitemclicklistener(new OnItemClickListener() public void onitemclick(adapterview<?> parent, View view, int pos,long id) { if (parent.getadapter().getitemviewtype(pos) AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER) { mybluetoothadapter.startdiscovery(); } else { String tmp (String) parent.getitematposition(pos); BluetoothDevice device mybluetoothadapter.getremotedevice(tmp.split("\n")[1]); Intent data new Intent(); data.putextra(bluetoothdevice.extra_device, device); setresult(result_ok, data); finish(); } } }); } // in case of onresume protected void onresume() { super.onresume(); IntentFilter in_filter new IntentFilter(BluetoothDevice.ACTION_FOUND); registerreceiver(mreceiver, filter); } // incase of onpause protected void onpause() { unregisterreceiver(mreceiver);

79 79 super.onpause(); } }

80 80 // Acceptthread //connectedtread.java package darwin.example.darwin_op; import java.io.ioexception; import android.bluetooth.bluetoothadapter; import android.bluetooth.bluetoothdevice; import android.bluetooth.bluetoothsocket; import android.os.handler; public class ConnectThread extends Thread { private BluetoothSocket mybluetoothsocket; // temporary object which is later assigned to mserversocket private final BluetoothDevice mdevice; private final BluetoothAdapter mybluetoothadapter BluetoothAdapter.getDefaultAdapter(); private final Handler mhandler; public ConnectThread(String deviceid, Handler handler) { mdevice mybluetoothadapter.getremotedevice(deviceid); mhandler handler; // the BluetoothSocket is connected with the client try { mybluetoothsocket mdevice.createrfcommsockettoservicerecord(datatransferactivity.app_uuid); } catch (IOException e) { e.printstacktrace(); } } public void run() { // device discovery is cancelled as it slows the connection mybluetoothadapter.canceldiscovery(); try { // the device is connected mybluetoothsocket.connect(); manageconnectedsocket(); } catch (IOException connectexception) { try {

81 81 // if devices unable to connect mbluetoothsocket.close(); } catch (IOException e) { e.printstacktrace(); } } } private void manageconnectedsocket() { ConnectionThread conn new ConnectionThread( mbluetoothsocket, mhandler); mhandler.obtainmessage( DataTransferActivity.SOCKET_CONNECTED, conn).sendtotarget(); conn.start(); } // cancel inprogress connection and close socket public void cancel() { try { mbluetoothsocket.close(); } catch (IOException e) { } } }

82 82 //ConnectionTread.java package darwin.example.darwin_op; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import android.bluetooth.bluetoothsocket; import android.os.handler; public class ConnectionThread extends Thread { BluetoothSocket mbluetoothsocket; private final Handler mhandler; private InputStream minstream; private OutputStream moutstream; ConnectionThread(BluetoothSocket socket, Handler handler){ super(); mybluetoothsocket socket; mhandler handler; try { minstream mybluetoothsocket.getinputstream(); moutstream mybluetoothsocket.getoutputstream(); } catch (IOException e) { } public void run() { // buffer for storing stream values byte[] buf new byte[1024]; // bytes stored in read int bytes; // keep listening to input until an exception is thrown while (true) { try { // data from input stream bytes minstream.read(buf); String data new String(buf, 0, bytes); mhandler.obtainmessage(datatransferactivity.data_received,data).sendtotarget(); } catch (IOException e) { break;

83 83 } } } // send data signal to server device public void write(byte[] text) { try { moutstream.write(text); } catch (IOException e) { } } }

84 84 Appendix G: Simulation Code for Human & DARwIn-OP Walk humansimulation.m Forward pose kinematics trajectory for planar 3R adult male human arm shoulder, elbow, wrist BME 5670, Dr. Bob clc; clear; Constants DR pi/180; L [ ]; L1 L(1); L2 L(2); L3 L(3); L4L(4); male arm lengths th1lim [-80-81]*DR; torso pitch joint absolute angle limits th2lim [-40-41]*DR; thigh pitch joint relative angle limits th3lim [10 30]*DR; lower leg pitch joint relative angle limits th4lim [-95-90]*DR; foot th10 th1lim(1); th1f th1lim(2); th20 th2lim(1); th2f th2lim(2); th30 th3lim(1); th3f th3lim(2); th40 th4lim(1); th4f th4lim(2); N 106; dth1 (th1f-th10)/(n-1); dth2 (th2f-th20)/(n-1); dth3 (th3f-th30)/(n-1); dth4 (th4f-th40)/(n-1); th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; t0 0; tf 1; Artificial time vector dt (tf-t0)/(n-1); t [t0:dt:tf]; Loop for FPK motion simulation figure; for i 1:11, Forward Pose Kinematics th1lim [-80-81]*DR; th2lim [-40-41]*DR; th3lim [10 30]*DR; th4lim [-85-90]*DR; th10 th1lim(1); th1f th20 th2lim(1); th2f th30 th3lim(1); th3f th40 th4lim(1); th4f NN-20; dth1 (th1f-th10)/10; torso pitch joint absolute angle limits thigh pitch joint relative angle limits lower leg pitch joint relative angle limits foot th1lim(2); th2lim(2); th3lim(2); th4lim(2);

85 85 dth2 (th2f-th20)/10; dth3 (th3f-th30)/10; dth4 (th4f-th40)/10; th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; ac1(i) cos(th1(i)); as1(i) sin(th1(i)); ac12(i) cos(th1(i)+th2(i)); as12(i) sin(th1(i)+th2(i)); ac123(i) cos(th1(i)+th2(i)+th3(i)); as123(i) sin(th1(i)+th2(i)+th3(i)); ac1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); as1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); axh(i) L1*c1 + L2*c12 + L3*c123; FPK solution ayh(i) L1*s1 + L2*s12 + L3*s123; atheta1(i)th1(i)+2*pi; atheta2(i)th2(i)+2*pi; atheta3(i)th3(i); atheta4(i)th4(i)+2*pi; disp(atheta1); ith1lim ith2lim ith3lim ith4lim ith10 ith20 ith30 ith40 [-68-72]*DR; torso pitch joint absolute angle limits [-4-14]*DR; thigh pitch joint relative angle limits [18 56]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot ith1lim(1); ith1f ith1lim(2); ith2lim(1); ith2f ith2lim(2); ith3lim(1); ith3f ith3lim(2); ith4lim(1); ith4f ith4lim(2); idth1 (ith1f-ith10)/10; idth2 (ith2f-ith20)/10; idth3 (ith3f-ith30)/10; idth4 (ith4f-ith40)/10; ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith4 [ith40:idth4:ith4f]; idc1(i) cos(ith1(i)); ids1(i) sin(ith1(i)); idc12(i) cos(ith1(i)+ith2(i)); ids12(i) sin(ith1(i)+ith2(i)); idc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ids123(i) sin(ith1(i)+ith2(i)+ith3(i)); idc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ids1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123;

86 86 end for i1:21 th1lim th2lim th3lim th4lim th10 th20 th30 th40 [-81-78]*DR; torso pitch joint absolute angle limits [-41-16]*DR; thigh pitch joint relative angle limits [30 16]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot th1lim(1); th1f th1lim(2); th2lim(1); th2f th2lim(2); th3lim(1); th3f th3lim(2); th4lim(1); th4f th4lim(2); dth1 (th1f-th10)/20; dth2 (th2f-th20)/20; dth3 (th3f-th30)/20; dth4 (th4f-th40)/20; th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; bc1(i) cos(th1(i)); bs1(i) sin(th1(i)); bc12(i) cos(th1(i)+th2(i)); bs12(i) sin(th1(i)+th2(i)); bc123(i) cos(th1(i)+th2(i)+th3(i)); bs123(i) sin(th1(i)+th2(i)+th3(i)); bc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); bs1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; btheta1(i)th1(i)+2*pi; btheta2(i)th2(i)+2*pi; btheta3(i)th3(i); btheta4(i)th4(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith10 [-72-82]*DR; torso pitch joint absolute angle limits [-14-32]*DR; thigh pitch joint relative angle limits [56 74]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot ith1lim(1); ith1f ith1lim(2);

87 87 ith20 ith2lim(1); ith2f ith2lim(2); ith30 ith3lim(1); ith3f ith3lim(2); ith40 ith4lim(1); ith4f ith4lim(2); idth1 (ith1f-ith10)/20; idth2 (ith2f-ith20)/20; idth3 (ith3f-ith30)/20; idth4 (ith4f-ith40)/20; ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith4 [ith40:idth4:ith4f]; iec1(i) cos(ith1(i)); ies1(i) sin(ith1(i)); iec12(i) cos(ith1(i)+ith2(i)); ies12(i) sin(ith1(i)+ith2(i)); iec123(i) cos(ith1(i)+ith2(i)+ith3(i)); ies123(i) sin(ith1(i)+ith2(i)+ith3(i)); iec1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ies1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i1:21 th1lim th2lim th3lim th4lim th10 th20 th30 th40 [-78-68]*DR; torso pitch joint absolute angle limits [-16-4]*DR; thigh pitch joint relative angle limits [16 18]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot th1lim(1); th1f th1lim(2); th2lim(1); th2f th2lim(2); th3lim(1); th3f th3lim(2); th4lim(1); th4f th4lim(2); dth1 (th1f-th10)/20; dth2 (th2f-th20)/20; dth3 (th3f-th30)/20; dth4 (th4f-th40)/20; th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f];

88 88 cc1(i) cos(th1(i)); cs1(i) sin(th1(i)); cc12(i) cos(th1(i)+th2(i)); cs12(i) sin(th1(i)+th2(i)); cc123(i) cos(th1(i)+th2(i)+th3(i)); cs123(i) sin(th1(i)+th2(i)+th3(i)); cc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); cs1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; ctheta1(i)th1(i)+2*pi; ctheta2(i)th2(i)+2*pi; ctheta3(i)th3(i); ctheta4(i)th4(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith10 ith20 ith30 ith40 [-82-80]*DR; torso pitch joint absolute angle limits [-32-40]*DR; thigh pitch joint relative angle limits [74 10]*DR; lower leg pitch joint relative angle limits [-98-85]*DR; foot ith1lim(1); ith1f ith1lim(2); ith2lim(1); ith2f ith2lim(2); ith3lim(1); ith3f ith3lim(2); ith4lim(1); ith4f ith4lim(2); idth1 (ith1f-ith10)/20; idth2 (ith2f-ith20)/20; idth3 (ith3f-ith30)/20; idth4 (ith4f-ith40)/20; ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith4 [ith40:idth4:ith4f]; ifc1(i) cos(ith1(i)); ifs1(i) sin(ith1(i)); ifc12(i) cos(ith1(i)+ith2(i)); ifs12(i) sin(ith1(i)+ith2(i)); ifc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ifs123(i) sin(ith1(i)+ith2(i)+ith3(i)); ifc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ifs1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i1:11 th1lim [-68-72]*DR; torso pitch joint absolute angle limits th2lim [-4-14]*DR; thigh pitch joint relative angle limits th3lim [18 56]*DR; lower leg pitch joint relative angle limits

89 89 th4lim th10 th20 th30 th40 [ ]*DR; th1lim(1); th1f th2lim(1); th2f th3lim(1); th3f th4lim(1); th4f foot th1lim(2); th2lim(2); th3lim(2); th4lim(2); dth1 (th1f-th10)/10; dth2 (th2f-th20)/10; dth3 (th3f-th30)/10; dth4 (th4f-th40)/10; th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; dc1(i) cos(th1(i)); ds1(i) sin(th1(i)); dc12(i) cos(th1(i)+th2(i)); ds12(i) sin(th1(i)+th2(i)); dc123(i) cos(th1(i)+th2(i)+th3(i)); ds123(i) sin(th1(i)+th2(i)+th3(i)); dc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); ds1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; dtheta1(i)th1(i)+2*pi; dtheta2(i)th2(i)+2*pi; dtheta3(i)th3(i); dtheta4(i)th4(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith10 ith20 ith30 ith40 [-80-81]*DR; torso pitch joint absolute angle limits [-40-41]*DR; thigh pitch joint relative angle limits [10 30]*DR; lower leg pitch joint relative angle limits [-85-90]*DR; foot ith1lim(1); ith1f ith1lim(2); ith2lim(1); ith2f ith2lim(2); ith3lim(1); ith3f ith3lim(2); ith4lim(1); ith4f ith4lim(2); idth1 (ith1f-ith10)/10; idth2 (ith2f-ith20)/10; idth3 (ith3f-ith30)/10; idth4 (ith4f-ith40)/10; ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith4 [ith40:idth4:ith4f]; iac1(i) cos(ith1(i)); ias1(i) sin(ith1(i)); iac12(i) cos(ith1(i)+ith2(i)); ias12(i) sin(ith1(i)+ith2(i));

90 90 iac123(i) cos(ith1(i)+ith2(i)+ith3(i)); ias123(i) sin(ith1(i)+ith2(i)+ith3(i)); iac1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ias1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i1:21 th1lim th2lim th3lim th4lim th10 th20 th30 th40 [-72-82]*DR; torso pitch joint absolute angle limits [-14-32]*DR; thigh pitch joint relative angle limits [56 74]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot th1lim(1); th1f th1lim(2); th2lim(1); th2f th2lim(2); th3lim(1); th3f th3lim(2); th4lim(1); th4f th4lim(2); dth1 (th1f-th10)/20; dth2 (th2f-th20)/20; dth3 (th3f-th30)/20; dth4 (th4f-th40)/20; th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; ec1(i) cos(th1(i)); es1(i) sin(th1(i)); ec12(i) cos(th1(i)+th2(i)); es12(i) sin(th1(i)+th2(i)); ec123(i) cos(th1(i)+th2(i)+th3(i)); es123(i) sin(th1(i)+th2(i)+th3(i)); ec1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); es1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; etheta1(i)th1(i)+2*pi; etheta2(i)th2(i)+2*pi; etheta3(i)th3(i); etheta4(i)th4(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith10 ith20 ith30 [-81-78]*DR; torso pitch joint absolute angle limits [-41-16]*DR; thigh pitch joint relative angle limits [30 16]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot ith1lim(1); ith1f ith1lim(2); ith2lim(1); ith2f ith2lim(2); ith3lim(1); ith3f ith3lim(2);

91 91 ith40 ith4lim(1); ith4f ith4lim(2); idth1 (ith1f-ith10)/20; idth2 (ith2f-ith20)/20; idth3 (ith3f-ith30)/20; idth4 (ith4f-ith40)/20; ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith4 [ith40:idth4:ith4f]; ibc1(i) cos(ith1(i)); ibs1(i) sin(ith1(i)); ibc12(i) cos(ith1(i)+ith2(i)); ibs12(i) sin(ith1(i)+ith2(i)); ibc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ibs123(i) sin(ith1(i)+ith2(i)+ith3(i)); ibc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ibs1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i1:21 th1lim th2lim th3lim th4lim th10 th20 th30 th40 [-82-80]*DR; [-32-40]*DR; [74 10]*DR; [-98-85]*DR; th1lim(1); th1f th2lim(1); th2f th3lim(1); th3f th4lim(1); th4f torso pitch joint absolute angle limits thigh pitch joint relative angle limits lower leg pitch joint relative angle limits foot th1lim(2); th2lim(2); th3lim(2); th4lim(2); dth1 (th1f-th10)/20; dth2 (th2f-th20)/20; dth3 (th3f-th30)/20; dth4 (th4f-th40)/20; th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; fc1(i) cos(th1(i)); fs1(i) sin(th1(i)); fc12(i) cos(th1(i)+th2(i)); fs12(i) sin(th1(i)+th2(i)); fc123(i) cos(th1(i)+th2(i)+th3(i)); fs123(i) sin(th1(i)+th2(i)+th3(i)); fc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); fs1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123;

92 92 ftheta1(i)th1(i)+2*pi; ftheta2(i)th2(i)+2*pi; ftheta3(i)th3(i); ftheta4(i)th4(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith10 ith20 ith30 ith40 [-78-68]*DR; torso pitch joint absolute angle limits [-16-4]*DR; thigh pitch joint relative angle limits [16 18]*DR; lower leg pitch joint relative angle limits [ ]*DR; foot ith1lim(1); ith1f ith1lim(2); ith2lim(1); ith2f ith2lim(2); ith3lim(1); ith3f ith3lim(2); ith4lim(1); ith4f ith4lim(2); idth1 (ith1f-ith10)/20; idth2 (ith2f-ith20)/20; idth3 (ith3f-ith30)/20; idth4 (ith4f-ith40)/20; ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith4 [ith40:idth4:ith4f]; icc1(i) cos(ith1(i)); ics1(i) sin(ith1(i)); icc12(i) cos(ith1(i)+ith2(i)); ics12(i) sin(ith1(i)+ith2(i)); icc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ics123(i) sin(ith1(i)+ith2(i)+ith3(i)); icc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ics1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end c1 [ac1,bc1,cc1,dc1,ec1,fc1]; s1 [as1,bs1,cs1,ds1,es1,fs1]; c12 [ac12,bc12,cc12,dc12,ec12,fc12]; s12 [as12,bs12,cs12,ds12,es12,fs12]; c123 [ac123,bc123,cc123,dc123,ec123,fc123]; s123 [as123,bs123,cs123,ds123,es123,fs123]; c1234 [ac1234,bc1234,cc1234,dc1234,ec1234,fc1234]; s1234 [as1234,bs1234,cs1234,ds1234,es1234,fs1234]; ic1 [idc1,iec1,ifc1,iac1,ibc1,icc1]; is1 [ids1,ies1,ifs1,ias1,ibs1,ics1]; ic12 [idc12,iec12,ifc12,iac12,ibc12,icc12]; is12 [ids12,ies12,ifs12,ias12,ibs12,ics12]; ic123 [idc123,iec123,ifc123,iac123,ibc123,icc123]; is123 [ids123,ies123,ifs123,ias123,ibs123,ics123];

93 93 ic1234 [idc1234,iec1234,ifc1234,iac1234,ibc1234,icc1234]; is1234 [ids1234,ies1234,ifs1234,ias1234,ibs1234,ics1234]; c1 [ac1,bc1,cc1,dc1,ec1,fc1]; s1 [as1,bs1,cs1,ds1,es1,fs1]; c12 [ac12,bc12,cc12,dc12,ec12,fc12]; s12 [as12,bs12,cs12,ds12,es12,fs12]; c123 [ac123,bc123,cc123,dc123,ec123,fc123]; s123 [as123,bs123,cs123,ds123,es123,fs123]; c1234 [ac1234,bc1234,cc1234,dc1234,ec1234,fc1234]; s1234 [as1234,bs1234,cs1234,ds1234,es1234,fs1234]; theta1 [atheta1,btheta1,ctheta1,dtheta1,etheta1,ftheta1]; theta2 [atheta2,btheta2,ctheta2,dtheta2,etheta2,ftheta2]; theta3 [atheta3,btheta3,ctheta3,dtheta3,etheta3,ftheta3]; theta4 [atheta4,btheta4,ctheta4,dtheta4,etheta4,ftheta4]; t1 [t,t,t,t,t]; t3 [theta3,theta3,theta3,theta3,theta3]; disp(t3); Animate human arm disp(c1); for i 1:106 if i1 a 0; end if i > 1 a a ; end x1 [0+a L1*c1(i)+a]; y1 [0 L1*s1(i)]; x2 [L1*c1(i)+a L1*c1(i) + L2*c12(i)+a]; y2 [L1*s1(i) L1*s1(i) + L2*s12(i)]; x3 [L1*c1(i) + L2*c12(i)+a L1*c1(i) + L2*c12(i)+L3*c123(i)+a]; y3 [L1*s1(i) + L2*s12(i) L1*s1(i) + L2*s12(i)+L3*s123(i)]; x4 [L1*c1(i) + L2*c12(i)+L3*c123(i)+a L1*c1(i) + L2*c12(i)+L3*c123(i)+L4*c1234(i)+a]; y4 [L1*s1(i) + L2*s12(i)+L3*s123(i) L1*s1(i) + L2*s12(i)+L3*s123(i)+L4*s1234(i)]; x5 [0+a L1*ic1(i)+a]; y5 [0 L1*is1(i)]; x6 [L1*ic1(i)+a L1*ic1(i) + L2*ic12(i)+a]; y6 [L1*is1(i) L1*is1(i) + L2*is12(i)]; x7 [L1*ic1(i) + L2*ic12(i)+a L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+a]; y7 [L1*is1(i) + L2*is12(i) L1*is1(i) + L2*is12(i)+L3*is123(i)]; x8 [L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+a L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+L4*ic1234(i)+a]; y8 [L1*is1(i) + L2*is12(i)+L3*is123(i) L1*is1(i) + L2*is12(i)+L3*is123(i)+L4*is1234(i)];

94 94 x9 [L1*c1(i)+a L1*ic1(i)+a]; y9 [L1*s1(i) L1*is1(i)]; plot(x1,y1,'b',x2,y2,'b',x3,y3,'b',x4,y4,'b',x5,y5,'r',x6,y6,'r',x7,y7, 'r',x8,y8,'r',x9,y9,'g','linewidth',2); grid; axis('square'); axis([ ]); set(gca,'fontsize',18); xlabel('{\itx} ({\itm})'); ylabel('{\ity} ({\itm})'); pause(dt); plot(x1,y1,'-bo',x2,y2,'-bo',x3,y3,'-bo',x4,y4,'-bo',x5,y5,'r',x6,y6,'ro',x7,y7,'-ro',x8,y8,'-ro',x9,y9,'-g','linewidth',2); grid; axis('square'); axis([ ]); set(gca,'fontsize',18); xlabel('{\itx} ({\itm})'); ylabel('{\ity} ({\itm})'); pause(dt); end figure; Bicep Tension plots plot(t,theta1/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\ittorso Angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta2/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\ithip Angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta3/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\itknee Angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta4/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\itankle Angle} ({\itdeg})'); figure; Bicep Tension plots plot(t1,t3/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]);

95 darwinsimulation.m Forward pose kinematics trajectory for planar 3R adult male human arm shoulder, elbow, wrist BME 5670, Dr. Bob clc; clear; Constants DR pi/180; L [ ]; L1 L(1); L2 L(2); L3 L(3); L4L(4);L5 L(5); male arm lengths th1lim [-80-81]*DR; torso pitch joint absolute angle limits th2lim [-40-41]*DR; thigh pitch joint relative angle limits th3lim [10 30]*DR; lower leg pitch joint relative angle limits th4lim [-95-90]*DR; foot th10 th1lim(1); th1f th1lim(2); th20 th2lim(1); th2f th2lim(2); th30 th3lim(1); th3f th3lim(2); th40 th4lim(1); th4f th4lim(2); N 132; dth1 (th1f-th10)/(n-1); dth2 (th2f-th20)/(n-1); dth3 (th3f-th30)/(n-1); dth4 (th4f-th40)/(n-1); th1 [th10:dth1:th1f]; th2 [th20:dth2:th2f]; th3 [th30:dth3:th3f]; th4 [th40:dth4:th4f]; t0 0; tf 1; Artificial time vector dt (tf-t0)/(n-1); t [t0:dt:tf]; Loop for FPK motion simulation for i1:11 th1lim [ ]*DR; torso pitch joint absolute angle limits th2lim [ ]*DR; thigh pitch joint relative angle limits th3lim [ ]*DR; lower leg pitch joint relative angle limits th4lim [ ]*DR; foot th5lim [ ]*DR; th10 th1lim(1); th1f th1lim(2); th20 th2lim(1); th2f th2lim(2); th30 th3lim(1); th3f th3lim(2); th40 th4lim(1); th4f th4lim(2); th50 th5lim(1); th5f th5lim(2);

96 96 dth1 dth2 dth3 dth4 dth5 th1 th2 th3 th4 th5 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; (th5f-th50)/10; [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; bc1(i) cos(th1(i)); bs1(i) sin(th1(i)); bc12(i) cos(th1(i)+th2(i)); bs12(i) sin(th1(i)+th2(i)); bc123(i) cos(th1(i)+th2(i)+th3(i)); bs123(i) sin(th1(i)+th2(i)+th3(i)); bc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); bs1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); bc12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bs12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; btheta1(i)th1(i)+2*pi; btheta2(i)th2(i)+2*pi; btheta3(i)th3(i); btheta4(i)th4(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith5lim [ ]*DR; [ ]*DR; [ ]*DR; [ ]*DR; [ ]*DR; ith10 ith20 ith30 ith40 ith50 ith1lim(1); ith2lim(1); ith3lim(1); ith4lim(1); ith5lim(1); idth1 idth2 idth3 idth4 idth5 (ith1f-ith10)/10; (ith2f-ith20)/10; (ith3f-ith30)/10; (ith4f-ith40)/10; (ith5f-ith50)/10; ith1f ith2f ith3f ith4f ith5f torso pitch joint absolute angle limits thigh pitch joint relative angle limits lower leg pitch joint relative angle limits foot ith1 [ith10:idth1:ith1f]; ith2 [ith20:idth2:ith2f]; ith3 [ith30:idth3:ith3f]; ith1lim(2); ith2lim(2); ith3lim(2); ith4lim(2); ith5lim(2);

97 97 ith4 [ith40:idth4:ith4f]; ith5 [ith50:idth5:ith5f]; iec1(i) cos(ith1(i)); ies1(i) sin(ith1(i)); iec12(i) cos(ith1(i)+ith2(i)); ies12(i) sin(ith1(i)+ith2(i)); iec123(i) cos(ith1(i)+ith2(i)+ith3(i)); ies123(i) sin(ith1(i)+ith2(i)+ith3(i)); iec1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ies1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); iec12345(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); ies12345(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i1:11 th1lim th2lim th3lim th4lim th5lim th10 th20 th30 th40 th50 th1lim(1); th2lim(1); th3lim(1); th4lim(1); th5lim(1); dth1 dth2 dth3 dth4 dth5 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; (th5f-th50)/10; th1 th2 th3 th4 th5 [ ]*DR; torso pitch joint absolute angle limits [-26-34]*DR; thigh pitch joint relative angle limits [38 68]*DR; lower leg pitch joint relative angle limits [-10-36]*DR; foot [ ]*DR; th1f th2f th3f th4f th5f th1lim(2); th2lim(2); th3lim(2); th4lim(2); th5lim(2); [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; cc1(i) cos(th1(i)); cs1(i) sin(th1(i)); cc12(i) cos(th1(i)+th2(i)); cs12(i) sin(th1(i)+th2(i)); cc123(i) cos(th1(i)+th2(i)+th3(i)); cs123(i) sin(th1(i)+th2(i)+th3(i)); cc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); cs1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i));

98 98 cc12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); cs12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; atheta1(i)th1(i)+2*pi; atheta2(i)th2(i)+2*pi; atheta3(i)th3(i); atheta4(i)th4(i)+2*pi; atheta5(i)th5(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith5lim ith10 ith20 ith30 ith40 ith50 ith1lim(1); ith2lim(1); ith3lim(1); ith4lim(1); ith5lim(1); idth1 idth2 idth3 idth4 idth5 (ith1f-ith10)/10; (ith2f-ith20)/10; (ith3f-ith30)/10; (ith4f-ith40)/10; (ith5f-ith50)/10; ith1 ith2 ith3 ith4 ith5 [ ]*DR; [ ]*DR; [ ]*DR; [ ]*DR; [ ]*DR; ith1f ith2f ith3f ith4f ith5f torso pitch joint absolute angle limits thigh pitch joint relative angle limits lower leg pitch joint relative angle limits foot ith1lim(2); ith2lim(2); ith3lim(2); ith4lim(2); ith5lim(2); [ith10:idth1:ith1f]; [ith20:idth2:ith2f]; [ith30:idth3:ith3f]; [ith40:idth4:ith4f]; [ith50:idth5:ith5f]; ifc1(i) cos(ith1(i)); ifs1(i) sin(ith1(i)); ifc12(i) cos(ith1(i)+ith2(i)); ifs12(i) sin(ith1(i)+ith2(i)); ifc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ifs123(i) sin(ith1(i)+ith2(i)+ith3(i)); ifc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ifs1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ifc12345(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); ifs12345(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123;

99 99 end for i 1: 11 dc1(i) cc1(11); ds1(i) cs1(11); dc12(i) cc12(11); ds12(i) cs12(11); dc123(i) cc123(11); ds123(i) cs123(11); dc1234(i) cc1234(11); ds1234(i) cs1234(11); dc12345(i) cc12345(11); ds12345(i) cs12345(11); btheta1(i)-90*dr+2*pi; btheta2(i)-34*dr+2*pi; btheta3(i)68*dr; btheta4(i)-36*dr+2*pi; btheta5(i)-90*dr+2*pi; iac1(i) ifc1(11); ias1(i) ifs1(11); iac12(i) ifc12(11); ias12(i) ifs12(11); iac123(i) ifc123(11); ias123(i) ifs123(11); iac1234(i) ifc1234(11); ias1234(i) ifs1234(11); iac12345(i) ifc12345(11); ias12345(i) ifs12345(11); end for i 1: 11 th1lim th2lim th3lim th4lim th5lim [ ]*DR; torso pitch joint absolute angle limits [-34-43]*DR; thigh pitch joint relative angle limits [68 62]*DR; lower leg pitch joint relative angle limits [-36-20]*DR; foot [ ]*DR; th10 th20 th30 th40 th50 th1lim(1); th2lim(1); th3lim(1); th4lim(1); th5lim(1); dth1 dth2 dth3 dth4 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; th1f th2f th3f th4f th5f th1lim(2); th2lim(2); th3lim(2); th4lim(2); th5lim(2);

100 100 dth5 (th5f-th50)/10; th1 th2 th3 th4 th5 [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; ec1(i) cos(th1(i)); es1(i) sin(th1(i)); ec12(i) cos(th1(i)+th2(i)); es12(i) sin(th1(i)+th2(i)); ec123(i) cos(th1(i)+th2(i)+th3(i)); es123(i) sin(th1(i)+th2(i)+th3(i)); ec1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); es1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); ec12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); es12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; ctheta1(i)th1(i)+2*pi; ctheta2(i)th2(i)+2*pi; ctheta3(i)th3(i); ctheta4(i)th4(i)+2*pi; ctheta5(i)th5(i)+2*pi; ibc1(i) iac1(11); ibs1(i) ias1(11); ibc12(i) iac12(11); ibs12(i) ias12(11); ibc123(i) iac123(11); ibs123(i) ias123(11); ibc1234(i) iac1234(11); ibs1234(i) ias1234(11); ibc12345(i) iac12345(11); ibs12345(i) ias12345(11); end for i 1: 11 th1lim th2lim th3lim th4lim th5lim [ ]*DR; torso pitch joint absolute angle limits [-43-26]*DR; thigh pitch joint relative angle limits [62 38]*DR; lower leg pitch joint relative angle limits [-20-10]*DR; foot [ ]*DR;

101 101 th10 th20 th30 th40 th50 th1lim(1); th2lim(1); th3lim(1); th4lim(1); th5lim(1); dth1 dth2 dth3 dth4 dth5 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; (th5f-th50)/10; th1 th2 th3 th4 th5 th1f th2f th3f th4f th5f th1lim(2); th2lim(2); th3lim(2); th4lim(2); th5lim(2); [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; fc1(i) cos(th1(i)); fs1(i) sin(th1(i)); fc12(i) cos(th1(i)+th2(i)); fs12(i) sin(th1(i)+th2(i)); fc123(i) cos(th1(i)+th2(i)+th3(i)); fs123(i) sin(th1(i)+th2(i)+th3(i)); fc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); fs1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); fc12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); fs12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; dtheta1(i)th1(i)+2*pi; dtheta2(i)th2(i)+2*pi; dtheta3(i)th3(i); dtheta4(i)th4(i)+2*pi; dtheta5(i)th5(i)+2*pi; icc1(i) iac1(11); ics1(i) ias1(11); icc12(i) iac12(11); ics12(i) ias12(11); icc123(i) iac123(11); ics123(i) ias123(11); icc1234(i) iac1234(11); ics1234(i) ias1234(11); icc12345(i) iac12345(11); ics12345(i) ias12345(11);

102 102 end for i1:11 ac1(i) fc1(11); as1(i) fs1(11); ac12(i) fc12(11); as12(i) fs12(11); ac123(i) fc123(11); as123(i) fs123(11); ac1234(i) fc1234(11); as1234(i) fs1234(11); ac12345(i) fc12345(11); as12345(i) fs12345(11); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; etheta1(i)-90*dr+2*pi; etheta2(i)-26*dr+2*pi; etheta3(i)38*dr; etheta4(i)-10*dr+2*pi; etheta5(i)-90*dr+2*pi; ith1lim ith2lim ith3lim ith4lim ith5lim ith10 ith20 ith30 ith40 ith50 ith1lim(1); ith2lim(1); ith3lim(1); ith4lim(1); ith5lim(1); idth1 idth2 idth3 idth4 idth5 (ith1f-ith10)/10; (ith2f-ith20)/10; (ith3f-ith30)/10; (ith4f-ith40)/10; (ith5f-ith50)/10; ith1 ith2 ith3 ith4 ith5 [ ]*DR; torso pitch joint absolute angle limits [-26-40]*DR; thigh pitch joint relative angle limits [38 68]*DR; lower leg pitch joint relative angle limits [-10-32]*DR; foot [ ]*DR; ith1f ith2f ith3f ith4f ith5f [ith10:idth1:ith1f]; [ith20:idth2:ith2f]; [ith30:idth3:ith3f]; [ith40:idth4:ith4f]; [ith50:idth5:ith5f]; ith1lim(2); ith2lim(2); ith3lim(2); ith4lim(2); ith5lim(2);

103 103 idc1(i) cos(ith1(i)); ids1(i) sin(ith1(i)); idc12(i) cos(ith1(i)+ith2(i)); ids12(i) sin(ith1(i)+ith2(i)); idc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ids123(i) sin(ith1(i)+ith2(i)+ith3(i)); idc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ids1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); idc12345(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); ids12345(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i 1: 11 bc1(i) ac1(11); bs1(i) as1(11); bc12(i) ac12(11); bs12(i) as12(11); bc123(i) ac123(11); bs123(i) as123(11); bc1234(i) ac1234(11); bs1234(i) as1234(11); bc12345(i) ac12345(11); bs12345(i) as12345(11); ftheta1(i)-90*dr+2*pi; ftheta2(i)-26*dr+2*pi; ftheta3(i)38*dr; ftheta4(i)-10*dr+2*pi; ftheta5(i)-90*dr+2*pi; iec1(i) idc1(11); ies1(i) ids1(11); iec12(i) idc12(11); ies12(i) ids12(11); iec123(i) idc123(11); ies123(i) ids123(11); iec1234(i) idc1234(11); ies1234(i) ids1234(11); iec12345(i) idc12345(11); ies12345(i) ids12345(11); end for i1:11

104 104 gc1(i) bc1(11); gs1(i) bs1(11); gc12(i) bc12(11); gs12(i) bs12(11); gc123(i) bc123(11); gs123(i) bs123(11); gc1234(i) bc1234(11); gs1234(i) bs1234(11); gc12345(i) bc12345(11); gs12345(i) bs12345(11); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; gtheta1(i)-90*dr+2*pi; gtheta2(i)-26*dr+2*pi; gtheta3(i)38*dr; gtheta4(i)-10*dr+2*pi; gtheta5(i)-90*dr+2*pi; ith1lim ith2lim ith3lim ith4lim ith5lim ith10 ith20 ith30 ith40 ith50 ith1lim(1); ith2lim(1); ith3lim(1); ith4lim(1); ith5lim(1); idth1 idth2 idth3 idth4 idth5 (ith1f-ith10)/10; (ith2f-ith20)/10; (ith3f-ith30)/10; (ith4f-ith40)/10; (ith5f-ith50)/10; ith1 ith2 ith3 ith4 ith5 [ ]*DR; torso pitch joint absolute angle limits [-40-50]*DR; thigh pitch joint relative angle limits [68 58]*DR; lower leg pitch joint relative angle limits [-32-8]*DR; foot [ ]*DR; ith1f ith2f ith3f ith4f ith5f [ith10:idth1:ith1f]; [ith20:idth2:ith2f]; [ith30:idth3:ith3f]; [ith40:idth4:ith4f]; [ith50:idth5:ith5f]; igc1(i) cos(ith1(i)); igs1(i) sin(ith1(i)); ith1lim(2); ith2lim(2); ith3lim(2); ith4lim(2); ith5lim(2);

105 105 igc12(i) cos(ith1(i)+ith2(i)); igs12(i) sin(ith1(i)+ith2(i)); igc123(i) cos(ith1(i)+ith2(i)+ith3(i)); igs123(i) sin(ith1(i)+ith2(i)+ith3(i)); igc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); igs1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); igc12345(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); igs12345(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i1:11 hc1(i) gc1(11); hs1(i) gs1(11); hc12(i) gc12(11); hs12(i) gs12(11); hc123(i) gc123(11); hs123(i) gs123(11); hc1234(i) gc1234(11); hs1234(i) gs1234(11); hc12345(i) gc12345(11); hs12345(i) gs12345(11); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; htheta1(i)-90*dr+2*pi; htheta2(i)-26*dr+2*pi; htheta3(i)38*dr; htheta4(i)-10*dr+2*pi; htheta5(i)-90*dr+2*pi; ith1lim ith2lim ith3lim ith4lim ith5lim [ ]*DR; torso pitch joint absolute angle limits [-50-34]*DR; thigh pitch joint relative angle limits [58 40]*DR; lower leg pitch joint relative angle limits [-8-6]*DR; foot [ ]*DR; ith10 ith1lim(1); ith1f ith1lim(2); ith20 ith2lim(1); ith2f ith2lim(2); ith30 ith3lim(1); ith3f ith3lim(2);

106 106 ith40 ith4lim(1); ith4f ith4lim(2); ith50 ith5lim(1); ith5f ith5lim(2); idth1 idth2 idth3 idth4 idth5 ith1 ith2 ith3 ith4 ith5 (ith1f-ith10)/10; (ith2f-ith20)/10; (ith3f-ith30)/10; (ith4f-ith40)/10; (ith5f-ith50)/10; [ith10:idth1:ith1f]; [ith20:idth2:ith2f]; [ith30:idth3:ith3f]; [ith40:idth4:ith4f]; [ith50:idth5:ith5f]; ihc1(i) cos(ith1(i)); ihs1(i) sin(ith1(i)); ihc12(i) cos(ith1(i)+ith2(i)); ihs12(i) sin(ith1(i)+ith2(i)); ihc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ihs123(i) sin(ith1(i)+ith2(i)+ith3(i)); ihc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ihs1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ihc12345(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); ihs12345(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i 1:11 move the blue line and keep red constant th1lim th2lim th3lim th4lim th5lim [ ]*DR; torso pitch joint absolute angle limits [-26-44]*DR; thigh pitch joint relative angle limits [38 70]*DR; lower leg pitch joint relative angle limits [-10-24]*DR; foot [ ]*DR; th10 th20 th30 th40 th50 th1lim(1); th2lim(1); th3lim(1); th4lim(1); th5lim(1); dth1 dth2 dth3 dth4 dth5 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; (th5f-th50)/10; th1f th2f th3f th4f th5f th1lim(2); th2lim(2); th3lim(2); th4lim(2); th5lim(2);

107 107 th1 th2 th3 th4 th5 [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; jc1(i) cos(th1(i)); js1(i) sin(th1(i)); jc12(i) cos(th1(i)+th2(i)); js12(i) sin(th1(i)+th2(i)); jc123(i) cos(th1(i)+th2(i)+th3(i)); js123(i) sin(th1(i)+th2(i)+th3(i)); jc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); js1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); jc12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); js12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; jtheta1(i)th1(i)+2*pi; jtheta2(i)th2(i)+2*pi; jtheta3(i)th3(i); jtheta4(i)th4(i)+2*pi; jtheta5(i)th5(i)+2*pi; ith1lim ith2lim ith3lim ith4lim ith5lim ith10 ith20 ith30 ith40 ith50 ith1lim(1); ith2lim(1); ith3lim(1); ith4lim(1); ith5lim(1); idth1 idth2 idth3 idth4 idth5 (ith1f-ith10)/10; (ith2f-ith20)/10; (ith3f-ith30)/10; (ith4f-ith40)/10; (ith5f-ith50)/10; ith1 ith2 ith3 ith4 ith5 [ ]*DR; torso pitch joint absolute angle limits [ ]*DR; thigh pitch joint relative angle limits [ ]*DR; lower leg pitch joint relative angle limits [-6-6.1]*DR; foot [ ]*DR; ith1f ith2f ith3f ith4f ith5f [ith10:idth1:ith1f]; [ith20:idth2:ith2f]; [ith30:idth3:ith3f]; [ith40:idth4:ith4f]; [ith50:idth5:ith5f]; ith1lim(2); ith2lim(2); ith3lim(2); ith4lim(2); ith5lim(2);

108 108 ijc1(i) cos(ith1(i)); ijs1(i) sin(ith1(i)); ijc12(i) cos(ith1(i)+ith2(i)); ijs12(i) sin(ith1(i)+ith2(i)); ijc123(i) cos(ith1(i)+ith2(i)+ith3(i)); ijs123(i) sin(ith1(i)+ith2(i)+ith3(i)); ijc1234(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ijs1234(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)); ijc12345(i) cos(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); ijs12345(i) sin(ith1(i)+ith2(i)+ith3(i)+ith4(i)+ith5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; end for i 1:11 kc1(i) jc1(11); ks1(i) js1(11); kc12(i) jc12(11); ks12(i) js12(11); kc123(i) jc123(11); ks123(i) js123(11); kc1234(i) jc1234(11); ks1234(i) js1234(11); kc12345(i) jc12345(11); ks12345(i) js12345(11); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; ktheta1(i)-90*dr+2*pi; ktheta2(i)-44*dr+2*pi; ktheta3(i)70*dr; ktheta4(i)-24*dr+2*pi; ktheta5(i)-90*dr+2*pi; ikc1(i) ijc1(11); iks1(i) ijs1(11); ikc12(i) ijc12(11); iks12(i) ijs12(11);

109 109 ikc123(i) ijc123(11); iks123(i) ijs123(11); ikc1234(i) ijc1234(11); iks1234(i) ijs1234(11); ikc12345(i) ijc12345(11); iks12345(i) ijs12345(11); end for i 1:11 move the blue line and keep red constant th1lim th2lim th3lim th4lim th5lim th10 th20 th30 th40 th50 th1lim(1); th2lim(1); th3lim(1); th4lim(1); th5lim(1); dth1 dth2 dth3 dth4 dth5 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; (th5f-th50)/10; th1 th2 th3 th4 th5 [ ]*DR; torso pitch joint absolute angle limits [-44-48]*DR; thigh pitch joint relative angle limits [70 60]*DR; lower leg pitch joint relative angle limits [-24-14]*DR; foot [ ]*DR; th1f th2f th3f th4f th5f th1lim(2); th2lim(2); th3lim(2); th4lim(2); th5lim(2); [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; lc1(i) cos(th1(i)); ls1(i) sin(th1(i)); lc12(i) cos(th1(i)+th2(i)); ls12(i) sin(th1(i)+th2(i)); lc123(i) cos(th1(i)+th2(i)+th3(i)); ls123(i) sin(th1(i)+th2(i)+th3(i)); lc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); ls1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); lc12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); ls12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; ltheta1(i)th1(i)+2*pi; ltheta2(i)th2(i)+2*pi;

110 110 ltheta3(i)th3(i); ltheta4(i)th4(i)+2*pi; ltheta5(i)th5(i)+2*pi; ilc1(i) ikc1(11); ils1(i) iks1(11); ilc12(i) ikc12(11); ils12(i) iks12(11); ilc123(i) ikc123(11); ils123(i) iks123(11); ilc1234(i) ikc1234(11); ils1234(i) iks1234(11); ilc12345(i) ikc12345(11); ils12345(i) iks12345(11); end for i 1:11 move the blue line and keep red constant th1lim th2lim th3lim th4lim th5lim th10 th20 th30 th40 th50 th1lim(1); th2lim(1); th3lim(1); th4lim(1); th5lim(1); dth1 dth2 dth3 dth4 dth5 (th1f-th10)/10; (th2f-th20)/10; (th3f-th30)/10; (th4f-th40)/10; (th5f-th50)/10; th1 th2 th3 th4 th5 [ ]*DR; torso pitch joint absolute angle limits [-48-39]*DR; thigh pitch joint relative angle limits [60 50]*DR; lower leg pitch joint relative angle limits [-14-10]*DR; foot [ ]*DR; th1f th2f th3f th4f th5f th1lim(2); th2lim(2); th3lim(2); th4lim(2); th5lim(2); [th10:dth1:th1f]; [th20:dth2:th2f]; [th30:dth3:th3f]; [th40:dth4:th4f]; [th50:dth5:th5f]; mc1(i) cos(th1(i)); ms1(i) sin(th1(i)); mc12(i) cos(th1(i)+th2(i)); ms12(i) sin(th1(i)+th2(i));

111 111 mc123(i) cos(th1(i)+th2(i)+th3(i)); ms123(i) sin(th1(i)+th2(i)+th3(i)); mc1234(i) cos(th1(i)+th2(i)+th3(i)+th4(i)); ms1234(i) sin(th1(i)+th2(i)+th3(i)+th4(i)); mc12345(i) cos(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); ms12345(i) sin(th1(i)+th2(i)+th3(i)+th4(i)+th5(i)); bxh(i) L1*c1 + L2*c12 + L3*c123; FPK solution byh(i) L1*s1 + L2*s12 + L3*s123; mtheta1(i)th1(i)+2*pi; mtheta2(i)th2(i)+2*pi; mtheta3(i)th3(i); mtheta4(i)th4(i)+2*pi; mtheta5(i)th5(i)+2*pi; imc1(i) ilc1(11); ims1(i) ils1(11); imc12(i) ilc12(11); ims12(i) ils12(11); imc123(i) ilc123(11); ims123(i) ils123(11); imc1234(i) ilc1234(11); ims1234(i) ils1234(11); imc12345(i) ilc12345(11); ims12345(i) ils12345(11); end c1 [cc1,dc1,ec1,fc1,ac1,bc1,gc1,hc1,jc1,kc1,lc1,mc1]; s1 [cs1,ds1,es1,fs1,as1,bs1,gs1,hs1,js1,ks1,ls1,ms1]; c12 [cc12,dc12,ec12,fc12,ac12,bc12,gc12,hc12,jc12,kc12,lc12,mc12]; s12 [cs12,ds12,es12,fs12,as12,bs12,gs12,hs12,js12,ks12,ls12,ms12]; c123 [cc123,dc123,ec123,fc123,ac123,bc123,gc123,hc123,jc123,kc123,lc123,mc12 3]; s123 [cs123,ds123,es123,fs123,as123,bs123,gs123,hs123,js123,ks123,ls123,ms12 3]; c1234 [cc1234,dc1234,ec1234,fc1234,ac1234,bc1234,gc1234,hc1234,jc1234,kc1234, lc1234,mc1234]; s1234 [cs1234,ds1234,es1234,fs1234,as1234,bs1234,gs1234,hs1234,js1234,ks1234, ls1234,ms1234];

112 112 c12345 [cc12345,dc12345,ec12345,fc12345,ac12345,bc12345,gc12345,hc12345,jc1234 5,kc12345,lc12345,mc12345]; s12345 [cs12345,ds12345,es12345,fs12345,as12345,bs12345,gs12345,hs12345,js1234 5,ks12345,ls12345,ms12345]; ic1 [ifc1,iac1,ibc1,icc1,idc1,iec1,igc1,ihc1,ijc1,ikc1,ilc1,imc1]; is1 [ifs1,ias1,ibs1,ics1,ids1,ies1,igs1,ihs1,ijs1,iks1,ils1,ims1]; ic12 [ifc12,iac12,ibc12,icc12,idc12,iec12,igc12,ihc12,ijc12,ikc12,ilc12,imc1 2]; is12 [ifs12,ias12,ibs12,ics12,ids12,ies12,igs12,ihs12,ijs12,iks12,ils12,ims1 2]; ic123 [ifc123,iac123,ibc123,icc123,idc123,iec123,igc123,ihc123,ijc123,ikc123, ilc123,imc123]; is123 [ifs123,ias123,ibs123,ics123,ids123,ies123,igs123,ihs123,ijs123,iks123, ils123,ims123]; ic1234 [ifc1234,iac1234,ibc1234,icc1234,idc1234,iec1234,igc1234,ihc1234,ijc123 4,ikc1234,ilc1234,imc1234]; is1234 [ifs1234,ias1234,ibs1234,ics1234,ids1234,ies1234,igs1234,ihs1234,ijs123 4,iks1234,ils1234,ims1234]; ic12345 [ifc12345,iac12345,ibc12345,icc12345,idc12345,iec12345,igc12345,ihc1234 5,ijc12345,ikc12345,ilc12345,imc12345]; is12345 [ifs12345,ias12345,ibs12345,ics12345,ids12345,ies12345,igs12345,ihs1234 5,ijs12345,iks12345,ils12345,ims12345]; theta1 [atheta1,btheta1,ctheta1,dtheta1,etheta1,ftheta1,gtheta1,htheta1,jtheta 1,ktheta1,ltheta1,mtheta1]; theta2 [atheta2,btheta2,ctheta2,dtheta2,etheta2,ftheta2,gtheta2,htheta2,jtheta 2,ktheta2,ltheta2,mtheta2]; theta3 [atheta3,btheta3,ctheta3,dtheta3,etheta3,ftheta3,gtheta3,htheta3,jtheta 3,ktheta3,ltheta3,mtheta3]; theta4 [atheta4,btheta4,ctheta4,dtheta4,etheta4,ftheta4,gtheta4,htheta4,jtheta 4,ktheta4,ltheta4,mtheta4]; theta5 [atheta5,btheta5,ctheta5,dtheta5,etheta5,ftheta5,gtheta5,htheta5,jtheta 5,ktheta5,ltheta5,mtheta5];

113 113 for i 1:132 if i >1 && i<11 a 0; b 0; c 0; end if i > 11 && i < 22 a a ; end if i > 55 && i<66 b b ; end if i>99 && i<110 a a ; end if i > 143 && i<154 b b ; end if i > 99 && i<110 c c ; end x1 [0+a+b+c L1*c1(i)+a+b+c]; y1 [0 L1*s1(i)]; x2 [L1*c1(i)+a+b+c L1*c1(i) + L2*c12(i)+a+c]; y2 [L1*s1(i) L1*s1(i) + L2*s12(i)]; x3 [L1*c1(i) + L2*c12(i)+a+c L1*c1(i) + L2*c12(i)+L3*c123(i)+a+c]; y3 [L1*s1(i) + L2*s12(i) L1*s1(i) + L2*s12(i)+L3*s123(i)]; x4 [L1*c1(i) + L2*c12(i)+L3*c123(i)+a+c L1*c1(i) + L2*c12(i)+L3*c123(i)+L4*c1234(i)+a+c]; y4 [L1*s1(i) + L2*s12(i)+L3*s123(i) L1*s1(i) + L2*s12(i)+L3*s123(i)+L4*s1234(i)]; x4a [L1*c1(i)+L2*c12(i)+L3*c123(i)+L4*c1234(i)+a+c L1*c1(i)+L2*c12(i)+L3*c123(i)+L4*c1234(i)+L5*c12345(i)+a+c]; y4a [L1*s1(i)+L2*s12(i)+L3*s123(i)+L4*s1234(i) L1*s1(i)+L2*s12(i)+L3*s123(i)+L4*s1234(i)+L5*s12345(i)]; x5 [0+a+b+c L1*ic1(i)+a+b+c]; y5 [0 L1*is1(i)]; x6 [L1*ic1(i)+a+b+c L1*ic1(i) + L2*ic12(i)+b]; y6 [L1*is1(i) L1*is1(i) + L2*is12(i)]; x7 [L1*ic1(i) + L2*ic12(i)+b L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+b]; y7 [L1*is1(i) + L2*is12(i) L1*is1(i) + L2*is12(i)+L3*is123(i)]; x8 [L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+b L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+L4*ic1234(i)+b]; y8 [L1*is1(i) + L2*is12(i)+L3*is123(i) L1*is1(i) + L2*is12(i)+L3*is123(i)+L4*is1234(i)]; x8a [L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+L4*ic1234(i)+b L1*ic1(i) + L2*ic12(i)+L3*ic123(i)+L4*ic1234(i)+L5*ic12345(i)+b]; y8a [L1*is1(i) + L2*is12(i)+L3*is123(i)+L4*is1234(i) L1*is1(i) + L2*is12(i)+L3*is123(i)+L4*is1234(i)+L5*is12345(i)];

114 114 x9 [L1*c1(i)+a+b+c L1*ic1(i)+a+b+c]; y9 [L1*s1(i) L1*is1(i)]; disp(x7); disp(x1); disp(y8a); plot(x1,y1,'b',x2,y2,'b',x3,y3,'b',x4,y4,'b',x4a,y4a,'b','linewidth',2) ; grid; axis('square'); axis([ ]); set(gca,'fontsize',18); xlabel('{\itx} ({\itm})'); ylabel('{\ity} ({\itm})'); pause(dt); plot(x1,y1,'-bo',x2,y2,'-bo',x3,y3,'-bo',x4,y4,'-bo',x4a,y4a,'bo',x5,y5,'r',x6,y6,'-ro',x7,y7,'-ro',x8,y8,'-ro',x8a,y8a,'ro',x9,y9,'-g','linewidth',2); grid; axis('square'); axis([ ]); set(gca,'fontsize',18); xlabel('{\itx} ({\itm})'); ylabel('{\ity} ({\itm})'); pause(dt); end figure; Bicep Tension plots plot(t,theta1/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\ittorso angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta2/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\ithip angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta3/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\itknee angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta4/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\itankle angle} ({\itdeg})'); figure; Bicep Tension plots plot(t,theta5/dr,'r'); grid; set(gca,'fontsize',18); axis([ ]); xlabel('{\itt} ({\itsec})'); ylabel('{\itfoot angle} ({\itdeg})');

115 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Thesis and Dissertation Services!

Programming Self-Recovery in the humanoid Leong Ti Xean 1 Yap Kian Tiong 2

Programming Self-Recovery in the humanoid Leong Ti Xean 1 Yap Kian Tiong 2 Programming Self-Recovery in the humanoid Leong Ti Xean 1 Yap Kian Tiong 2 1. INTRODUCTION 1.1 Background In October 2000, Honda announced the ASIMO humanoid robot, capable of interpreting the postures

More information

ZSTT Team Description Paper for Humanoid size League of Robocup 2017

ZSTT Team Description Paper for Humanoid size League of Robocup 2017 Adult- ZSTT Team Description Paper for Humanoid size League of Robocup 2017 Jaesik Jeong, Youngsup Oh and Jeehyun Yang ZSTT E-mail: soulmatree@gmail.com Web: www.soulmatree.com Abstract. This paper describes

More information

Emergent walking stop using 3-D ZMP modification criteria map for humanoid robot

Emergent walking stop using 3-D ZMP modification criteria map for humanoid robot 2007 IEEE International Conference on Robotics and Automation Roma, Italy, 10-14 April 2007 ThC9.3 Emergent walking stop using 3-D ZMP modification criteria map for humanoid robot Tomohito Takubo, Takeshi

More information

ZMP Trajectory Generation for Reduced Trunk Motions of Biped Robots

ZMP Trajectory Generation for Reduced Trunk Motions of Biped Robots ZMP Trajectory Generation for Reduced Trunk Motions of Biped Robots Jong H. Park School of Mechanical Engineering Hanyang University Seoul, 33-79, Korea email:jong.park@ieee.org Yong K. Rhee School of

More information

Mobile Robots (Legged) (Take class notes)

Mobile Robots (Legged) (Take class notes) Mobile Robots (Legged) (Take class notes) Legged mobile robots Mobile robots are robots which can move There are two types of mobile robots - Legged two, four, six and eight legs - Wheeled one, two, three

More information

Body Stabilization of PDW toward Humanoid Walking

Body Stabilization of PDW toward Humanoid Walking Body Stabilization of PDW toward Humanoid Walking Masaki Haruna, Masaki Ogino, Koh Hosoda, Minoru Asada Dept. of Adaptive Machine Systems, Osaka University, Suita, Osaka, 565-0871, Japan ABSTRACT Passive

More information

Normal Gait and Dynamic Function purpose of the foot in ambulation. Normal Gait and Dynamic Function purpose of the foot in ambulation

Normal Gait and Dynamic Function purpose of the foot in ambulation. Normal Gait and Dynamic Function purpose of the foot in ambulation Normal Gait and Dynamic Function purpose of the foot in ambulation Edward P. Mulligan, PT, DPT, OCS, SCS, ATC Assistant Professor; Residency Chair UT Southwestern School of Health Professions Department

More information

Humanoid Robots and biped locomotion. Contact: Egidio Falotico

Humanoid Robots and biped locomotion. Contact: Egidio Falotico Humanoid Robots and biped locomotion Contact: Egidio Falotico e.falotico@sssup.it Outline What is a Humanoid? Why Develop Humanoids? Challenges in Humanoid robotics Active vs Passive Locomotion Active

More information

Kungl Tekniska Högskolan

Kungl Tekniska Högskolan Centre for Autonomous Systems Kungl Tekniska Högskolan hic@kth.se March 22, 2006 Outline Wheel The overall system layout : those found in nature found in nature Difficult to imitate technically Technical

More information

Centre for Autonomous Systems

Centre for Autonomous Systems Centre for Autonomous Systems Kungl Tekniska Högskolan hic@kth.se March 22, 2006 Outline Wheel The overall system layout : those found in nature found in nature Difficult to imitate technically Technical

More information

Motion Control of a Bipedal Walking Robot

Motion Control of a Bipedal Walking Robot Motion Control of a Bipedal Walking Robot Lai Wei Ying, Tang Howe Hing, Mohamed bin Hussein Faculty of Mechanical Engineering Universiti Teknologi Malaysia, 81310 UTM Skudai, Johor, Malaysia. Wylai2@live.my

More information

PERCEPTIVE ROBOT MOVING IN 3D WORLD. D.E- Okhotsimsky, A.K. Platonov USSR

PERCEPTIVE ROBOT MOVING IN 3D WORLD. D.E- Okhotsimsky, A.K. Platonov USSR PERCEPTIVE ROBOT MOVING IN 3D WORLD D.E- Okhotsimsky, A.K. Platonov USSR Abstract. This paper reflects the state of development of multilevel control algorithms for a six-legged mobile robot. The robot

More information

Robot motion by simultaneously wheel and leg propulsion

Robot motion by simultaneously wheel and leg propulsion Robot motion by simultaneously wheel and leg propulsion Aarne Halme, Ilkka Leppänen, Miso Montonen, Sami Ylönen Automation Technology Laboratory Helsinki University of Technology PL 5400, 02015 HUT, Finland

More information

Generation of Robot Motion Based on Measurement of Human Movement. Susumu Sakano 1, Satoru Shoji 1

Generation of Robot Motion Based on Measurement of Human Movement. Susumu Sakano 1, Satoru Shoji 1 Generation of Robot Motion Based on Measurement of Human Movement Susumu Sakano 1, Satoru Shoji 1 1College of Engineering, Nihon University 1 Nakagawara Tokusada Tamura-machi Koriyama 963-8642 Japan Tel;

More information

Simulation of the Hybtor Robot

Simulation of the Hybtor Robot Simulation of the Hybtor Robot Pekka Aarnio, Kari Koskinen and Sami Salmi Information and Computer Systems in Automation Helsinki University of Technology ABSTRACT A dynamic rigid body simulation model

More information

The Incremental Evolution of Gaits for Hexapod Robots

The Incremental Evolution of Gaits for Hexapod Robots The Incremental Evolution of Gaits for Hexapod Robots Abstract Gait control programs for hexapod robots are learned by incremental evolution. The first increment is used to learn the activations required

More information

Autonomous blimp control with reinforcement learning

Autonomous blimp control with reinforcement learning University of Wollongong Research Online University of Wollongong Thesis Collection 1954-2016 University of Wollongong Thesis Collections 2009 Autonomous blimp control with reinforcement learning Yiwei

More information

DEVELOPMENT OF A FULL-SIZED BIPEDAL HUMANOID ROBOT UTILIZING SPRING ASSISTED PARALLEL FOUR-BAR LINKAGES WITH SYNCHRONIZED ACTUATION

DEVELOPMENT OF A FULL-SIZED BIPEDAL HUMANOID ROBOT UTILIZING SPRING ASSISTED PARALLEL FOUR-BAR LINKAGES WITH SYNCHRONIZED ACTUATION Proceedings of the ASME 2011 International Design Engineering Technical Conferences & Computers and Information in Engineering Conference IDETC/CIE 2011 August 28-31, 2011, Washington, DC, USA DETC2011-4

More information

A Walking Pattern Generation Method for Humanoid robots using Least square method and Quartic polynomial

A Walking Pattern Generation Method for Humanoid robots using Least square method and Quartic polynomial 7 A Walking Pattern Generation Method for Humanoid robots using Least square method and Quartic polynomial Seokmin Hong *,,Yonghwan Oh Young-Hwan Chang and Bum-Jae You * University of Science and Technology(UST),

More information

Toward a Human-like Biped Robot with Compliant Legs

Toward a Human-like Biped Robot with Compliant Legs Book Title Book Editors IOS Press, 2003 1 Toward a Human-like Biped Robot with Compliant Legs Fumiya Iida a,b,1, Yohei Minekawa a Juergen Rummel a and Andre Seyfarth a a Locomotion Laboratory, University

More information

YAN GU. Assistant Professor, University of Massachusetts Lowell. Frederick N. Andrews Fellowship, Graduate School, Purdue University ( )

YAN GU. Assistant Professor, University of Massachusetts Lowell. Frederick N. Andrews Fellowship, Graduate School, Purdue University ( ) YAN GU Assistant Professor, University of Massachusetts Lowell CONTACT INFORMATION 31 University Avenue Cumnock 4E Lowell, MA 01854 yan_gu@uml.edu 765-421-5092 http://www.locomotionandcontrolslab.com RESEARCH

More information

LOCOMOTION CONTROL CYCLES ADAPTED FOR DISABILITIES IN HEXAPOD ROBOTS

LOCOMOTION CONTROL CYCLES ADAPTED FOR DISABILITIES IN HEXAPOD ROBOTS LOCOMOTION CONTROL CYCLES ADAPTED FOR DISABILITIES IN HEXAPOD ROBOTS GARY B. PARKER and INGO CYLIAX Department of Computer Science, Indiana University, Bloomington, IN 47405 gaparker@cs.indiana.edu, cyliax@cs.indiana.edu

More information

Gait Pattern Generation and Stabilization for Humanoid Robot Based on Coupled Oscillators

Gait Pattern Generation and Stabilization for Humanoid Robot Based on Coupled Oscillators 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems September 25-30, 2011. San Francisco, CA, USA Gait Pattern Generation and Stabilization for Humanoid Robot Based on Coupled Oscillators

More information

Journal of Chemical and Pharmaceutical Research, 2016, 8(6): Research Article. Walking Robot Stability Based on Inverted Pendulum Model

Journal of Chemical and Pharmaceutical Research, 2016, 8(6): Research Article. Walking Robot Stability Based on Inverted Pendulum Model Available online www.jocpr.com Journal of Chemical and Pharmaceutical Research, 2016, 8(6):463-467 Research Article ISSN : 0975-7384 CODEN(USA) : JCPRC5 Walking Robot Stability Based on Inverted Pendulum

More information

EVOLVING HEXAPOD GAITS USING A CYCLIC GENETIC ALGORITHM

EVOLVING HEXAPOD GAITS USING A CYCLIC GENETIC ALGORITHM Evolving Hexapod Gaits Using a Cyclic Genetic Algorithm Page 1 of 7 EVOLVING HEXAPOD GAITS USING A CYCLIC GENETIC ALGORITHM GARY B. PARKER, DAVID W. BRAUN, AND INGO CYLIAX Department of Computer Science

More information

Gait. Kinesiology RHS 341 Lecture 12 Dr. Einas Al-Eisa

Gait. Kinesiology RHS 341 Lecture 12 Dr. Einas Al-Eisa Gait Kinesiology RHS 341 Lecture 12 Dr. Einas Al-Eisa Definitions Locomotion = the act of moving from one place to the other Gait = the manner of walking Definitions Walking = a smooth, highly coordinated,

More information

Biomechanics and Models of Locomotion

Biomechanics and Models of Locomotion Physics-Based Models for People Tracking: Biomechanics and Models of Locomotion Marcus Brubaker 1 Leonid Sigal 1,2 David J Fleet 1 1 University of Toronto 2 Disney Research, Pittsburgh Biomechanics Biomechanics

More information

SHUFFLE TURN OF HUMANOID ROBOT SIMULATION BASED ON EMG MEASUREMENT

SHUFFLE TURN OF HUMANOID ROBOT SIMULATION BASED ON EMG MEASUREMENT SHUFFLE TURN OF HUMANOID ROBOT SIMULATION BASED ON EMG MEASUREMENT MASANAO KOEDA, TAKAYUKI SERIZAWA, AND YUTA MATSUI Osaka Electro-Communication University, Faculty of Information Science and Arts, Department

More information

OPTIMAL TRAJECTORY GENERATION OF COMPASS-GAIT BIPED BASED ON PASSIVE DYNAMIC WALKING

OPTIMAL TRAJECTORY GENERATION OF COMPASS-GAIT BIPED BASED ON PASSIVE DYNAMIC WALKING OPTIMAL TRAJECTORY GENERATION OF COMPASS-GAIT BIPED BASED ON PASSIVE DYNAMIC WALKING Minseung Kim Dept. of Computer Science Illinois Institute of Technology 3201 S. State St. Box 2082 Chicago IL 60616

More information

Spider Robot for Motion with Quasistatic. Force Constraints

Spider Robot for Motion with Quasistatic. Force Constraints Spider Robot for Motion with Quasistatic Force Constraints Shraga Shoval, Elon Rimon and Amir Shapira Technion - Israel Institute of Technology - Haifa, Israel 32000. Abstract In quasistatic motions the

More information

Gait Analysis of a Little Biped Robot. Received May 2015; accepted July 2015

Gait Analysis of a Little Biped Robot. Received May 2015; accepted July 2015 ICIC Express Letters Part B: Applications ICIC International c216 ISSN 2185-2766 Volume 7, Number 5, May 216 pp. 1 6 Gait Analysis of a Little Biped Robot Chi-Sheng Tsai 1, Chen-Huei Hsieh 1, Wenning QIU

More information

Keywords--Bio-Robots, Walking Robots, Locomotion and Stability Controlled Gait.

Keywords--Bio-Robots, Walking Robots, Locomotion and Stability Controlled Gait. Six Legged Locomotion on Uneven Terrain Kale Aparna S., Salunke Geeta D. kaleaparna5@gmail.com, geetasalunke@gmail.com Abstract -In this paper current state of many walking robots are compared and advantages

More information

Dynamically stepping over large obstacle utilizing PSO optimization in the B4LC system

Dynamically stepping over large obstacle utilizing PSO optimization in the B4LC system 1 Dynamically stepping over large obstacle utilizing PSO optimization in the B4LC system QI LIU, JIE ZHAO, KARSTEN BERNS Robotics Research Lab, University of Kaiserslautern, Kaiserslautern, 67655, Germany

More information

Faster and Smoother Walking of Humanoid HRP-2 with Passive Toe Joints *

Faster and Smoother Walking of Humanoid HRP-2 with Passive Toe Joints * Faster and Smoother Walking of Humanoid HRP-2 with Passive Toe Joints * Ramzi Sellaouti *1, Olivier Stasse *2, Shuuji Kajita *3, Kazuhito Yokoi *1 and Abderrahmane Kheddar *2 *1 JRL, AIST *2 JRL, CNRS

More information

Sample Solution for Problem 1.a

Sample Solution for Problem 1.a Sample Solution for Problem 1.a 1 Inverted Pendulum Model (IPM) 1.1 Equations of Motion and Ground Reaction Forces Figure 1: Scheme of the Inverted Pendulum Model (IPM). The equations of motion of this

More information

From Passive to Active Dynamic 3D Bipedal Walking - An Evolutionary Approach -

From Passive to Active Dynamic 3D Bipedal Walking - An Evolutionary Approach - From Passive to Active Dynamic 3D Bipedal Walking - An Evolutionary Approach - Steffen Wischmann and Frank Pasemann Fraunhofer Institute for Autonomous Intelligent Systems (AiS) Schloss Birlinghoven, 53754

More information

ROSE-HULMAN INSTITUTE OF TECHNOLOGY Department of Mechanical Engineering. Mini-project 3 Tennis ball launcher

ROSE-HULMAN INSTITUTE OF TECHNOLOGY Department of Mechanical Engineering. Mini-project 3 Tennis ball launcher Mini-project 3 Tennis ball launcher Mini-Project 3 requires you to use MATLAB to model the trajectory of a tennis ball being shot from a tennis ball launcher to a player. The tennis ball trajectory model

More information

Using sensory feedback to improve locomotion performance of the salamander robot in different environments

Using sensory feedback to improve locomotion performance of the salamander robot in different environments Using sensory feedback to improve locomotion performance of the salamander robot in different environments João Lourenço Silvério Assistant: Jérémie Knüsel Structure of the presentation: I. Overview II.

More information

1001ICT Introduction To Programming Lecture Notes

1001ICT Introduction To Programming Lecture Notes 1001ICT Introduction To Programming Lecture Notes School of Information and Communication Technology Griffith University Semester 2, 2015 1 4 Lego Mindstorms 4.1 Robotics? Any programming course will set

More information

Rescue Rover. Robotics Unit Lesson 1. Overview

Rescue Rover. Robotics Unit Lesson 1. Overview Robotics Unit Lesson 1 Overview In this challenge students will be presented with a real world rescue scenario. The students will need to design and build a prototype of an autonomous vehicle to drive

More information

An investigation of kinematic and kinetic variables for the description of prosthetic gait using the ENOCH system

An investigation of kinematic and kinetic variables for the description of prosthetic gait using the ENOCH system An investigation of kinematic and kinetic variables for the description of prosthetic gait using the ENOCH system K. OBERG and H. LANSHAMMAR* Amputee Training and Research Unit, University Hospital, Fack,

More information

ZIN Technologies PHi Engineering Support. PHi-RPT CFD Analysis of Large Bubble Mixing. June 26, 2006

ZIN Technologies PHi Engineering Support. PHi-RPT CFD Analysis of Large Bubble Mixing. June 26, 2006 ZIN Technologies PHi Engineering Support PHi-RPT-0002 CFD Analysis of Large Bubble Mixing Proprietary ZIN Technologies, Inc. For nearly five decades, ZIN Technologies has provided integrated products and

More information

Design and control of Ranger: an energy-efficient, dynamic walking robot

Design and control of Ranger: an energy-efficient, dynamic walking robot 1 Design and control of Ranger: an energy-efficient, dynamic walking robot Pranav A. Bhounsule, Jason Cortell and Andy Ruina Biorobotics and Locomotion Laboratory, 306 Kimball Hall, Cornell University,

More information

CHAPTER IV FINITE ELEMENT ANALYSIS OF THE KNEE JOINT WITHOUT A MEDICAL IMPLANT

CHAPTER IV FINITE ELEMENT ANALYSIS OF THE KNEE JOINT WITHOUT A MEDICAL IMPLANT 39 CHAPTER IV FINITE ELEMENT ANALYSIS OF THE KNEE JOINT WITHOUT A MEDICAL IMPLANT 4.1 Modeling in Biomechanics The human body, apart of all its other functions is a mechanical mechanism and a structure,

More information

Spring Locomotion Concepts. Roland Siegwart, Margarita Chli, Martin Rufli. ASL Autonomous Systems Lab. Autonomous Mobile Robots

Spring Locomotion Concepts. Roland Siegwart, Margarita Chli, Martin Rufli. ASL Autonomous Systems Lab. Autonomous Mobile Robots Spring 2016 Locomotion Concepts Locomotion Concepts 01.03.2016 1 Locomotion Concepts: Principles Found in Nature ASL Autonomous Systems Lab On ground Locomotion Concepts 01.03.2016 2 Locomotion Concepts

More information

In memory of Dr. Kevin P. Granata, my graduate advisor, who was killed protecting others on the morning of April 16, 2007.

In memory of Dr. Kevin P. Granata, my graduate advisor, who was killed protecting others on the morning of April 16, 2007. Acknowledgement In memory of Dr. Kevin P. Granata, my graduate advisor, who was killed protecting others on the morning of April 16, 2007. There are many others without whom I could not have completed

More information

Computer Aided Drafting, Design and Manufacturing Volume 26, Number 2, June 2016, Page 53. The design of exoskeleton lower limbs rehabilitation robot

Computer Aided Drafting, Design and Manufacturing Volume 26, Number 2, June 2016, Page 53. The design of exoskeleton lower limbs rehabilitation robot Computer Aided Drafting, Design and Manufacturing Volume 26, Number 2, June 2016, Page 53 CADDM The design of exoskeleton lower limbs rehabilitation robot Zhao Xiayun 1, Wang Zhengxing 2, Liu Zhengyu 1,3,

More information

Gait Analysis at Your Fingertips:

Gait Analysis at Your Fingertips: Gait Analysis at Your Fingertips: Enhancing Observational Gait Analysis Using Mobile Device Technology and the Edinburgh Visual Gait Scale Jon R. Davids, MD; Shriners Hospitals for Children Northern California;

More information

1B1 Meridium. Reclaim your way. Information for practitioners. Meridium Ottobock 1

1B1 Meridium. Reclaim your way. Information for practitioners. Meridium Ottobock 1 1B1 Meridium Reclaim your way. Information for practitioners Meridium Ottobock 1 Reclaim your way. With the development of the individualized Meridium prosthetic foot, Ottobock has incorporated the latest

More information

REPORT DOCUMENTATION PAGE

REPORT DOCUMENTATION PAGE REPORT DOCUMENTATION PAGE Form Approved OMB NO. 0704-0188 The public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions,

More information

Walking Experiment of Biped Robot with Antagonistic Actuation Using Non-Linear Spring

Walking Experiment of Biped Robot with Antagonistic Actuation Using Non-Linear Spring , March 16-18, 2016, Hong Kong Walking Experiment of Biped Robot with Antagonistic Actuation Using Non-Linear Spring Takashige Yano, Jae Hoon Lee, Member, IAENG and Shingo Okamoto 1 Abstract The purpose

More information

1502. The effect of mechanism design on the performance of a quadruped walking machine

1502. The effect of mechanism design on the performance of a quadruped walking machine 1502. The effect of mechanism design on the performance of a quadruped walking machine Fu-Chen Chen 1, Shang-Chen Wu 2, Yung-Cheng Chen 3 Department of Mechanical Engineering, Kun Shan University, Tainan

More information

Using GPOPS-II to optimize sum of squared torques of a double pendulum as a prosthesis leg. Abstract

Using GPOPS-II to optimize sum of squared torques of a double pendulum as a prosthesis leg. Abstract Using GPOPS-II to optimize sum of squared torques of a double pendulum as a prosthesis leg Abstract Milad Zarei MCE 593 Prosthesis Design & Control A two-dimensional, two links pendulum is developed to

More information

3D Limit Cycle Walking of Musculoskeletal Humanoid Robot with Flat Feet

3D Limit Cycle Walking of Musculoskeletal Humanoid Robot with Flat Feet The 2009 IEEE/RSJ International Conference on Intelligent Robots and Systems October 11-15, 2009 St. Louis, USA 3D Limit Cycle Walking of Musculoskeletal Humanoid Robot with Flat Feet Kenichi Narioka,

More information

RECENTLY, various humanoid robots have been

RECENTLY, various humanoid robots have been Stability Improvement Using Soft Sole on Humanoid Robot Masanao Koeda 1, Tsuneo Yoshikawa 1, and Keita Nakagawa 1 1 Ritsumeikan University, College of Information Science and Engineering, Department of

More information

Steffen Willwacher, Katina Fischer, Gert Peter Brüggemann Institute of Biomechanics and Orthopaedics, German Sport University, Cologne, Germany

Steffen Willwacher, Katina Fischer, Gert Peter Brüggemann Institute of Biomechanics and Orthopaedics, German Sport University, Cologne, Germany P01-3 ID126 SURFACE STIFFNESS AFFECTS JOINT LOADING IN RUNNING Steffen Willwacher, Katina Fischer, Gert Peter Brüggemann Institute of Biomechanics and Orthopaedics, German Sport University, Cologne, Germany

More information

Spacecraft Simulation Tool. Debbie Clancy JHU/APL

Spacecraft Simulation Tool. Debbie Clancy JHU/APL FSW Workshop 2011 Using Flight Software in a Spacecraft Simulation Tool Debbie Clancy JHU/APL debbie.clancy@jhuapl.edu 443-778-7721 Agenda Overview of RBSP and FAST Technical Challenges Dropping FSW into

More information

Gait Analysis of Wittenberg s Women s Basketball Team: The Relationship between Shoulder Movement and Injuries

Gait Analysis of Wittenberg s Women s Basketball Team: The Relationship between Shoulder Movement and Injuries Gait Analysis of Wittenberg s Women s Basketball Team: The Relationship between Shoulder Movement and Injuries Katie Bondy Senior Presentation May 1 st 2013 Research Question Among basketball players,

More information

by Michael Young Human Performance Consulting

by Michael Young Human Performance Consulting by Michael Young Human Performance Consulting The high performance division of USATF commissioned research to determine what variables were most critical to success in the shot put The objective of the

More information

1. A tendency to roll or heel when turning (a known and typically constant disturbance) 2. Motion induced by surface waves of certain frequencies.

1. A tendency to roll or heel when turning (a known and typically constant disturbance) 2. Motion induced by surface waves of certain frequencies. Department of Mechanical Engineering Massachusetts Institute of Technology 2.14 Analysis and Design of Feedback Control Systems Fall 2004 October 21, 2004 Case Study on Ship Roll Control Problem Statement:

More information

Kochi University of Technology Aca Study on Dynamic Analysis and Wea Title stem for Golf Swing Author(s) LI, Zhiwei Citation 高知工科大学, 博士論文. Date of 2015-03 issue URL http://hdl.handle.net/10173/1281 Rights

More information

GaitAnalysisofEightLegedRobot

GaitAnalysisofEightLegedRobot GaitAnalysisofEightLegedRobot Mohammad Imtiyaz Ahmad 1, Dilip Kumar Biswas 2 & S. S ROY 3 1&2 Department of Mechanical Engineering, National Institute of Technology, Durgapur 2 Technology Innovation Centre,

More information

Controlling Walking Behavior of Passive Dynamic Walker utilizing Passive Joint Compliance

Controlling Walking Behavior of Passive Dynamic Walker utilizing Passive Joint Compliance Controlling Walking Behavior of Passive Dynamic Walker utilizing Passive Joint Compliance Takashi TAKUMA, Koh HOSODA Department of Adaptive Machine Systems, Graduate School of Engineering Osaka University

More information

Truba college of Engineering & Technology, Indore, India. Truba college of Engineering & Technology, Indore, India.

Truba college of Engineering & Technology, Indore, India. Truba college of Engineering & Technology, Indore, India. IJESRT INTERNATIONAL JOURNAL OF ENGINEERING SCIENCES & RESEARCH TECHNOLOGY DESIGN AND DEVELOPMENT OF WALKING BIPEDAL ROBOT WITH THE HELP OF ARDUINO CONTROLLER Deepti Malviya*, Suman Sharma * Truba college

More information

Gait analysis for the development of the biped robot foot structure

Gait analysis for the development of the biped robot foot structure Preprints of the 9th World Congress The International Federation of Automatic Control Cape Town, South Africa. August 4-9, 4 Gait analysis for the development of the biped robot foot structure Yusuke OGAWA

More information

Design, Fabrication and Analysis of Microcontroller Based Bipedal Walking Robot Vaidyanathan.V.T 1 and Sivaramakrishnan.R 2

Design, Fabrication and Analysis of Microcontroller Based Bipedal Walking Robot Vaidyanathan.V.T 1 and Sivaramakrishnan.R 2 Design, Fabrication and Analysis of Microcontroller Based Bipedal Walking Robot Vaidyanathan.V.T 1 and Sivaramakrishnan.R 2 1, 2 Mechatronics, Department of Production Technology, Madras Institute of Technology,

More information

Jurassic Chicken: An Avian Bipedal Robot 2001 Florida Conference on Recent Advances in Robotics May 10-11, 2001, FAMU-FSU College of Engineering

Jurassic Chicken: An Avian Bipedal Robot 2001 Florida Conference on Recent Advances in Robotics May 10-11, 2001, FAMU-FSU College of Engineering Jurassic Chicken: An Avian Bipedal Robot 2001 Florida Conference on Recent Advances in Robotics May 10-11, 2001, FAMU-FSU College of Engineering Megan Grimm Machine Intelligence Lab (MIL) Email: megan@mil.ufl.edu

More information

The Starting Point. Prosthetic Alignment in the Transtibial Amputee. Outline. COM Motion in the Coronal Plane

The Starting Point. Prosthetic Alignment in the Transtibial Amputee. Outline. COM Motion in the Coronal Plane Prosthetic Alignment in the Transtibial Amputee The Starting Point David C. Morgenroth, MD, Department of Rehabilitation Medicine University of Washington VAPSHCS Outline COM Motion in the Coronal Plane

More information

The NXT Generation. A complete learning solution

The NXT Generation. A complete learning solution The NXT Generation A complete learning solution 2008 The NXT Generation LEGO MINDSTORMS Education is the latest in educational robotics, enabling students to discover ICT, science, D&T and maths concepts

More information

A NEW GOLF-SWING ROBOT MODEL UTILIZING SHAFT ELASTICITY

A NEW GOLF-SWING ROBOT MODEL UTILIZING SHAFT ELASTICITY Journal of Sound and Vibration (1998) 17(1), 17 31 Article No. sv981733 A NEW GOLF-SWING ROBOT MODEL UTILIZING SHAFT ELASTICITY S. SUZUKI Department of Mechanical System Engineering, Kitami Institute of

More information

CONFIRMATION OF PHD CANDIDATURE DAMIEN KEE 2003

CONFIRMATION OF PHD CANDIDATURE DAMIEN KEE 2003 CONFIRMATION OF PHD CANDIDATURE DAMIEN KEE 2003 List of Publications: Wyeth G, Kee D, Yik T, Evolving a Locus based Gait for a Humanoid Robot, Proceedings of the International Conference on Intelligent

More information

Decentralized Autonomous Control of a Myriapod Locomotion Robot

Decentralized Autonomous Control of a Myriapod Locomotion Robot Decentralized utonomous Control of a Myriapod Locomotion Robot hmet Onat Sabanci University, Turkey onat@sabanciuniv.edu Kazuo Tsuchiya Kyoto University, Japan tsuchiya@kuaero.kyoto-u.ac.jp Katsuyoshi

More information

A Bio-inspired Behavior Based Bipedal Locomotion Control B4LC Method for Bipedal Upslope Walking

A Bio-inspired Behavior Based Bipedal Locomotion Control B4LC Method for Bipedal Upslope Walking 1 A Bio-inspired Behavior Based Bipedal Locomotion Control B4LC Method for Bipedal Upslope Walking JIE ZHAO, QI LIU, STEFFEN SCHUETZ, and KARSTEN BERNS Robotics Research Lab, University of Kaiserslautern,

More information

Serve the only stroke in which the player has full control over its outcome. Bahamonde (2000) The higher the velocity, the smaller the margin of

Serve the only stroke in which the player has full control over its outcome. Bahamonde (2000) The higher the velocity, the smaller the margin of Lower Extremity Performance of Tennis Serve Reporter: Chin-Fu Hsu Adviser: Lin-Hwa Wang OUTLINE Introduction Kinetic Chain Serve Types Lower Extremity Movement Summary Future Work INTRODUCTION Serve the

More information

Robotics and Autonomous Systems

Robotics and Autonomous Systems Robotics and Autonomous Systems Lecture 4: Locomotion Richard Williams Department of Computer Science University of Liverpool 1 / 57 Today 2 / 57 Motion Two aspects: Locomotion Kinematics Locomotion: What

More information

Neuro-Fuzzy ZMP Control of a Biped Robot

Neuro-Fuzzy ZMP Control of a Biped Robot Proceedings of the 6th WSEAS International Conference on Simulation, Modelling and Optimization, Lisbon, Portugal, September 22-24, 26 331 Neuro-Fuzzy ZMP Control of a Biped Robot JOÃO PAULO FERREIRA (1)

More information

Complex movement patterns of a bipedal walk

Complex movement patterns of a bipedal walk 1 Complex movement patterns of a bipedal walk Objectives After completing this lesson, you will be able to: Describe the complex movement patterns of a bipedal walk. Describe the biomechanics of walking

More information

Meridium. Reclaim your way. Information for clinicians

Meridium. Reclaim your way. Information for clinicians Meridium Reclaim your way. Information for clinicians Reclaim your way. With the development of the individualised Meridium prosthetic foot, Ottobock has incorporated the latest technology to achieve a

More information

Robotics and Autonomous Systems

Robotics and Autonomous Systems Robotics and Autonomous Systems Lecture 4: Locomotion Simon Parsons Department of Computer Science University of Liverpool 1 / 57 Today 2 / 57 Motion Two aspects: Locomotion Kinematics Locomotion: What

More information

EXPERIMENTAL STUDY OF EXOSKELETON FOR ANKLE AND KNEE JOINT

EXPERIMENTAL STUDY OF EXOSKELETON FOR ANKLE AND KNEE JOINT EXPERIMENTAL STUDY OF EXOSKELETON FOR ANKLE AND KNEE JOINT PROJECT REFERENCE NO. : 37S0925 COLLEGE : NEW HORIZON COLLEGE OF ENGINEERING, BANGALORE BRANCH : MECHANICAL ENGINEERING GUIDES : DR GANESHA PRASAD

More information

-Elastic strain energy (duty factor decreases at higher speeds). Higher forces act on feet. More tendon stretch. More energy stored in tendon.

-Elastic strain energy (duty factor decreases at higher speeds). Higher forces act on feet. More tendon stretch. More energy stored in tendon. As velocity increases ( ) (i.e. increasing Froude number v 2 / gl) the component of the energy cost of transport associated with: -Internal kinetic energy (limbs accelerated to higher angular velocity).

More information

Technology. In the My Files [My Files] submenu you can store all the programs that you have made on the NXT or downloaded from your computer.

Technology. In the My Files [My Files] submenu you can store all the programs that you have made on the NXT or downloaded from your computer. NXT Main Menu My Files Files are automatically placed into the appropriate folders. When you download a program using a Sound file to the NXT, the program will be placed under Software files while the

More information

Biped Walking Robot Control System Design

Biped Walking Robot Control System Design 69 Biped Walking Robot Control System Design Jian Fang Abstract For biped walking robot posture instability problems presented this paper, ZMP gait planning algorithm and a time division multiplexing servo

More information

the world s most advanced humanoid robot

the world s most advanced humanoid robot the world s most advanced humanoid robot 02 : ASIMO V2 : TECHNICAL GUIDE : ROBOT DEVELOPMENT : CONTENTS ROBOT DEVELOPMENT 3 HISTORY OF HUMANOIDS 5 ASIMO v1 7 ASIMO v2 16 THE FUTURE 18 Creating New Mobility

More information

Compensator Design for Speed Control of DC Motor by Root Locus Approach using MATLAB

Compensator Design for Speed Control of DC Motor by Root Locus Approach using MATLAB Compensator Design for Speed Control of DC Motor by Root Locus Approach using MATLAB Akshay C. Mahakalkar, Gaurav R. Powale 2, Yogita R. Ashtekar 3, Dinesh L. Mute 4, 2 B.E. 4 th Year Student of Electrical

More information

Skippy: Reaching for the Performance Envelope

Skippy: Reaching for the Performance Envelope Workshop on Dynamic Locomotion and Manipulation ETH Zürich, July 2016 Skippy: Reaching for the Performance Envelope Roy Featherstone 2016 Roy Featherstone What is Skippy? a hopping and balancing machine

More information

Effects of a Passive Dynamic Walker s Mechanical Parameters on Foot- Ground Clearance

Effects of a Passive Dynamic Walker s Mechanical Parameters on Foot- Ground Clearance Applied Mechanics and Materials Submitted: 204-09-9 ISSN: 662-7482, Vols. 687-69, pp 279-284 Accepted: 204-09-27 doi:0.4028/www.scientific.net/amm.687-69.279 Online: 204--27 204 Trans Tech Publications,

More information

Frequently Asked Questions

Frequently Asked Questions Frequently Asked Questions Basic Facts What does the name ASIMO stand for? ASIMO stands for Advanced Step in Innovative Mobility. Who created ASIMO? ASIMO was developed by Honda Motor Co., Ltd, a world

More information

Toward a Human-like Biped Robot with Compliant Legs

Toward a Human-like Biped Robot with Compliant Legs Book Title Book Editors IOS Press, 23 1 Toward a Human-like Biped Robot with Compliant Legs Fumiya Iida a,b,1, Yohei Minekawa a Juergen Rummel a and Andre Seyfarth a a Locomotion Laboratory, University

More information

Investigation of Suction Process of Scroll Compressors

Investigation of Suction Process of Scroll Compressors Purdue University Purdue e-pubs International Compressor Engineering Conference School of Mechanical Engineering 2006 Investigation of Suction Process of Scroll Compressors Michael M. Cui Trane Jack Sauls

More information

Simulation-based design to reduce metabolic cost

Simulation-based design to reduce metabolic cost Simulation-based design to reduce metabolic cost Overview: Lecture + Hands On Exercise 1. Generating and evaluating a muscledriven simulation of walking 2. Metabolics 101 3. Designing and evaluating devices

More information

COMPARISON DRIVO - DIRETO

COMPARISON DRIVO - DIRETO COMPARISON DRIVO - DIRETO EN DRIVO Interactive hometrainer with direct transmission Simply choose the course or the training program and Drivo will automatically adjust resistance. Simulates Challenging

More information

IDeA Competition Report. Electronic Swimming Coach (ESC) for. Athletes who are Visually Impaired

IDeA Competition Report. Electronic Swimming Coach (ESC) for. Athletes who are Visually Impaired IDeA Competition Report Electronic Swimming Coach (ESC) for Athletes who are Visually Impaired Project Carried Out Under: The Department of Systems and Computer Engineering Carleton University Supervisor

More information

COMPARISON STUDY BETWEEN THE EFFICIENY OF THE START TECHNIQUES IN THE ROMANIAN COMPETITIVE SWIMMING

COMPARISON STUDY BETWEEN THE EFFICIENY OF THE START TECHNIQUES IN THE ROMANIAN COMPETITIVE SWIMMING Bulletin of the Transilvania University of Braşov Series IX: Sciences of Human Kinetics Vol. 6 (55) No. 1 2013 COMPARISON STUDY BETWEEN THE EFFICIENY OF THE START TECHNIQUES IN THE ROMANIAN COMPETITIVE

More information

Ranger Walking Initiation Stephanie Schneider 5/15/2012 Final Report for Cornell Ranger Research

Ranger Walking Initiation Stephanie Schneider 5/15/2012 Final Report for Cornell Ranger Research 1 Ranger Walking Initiation Stephanie Schneider sns74@cornell.edu 5/15/2012 Final Report for Cornell Ranger Research Abstract I joined the Biorobotics Lab this semester to gain experience with an application

More information

REPRESENTATION OF HUMAN GAIT TRAJECTORY THROUGH TEMPOROSPATIAL IMAGE MODELLING

REPRESENTATION OF HUMAN GAIT TRAJECTORY THROUGH TEMPOROSPATIAL IMAGE MODELLING REPRESENTATION OF HUMAN GAIT TRAJECTORY THROUGH TEMPOROSPATIAL IMAGE MODELLING Md. Akhtaruzzaman, Amir A. Shafie and Md. Raisuddin Khan Department of Mechatronics Engineering, Kulliyyah of Engineering,

More information

Emergency Stop Algorithm for Walking Humanoid Robots

Emergency Stop Algorithm for Walking Humanoid Robots Emergency Stop Algorithm for Walking Humanoid Robots Mitsuharu Morisawa, Shuuji Kajita, Kensuke Harada, Kiyoshi Fujiwara Fumio Kanehiro, Kenji Kaneko, Hirohisa Hirukawa National Institute of Advanced Industrial

More information

C-Brace Orthotronic Mobility System

C-Brace Orthotronic Mobility System C-Brace Orthotronic Mobility System You ll always remember your first step Information for practitioners C-Brace Orthotics reinvented Until now, you and your patients with conditions like incomplete spinal

More information

Trajectory Planning for Smooth Transition of a Biped Robot

Trajectory Planning for Smooth Transition of a Biped Robot Proceedings of the 003 IEEE International Conference on Robotics & Automation Taipei, Taiwan, September 14-19, 003 Trajectory Planning for Smooth Transition of a Biped Robot Zhe Tang 1,, Changjiu Zhou,

More information

Stability Control of Bipedal Walking Robot

Stability Control of Bipedal Walking Robot Stability Control of Bipedal Walking Robot V.Mastanaiah Assistant Professor, Department of Mechanical Engineering, KG Reddy College of Engineering and Technology, Moinabad, Telangana, India. ABSTRACT:

More information