Implementation of Nonlinear Adaptive U-Model Control Synthesis Using a Robot Operating System for an Unmanned Underwater Vehicle

This paper presents the development of unmanned marine robotic control modelling and control synthesis using a coupled multivariable underactuated nonlinear adaptive U-model approach. The proposed controller was developed using thru an open source robot operating system (ROS) platform. The new adaptive coupled U-model based internal model control (IMC) node was successfully developed and tested. The proposed controller demonstrated the simplicity of the control synthesis process and the implementation of the mathematical algorithm in real-time. The controller was compared with the proven existing GIRONA 500 UUV for real-time performance. The ROS environment provides fast and reliable controller design and development compared to conventional software architecture. Simulation and real-time experiment were conducted using ROS via the GIRONA 500 UUV platform and compared with a PID mission controller. A new ROS node of nonlinear adaptive U-model based IMC was developed using ROS. The results showed good control signal convergence and tracking performance between the plant or system model with the proposed method.


I. INTRODUCTION
Most of the autonomous unmanned underwater vehicle (UUV) control systems are multivariable. The control framework methodology can be varied based on the application. There are no precise control methodology strategies that can be implemented in UUV applications. There are a few methodologies for the UUV control framework plan in the literature which attempt to demonstrate the practicality of the control algorithm. Most of the platforms are multiple-input multiple output (MIMO) due to the installation of multiple sensors and transducers onboard. Thus, controller design and development shall include the real-time implementation approach. However, a complex mathematical approach may lead to higher computation demand and energy needs thus The associate editor coordinating the review of this manuscript and approving it for publication was Min Wang . making it difficult to be implemented in real-time [1]. With different designs and shapes, UUV are highly nonlinear, underactuated or with a limited control actuator, highly coupled in motion and vulnerable to external disturbances. The underactuated system needs to overcome the nonlinearity of the dynamics plus the disturbances and uncertainties arising from the marine environment [2]- [5]. Unfortunately, there is no such precise approach for nonlinear control and modelling frameworks in the presence of external disturbances especially in real-time implementation. In significant cases, the control framework outline strategies for nonlinear control systems vary from one framework to another. A few methodologies are described for nonlinear control framework plans in the literature which attempt to represent nonlinear control systems. It is desirable to have a control structure that is capable of overcoming external disturbances without involving a complex mathematical and modelling approach VOLUME 8, 2020 This work is licensed under a Creative Commons Attribution 4.0 License. For more information, see https://creativecommons.org/licenses/by/4.0/ that can be demonstrated not only through simulation but in real-time implementation as well. A reference-based model approach such an internal model control (IMC) structure can be implanted for a control strategy without any predefined precise mathematical modelling, plus it includes a disturbance rejection capability. The underactuated trajectory control problem of an UUV in the presence of environmental disturbances was proposed by [6]. This scheme implemented the barrier Lyapunov function for control law combined with a backstepping algorithm, and a radial basis function neural network (RBFNN) with dynamic surface control for solving the effects of external disturbances. The proposed method was compared with the quadratic Lyapunov function and produced better tracking results via simulation. Another underactuated trajectory control approach for an AUV under perturbations was achieved using adaptive sliding mode control [7]. The sliding mode adaptive control was compared to the generalised super-twisting algorithm (GSTA) sliding mode via real-time implementation using a Leonard ROV. The adaptive sliding mode method converged onto the desired input better than the GSTA approach with a reduced rootmean-square error value. Another control approach for the ROV platform used a double-loop sliding mode control for improvement of chatter reduction and to lower the root mean square error value [8]. Those authors introduced a novel switching term to replace the conventional switching term for sliding mode control through simulation without real-time implementation. Several other works employed the sliding mode control approach for an UUV such as in [9], [10] through simulation and real-time implementation. An adaptive fuzzy sliding mode controller was proposed to estimate the nonlinearity of MIMO underwater vehicles in [11] through a simulation approach. This method was the combination of two different nonlinear controllers aimed to counter the dynamics and chatter effect from the sliding mode control and also from external disturbances. The fuzzy logic control approximates the couple dynamics of the UUV. However, this method needs to be integrated with the sliding mode controller for stability analysis and the systematic control design method. The controller design was more complex and had a higher computational demand. Fuzzy logic control could reduce the chatter effect caused by the discontinuity of the sliding mode control system excited by unmodelled dynamics. In [4], a trajectory 3-D tracking control system was addressed for an UUV with a prescribed performance under model uncertainties and external disturbances through simulation and real-time implementation. Control tracking with a specified performance converged to the desired values with minimal error. However, only specified performances were presented for torpedo-like MIMO vehicles and unicycle-like MIMO vehicles. It is desirable to have a control structure that is capable of overcoming external disturbances without involving a complex mathematical and modelling approach. Other work was done by [12] using two degrees of freedom IMC-PID with logarithmic approximations for the load frequency controller of a power system. The inverse component made use of a low pass filter to reject any load disturbances. The control structure required another feedback controller to counteract the effects of befuddling or mismatching. The results showed good performance in terms of error analysis, settling time and disturbance rejection. Based on the literature, a variety of approaches are available when designing a nonlinear controller for an unmanned marine robotics platform, especially for the underactuated model and these approaches can be highly robust against external disturbances.
As mentioned in the literature, the nonlinear modelling approach is a vital solution to overcome the nonlinearity, variation of the dynamics and hydrodynamics, underactuated, and external disturbances in a marine environment. Several strategies have been implemented to overcome these problems by implementing hybrid control approaches such as fuzzy logic control combined with sliding mode control [11], [13]- [15]. Other approaches augment the controller law by incorporation with the nonlinear neural network method and new novel approaches [16], [17]. These approaches will ensure the nonlinear effects and the disturbances can be reduced, thus improving the controller performance. A U-model has been proposed by [18] for a nonlinear dynamical control design for the Hammerstein model, a laboratoryscale level system and a continuous stir reactor. The control law was formulated as the current control term u(t) which would be suitable for a nonlinear control application to reduce mathematical complexity. The U-model is an adaptive control-orientated model and it is based on a control input signal. It is more general compared to other estimation approaches and exhibits a polynomial structure applicable to the control term. This makes it suitable for real-time applications. Our previous works in [19] demonstrate the effectiveness of U-model modelling and the control approach in unmanned marine robotics applications through simulation. This paper implements a nonlinear multivariable adaptive control synthesis using the U-model for nonlinear UUV applications in the 3D ROS visualisation tool GUI for the robotic platform simulation in a targeted environment such as an underwater scenario with sensor simulation using the GIRONA 500 UUV platform as in Fig. 1. The ROS simulation environment enables the controller to be analysed and verified before a real-time experiment can be conducted in the underwater environment. The controller was compared with the proven existing GIRONA 500 UUV controller for the validation process.

A. NONLINEAR INTERNAL MODEL CONTROL APPROACH
An Internal Model Control (IMC) is selected as a nonlinear modelling control framework. Fig. 2 shows an online adaptive IMC basic principle. IMC approach popular in process control applications and effective with linear plants [20]. It also can be used in nonlinear modelling and control applications such in [20]- [25]. It has good disturbance rejection capabilities and reduced the UUV controller design and development complexity due to the uncertainty in the underwater environment.
The IMC control structure consists of a reference input R(t), nonlinear system G S , a nonlinear model of G M , the controller as the inverse of G M in the presence of unknown external disturbance D(t) and output of the nonlinear system Y (t). The output Y (t) is compared with the model output Y M (t) to calculate the error E(t). The closed loop system of the IMC control scheme can be expressed by [26]: Rearranging Eq. (1), we get, Eq. (2) shows that according to IMC scheme, if the system can be truly modelled and the model can be inverted, it is possible to reject the disturbances, and output tracking is achieved. Therefore, the IMC tracking problem transforms to identifying a true model and its inverse. Recently, U-model has been used for certain process control, robotics and other nonlinear SISO and MIMO applications. U-model represents simplified NARMAX nonlinear polynomial model that can be inverse according to the IMC scheme. Therefore, this paper focuses on MIMO U-model based methodology for underwater marine applications.

B. COUPLED UNDERACTUATED MIMO NONLINEAR ADAPTIVE U-MODEL CONTROL SYNTHESIS APPROACH
For coupled and underactuated system, we establish a MIMO U-model by considering a multivariable nonlinear coupled system that can be represented by n-input ×p-output multivariable NARMAX model as: [19].
where the outputs, y 1 (t) , y 2 (t) , · · · , y p (t) are expressed as functions of inputs, u 1 (t) , u 2 (t) , · · · , u n (t) and the modelling mismatches. The multivariable U-model expresses the outputs in terms of weighted, time-delayed polynomials in the control input u 1 (t − 1) , u 2 (t − 1) , · · · , u n (t − 1) as: Similarly, for the p th output y p (t) will be: The equations can be represented in vector form as: All the inputs and outputs are coupled through the parameters, b jkl . The subscripts j, k and l, represent the j th power of control signal, k th row (model output), and l th column (model input). The parameters b jkl are identified iteratively using an adaptive algorithm. In particular the first coefficient for each input b 0kl can be adaptively trained to model the past values of the outputs [19]. Defining the coefficient vectors b jk and the input vectors u l , the output equations can be written in closed form as The vectors, u 1 , u 2 , . . . , u n , are comprised of powers of the inputs u 1 (t − 1) , u 2 (t − 1) , · · · , u n (t − 1) as: In matrix form  where: Equation (13) is a simplified of a multivariable nonlinear coupled U-model representation. In order to design the controller, we need to solve Equation (13). Since the system matrix B is a non-square matrix that includes the interaction among inputs and the outputs the Jacobian matrix requires the Newton-Raphson method. Therefore, the challenge is to avoid the singularity while inverting the non-square Jacobian matrix. We can avoid the singularity by using the following techniques available in the literature [27]: (a) Employing pseudoinverse, (b) Utilising the converse of the Jacobian framework from the past moment, (c) Adding a small number to the Jacobian lattice to stay away from the singularity. In order to acquire higher modelling accuracy with less error correlation, neural networks are integrated with the Umodel methodology. Neural networks are a proven approach to the linear and nonlinear modelling and estimation process. A radial basis function neural network (RBFNN) consists of a single layered feedforward network and offers faster learning time compared to the multi-layered feedforward neural network (MFNN). RBFNN is capable of approximating the linear and nonlinearities in the systems. This algorithm has also been used in multi-applications such as control systems, signal processing, medical, renewable energy and machine learning such as in [28]- [37]. The RBFNN is incorporated with the U-model by computing the term B 0 (t) while (15) whereŵ n and ϕ are the weights with n number of neurons and basis function. The input of the ith hidden neuron is: where c i is the centre of the ith hidden layer node while the weight vector for each neuron is: Equation (15) can be simplified as: The radial basis function (RBF) is chosen as an activation function due to better learning speed [28], [30], [31]. The activation function can be expressed as: where n is the number of hidden layer neurons, c i is the centre of the ith hidden layer (c 1 , c 2 , c 3 ..c n ) node and β is the width of the activation function. As a result the weights B 0 of the neural network and the rest of the parameters B j (j = 1, 2, N) are updated using NLMS as: where µ (t) is the NLMS learning rate (0 < µ (t) < 1). These time varying parameters B i (t) and RBFNN weights  (20) and (21) simultaneously based on the identification tracking error. Thus, any changes in parameters in the dynamic system will be taken care off by these adaptive weights and parameter values. The representation of the adaptive mechanism with five neurons of the RBF activation function and third order of U-model polynomial equation is presented in Fig. 3. The parameter B 0 (t) will compensate all the uncertainties, nonlinearities, and lagged parameters. Thus, the controller synthesis will only involve current control signal u (t − 1). This algorithm will reduce total computational demand during UUV mission, thus reducing total power consumption.
Based on Fig. 3, the U-model Y m , incorporated with RBFNN for the SISO system can be expressed as: Y m =ŵ 1 ϕ 1 (u (t − 1)) + · · · +ŵ n ϕ n (u (t − 1)) C. ROBOT OPERATING SYSTEM (ROS) GIRONA 500 UUV GIRONA 500 UUV platform was developed by Underwater Robotic Laboratory, University of Girona Spain in 2012 for underwater survey and intervention. The unique design of GIRONA 500 UUV with capability to accommodate a large volume of different instruments and equipment such underwater manipulator [38]. Fig. 1 show the design and characteristic of GIRONA 500 UUV platform. The main structure of this platform is Aluminium 6082-T6 alloy frame T-shaped pillars and torpedo-shaped pressure cylinder for electronic compartment. The overall size is (1 m in height x 1 m in width x 1.5 m in length) and weight up to 200 kg depending on the payload being attached. The platform can be equipped with three to eight underwater thrusters depending on the underwater intervention mission for under-actuated or fully actuated control autonomy. The pressure cylinder are covered with thermoformed ABS plastic skin whose streamline shape is based on the Myring hull profile equation [39] for drag reduction. The maximum operating depth for underwater intervention is up to 500 m. This platform implements open source ROS for system integration and control. The floatation modules, consist of epoxy composite foam with a density 400 kg/m 3 , are place in top part of the platform to make the vehicle neutrally buoyant. This is to make sure the platform will afloat when critical failure during underwater intervention mission. Heavier equipment is place in the lower hull to create good performance stability in roll and pitch that influence the separation between centre of buoyancy (CB) and centre of gravity (CG) make it suitable for bathymetric and imaging survey. The power system consists of Li-ion battery packs with combined capacity of 2.2 kWh of energy. RS-232 interface connection is implemented to manage and monitor the state of the system at any time such temperature, voltage condition, and time to full charge/discharge. The battery system is located at the bottom part of the vehicle. A 614.4 kHz phased array of doppler velocity log (DVL), attitude and heading reference system (AHRS) added by fibre optic gyro (FOG) sensors are used for dead-reckoning navigation. Absolute position in the surface is determined by GPS system while ultra-short baseline (USBL) for underwater. Sound velocity sensor (SVS) is used for measuring sound speed profile for optimizing data accuracy for underwater acoustic devices (DVL, UBSL, and Side Scan Sonar). Different configuration of thrusters can be implements onto the vehicle for greater autonomy and long-range mission endurance.
The coupled underactuated multivariable nonlinear adaptive U-model based IMC controller is designed and developed in the ROS architecture [40] for rapid implementation. The UUV application involves multiple sensors and transducers in order to operate in a harsh marine environment, thus making the system configuration and system integration process difficult and complex. The ROS framework uses the ''publish-subscribe'' method by passing the message around the sensors and transducers compared with the conventional method that is highly time consuming. The ROS framework simplifies the communication and integration process via the ROS core system, thus making it faster to implement. Fig. 4 shows the ROS software architecture. The conventional software architecture shown in Fig. 5 is mainly for one-to-one communication and needs to be reconfigured again in order to change one module while the ROS based communication architecture uses ''publish-subscribe'' via the ROS core system [41].
The ROS operates using an Ubuntu Linux open source operating system and can be learnt through http://wiki.ros.org/. A ROS system is made up of many different program call nodes or topics that run simultaneously and communicate with each other by passing messages. The basic programming languages for ROS applications are Python and C++ for simulation and real-time implementation. A new node or topic is designed for the adaptive nonlinear U-model based IMC in order to subscribe to all the relevant topics and to publish a U-model controller node for the GIRONA 500 UUV platform. In this new node, topic pose_ekf_slam/odometry, cola2_navigation/nav_sts, cola2_control/body_velocity_req represent the navigation data, an extended Kalman Filter (EKF) with simultaneous localisation and mapping (SLAM) for underwater 6DOF localisation and mapping application [42], [43] and the velocity input for the underwater thrusters.
Catkin is set of tools that the ROS uses to generate executable programs, libraries, scripts, and interfaces that other code can use. Catkin comprises a set of CMake macros and custom Python scripts. CMake is commonly used for open source build systems. To build a new node, a dedicated directory or workspace must be created through Catkin. A workspace consists of directories for ROS code to be stored and we can have multiple ROS workspaces but only one workspace can be run at any one time. A Catkin workspace can be created and initialised through a command-line as: cirs@cirs∼ubuntu : ∼$ mkdir-p∼?catkin_ws/src cirs@cirs∼ubuntu : ∼$ cd∼/catkin_ws/src cirs@cirs∼ubuntu : ∼$ catkin_init_workspace The 6 DOF vehicle position in the reference frame is achieved through an extended Kalman Filter (EKF) filter and multistep_excitation: reference input signal generation for controller responses, validation, and performance. This adaptive nonlinear U-model based IMC controller node publishes messages to the cola2_control/body_velocity_req and cola2_control/body_force_req. However, only body_velocity_ req messages will be used for the controller reference. Fig. 6 and Fig. 7 show the publish messages algorithm to send messages from the adaptive nonlinear U-model based IMC node to the body_velocity_req node.
The subscribe messages form pose_ekf_slam/odometry node consists of the velocity data in surge, swag, and heave or x, y, and z directions. All these messages are used for the sensor update or current velocity and position during simulation   and real-time testing for GIRONA 500 UUV. In term of the algorithm, the Eigen C++ library that is suitable for linear algebra, matrices, vectors, and related applications is implemented. This is suitable for the adaptive nonlinear U-model based IMC that consists of polynomial equations. The controller computation also involves the Eigen C++ library. The published messages from the adaptive nonlinear U-model based IMC controller node are the velocity data in x, y, and z directions through U-model control synthesis. This data is the controller update values for the GIRONA 500 UUV platform. Fig. 8 shows the messages for subscribe and publish for the adaptive nonlinear U-model based IMC in the ROS GIRONA 500 UUV architecture during simulation and realtime implementation.  Rvis is a 3D ROS visualisation tool GUI for robotic platform simulation in the targeted environment such as an underwater scenario with sensor simulation [44]- [46]. Rvis can plot and display many types of data streams through ROS nodes such as cameras, underwater acoustic transducers, a manipulator arm, and other related sensors. All these elements such as 3D rendering of the view and data from sensors can be accessed simultaneously. Using the launch command in the terminal, the Rvis terminal and GIRONA 500 UUV can be used through a teleoperated keyboard key or pre-defined manoeuvring control. A multistep excitation node controller reference will be used for the adaptive nonlinear U-modelbased IMC controller node in the simulations and real-time experiment as a pre-defined manoeuvring control.

III. SIMULATION RESULTS
The simulation results of the GIRONA 500 UUV implementing an adaptive nonlinear IMC-based U-model algorithm and a comparison with the existing GIRONA 500 UUV workable mission PID controller are shown in Fig. 9 to Fig. 12. The 3rd order system of the MIMO U-model was set up with initial values for the parameters β 1 , β 2 , and β 3 = [0.1, 0.1, 0.1] with a learning rate equal to 0.05 and small gain parameter q = 0.01. Fig. 9 shows the comparison of tracking control of body velocity request in the surge or x-direction. Adaptive nonlinear IMC based U-model and PID control approaches converged to the desired reference value. The U-model control  approach converged with signal oscillation at the beginning of the simulation without a proper tuning process compared to the PID control method. The GIRONA 500 AUV PID control parameters were already tested and proven during the simulation and real-time missions. However, the U-model control approach may be improved with proper tuning gain selection. The adaptive mechanism in the U-model adapted to changing dynamics, although with random values (0 to 1) for the learning rate, initial adaptive parameter values, and q value. Thus, the U-model control approach was capable of synthesising control signals for the unknown control plants. Similar trends have been observed in Fig. 10 for comparison of control tracking in the sway (y-direction), in which both controllers converged to the desired body velocity request reference value. The U-model control approach produced oscillation in the control signal compared to the PID control method. Again, the same learning rate, initial adaptive parameter values, and q value were implemented in the simulation compared to the PID control method using different controller gains. Lastly, Fig. 11 shows the comparison of control tracking in the heave (z-direction). Both controllers converged to the desired reference value which the U-model control approach converged closest to the reference value compared to the PID control approach. The GIRONA 500 UUV PID control parameters were already tested and proven during simulation and real-time missions. However, the U-model control approach may be improved with proper tuning gain selection. The adaptive mechanism in the U-model adapted to changing dynamics, although with random values (0 to 1) for the learning rate, initial adaptive parameter values, and q value.
Thus, the U-model control approach was found capable of synthesising control signals for unknown control plants. Fig.  12 shows the Rvis GUI interface for GIRONA 500 UUV with way point marker during underwater manoeuvring simulations. In the Rvis GUI display, we can select several nodes to be included during simulation such as robot model, path, odometry, multibeam, world_origin, and profiler.

IV. REAL-TIME EXPERIMENT RESULTS
The experiment was conducted in order to validate the adaptive nonlinear IMC-based U-model algorithm from the ROS simulation environment into a real-time workable controller. The experiment was conducted at the pool testing facilities at the University of Girona, Spain as in Fig. 13. The size of the pool was 16 m length x 8 m width. Due to this underwater terrain, the experiment was conducted in decoupled manoeuvres due to the limited underwater space and safety of the underwater vehicle. The data was transmitted online via a communication cable or umbilical cord from the GIRONA 500 UUV. The advantage of this approach was the controller, and the algorithm could be tuned online without having to retrieve the underwater vehicle to the surface. All the reference and odometry data was saved as .bag record format and exported to the MATLAB Simulink for analysis.
Several real-time experiments were conducted in the pool facilities for the control validation as in Fig. 14. The predefined velocity reference consisted of multistep excitation of different amplitudes in the x, y, and z directions with a period of 10 s for each amplitude for the real-time validation due to limited underwater manoeuvring space. R 1 (t) as the x-axis, R 2 (t) is the y-axis and R 3 (t) for z-axis where R 1 (t) and   command window, where u_model.bag is the rosbag file from the ROS environment. Next, the ROS topic odometry was selected for further analysis by entering odometryU_Model = select(U_Model,'Topic','/pose_ekf_slam/odometry'). Then, the rosbag file was converted to a time series data by entering odometry_tsU_Model= timeseries(odometryU_Model) in the command window. Lastly, the time series data was analysed using the MATLAB plotting tool.
In Fig. 15, two U-model control methods were compared with the PID control method on the GIRONA 500 UUV platform. All the control methods converged to the desired multi-amplitude reference body velocity request signal. The U-model with a learning rate of 0.03 converged with better performance compared with the U-model with a learning rate of 0.02 and the PID control approach. The U-model with a learning rate of 0.03 converged closely with the reference value for most of the reference amplitudes compared to the existing PID controller. Fig. 16 shows a comparison of control tracking in the sway (y-direction). Again, the U-model approach used a similar learning rate value of 0.02 and 0.03 to compare with the PID control approach. All the controller approaches converged to the desired body velocity request value. The vehicle movement was not smooth compared to the surge (x-direction) testing due to the limited number of underwater thrusters 205692 VOLUME 8, 2020  and representing underactuated control manoeuvring. Both the U-model control approaches converged with better performance compare to the PID control approach although with a small overshoot during the first of three cycles of the multi-amplitude signal. Fig. 17 shows the real-time experiment comparison of control tracking in the heave (z-direction). Both control approaches tried to converge to the desired body velocity request reference signal due to the shorter period of 10 seconds compared to the simulation in the Rvis 3D visualisation tool that used a 20 second time frame period for each of the reference amplitudes. Due to fast-changing dynamics, both controllers needed enough time to converge as in the Rvis 3D visualisation. However, both controllers converged at the end of the experiment due to the extra time of the reference body velocity request signal. The reference body velocity request value could be reduced to a smaller amount to enable the controller to converge to the desired reference. This could be seen in the experiment, where the vehicle velocity movement in the heave direction was more than the surge and sway directions. This did not reflect a real underwater mission because, in the heave direction, the GIRONA 500 UUV was moving at a slower speed due to safety reasons. The underwater thrusters for the heave direction usually implement a higher torque on the motor than the horizontal thrusters for the surge and sway directions due to the buoyancy force against the vehicle, thus affecting the vehicle in the heave direction.

V. CONCLUSION
The implementation of an adaptive nonlinear IMC based U-model in a robot operating system (ROS) was undertaken in preparation for real-time experiments. The development of the new controller adaptive nonlinear IMC based U-model node in a C++ algorithm was executed successfully in the Rvis 3D environment and compared to the existing mission controller. The nonlinear IMC based U-model approach only required a suitable initial condition range from 0 to 1 for all the parameters, weights, and appropriate learning rate values for better stability and convergence speed. This nonlinear control approach can minimise the time duration of the controller design by implementing an adaptive learning rate method for the unknown control system compared with the PID control approach. The formulation and implementation of the adaptive nonlinear U-model based IMC model are much simpler than other complex mathematical modelling and control approaches. The results showed all the control tracking in surge, sway, and heave directions converged to the desired reference values. The real time experiment showed good results with all the controllers converging to the desired values except in the heave direction for which the controller required an extra period of steady state reference value instead of just 10 seconds. However, the results were considered acceptable and satisfactory because the controller was able to follow the reference values.

ACKNOWLEDGMENT
The experiment was conducted at the Computer Vision and Robotics pool facilities of University of Girona, Spain, using the GIRONA 500 UUV platform under a research attachment programme funded by the Public Service Department (PSD) Malaysia.