Laxmisha Rai and Soon Ju Kang RTCSA-2005 Multi-Thread based Synchronization of Locomotion Control in Snake Robots Laxmisha Rai and Soon Ju Kang Real Time Systems Lab, Kyungpook National University, Korea Hello Everyone, Today, I want to present the AV1394 board implementation and some related works. http://rtlab.knu.ac.kr
Proposed Architecture Implementation Verification Conclusion Outline Motivation Requirement Analysis Proposed Architecture Implementation Verification Conclusion The hardware block diagram and development sequence of AV1394 board is introduced. (It’s already presented at last seminar. I will re-introduce these contents for Rai and Pan Pan.) And, I will explain the hardware functional block for data conversion. Then, for case study, we will look at the overview of LG Home Gateway which is not implemented yet. Finally, some research topics are mentioned briefly.
Demo
Motivation Movement of snake is not straight-Wave like Serpentine mechanisms of snake robots can be used in applications like bridge inspection, search and rescue operations Generating wave motion of snake robots to generate purposeful motion is a challenging task Snakes move by pushing their body against environment
Units and Sections In general a snake may have N sections (1≤k≤N) and each section may have M units (1≤p≤M). The total number of units = N×M =Total number of motors needed.
Requirement Analysis Serpentine locomotion Left, Right, circular, rectilinear, concertina and side winding movements Co-ordination between two adjacent sections of the robot Robot performance in case of robot section or unit failure
Serpentine Locomotion Snake robot sections must generate serpentine Locomotion or Lateral undulation Lateral undulation is a sequence of left-right wave movements Generation the sine-wave is the basic issue in designing snake robot
Hardware Configuration of the Proposed Architecture An embedded computer system with LEGO sensors and actuators. The PCI 104 is an embedded computer standard and commonly used with LEGO systems
Proposed Software Architecture RT-Linux Dual Kernel Architecture. Architecture supports both real-time and non-real time tasks execution
Multi-Threaded Synchronization To emulate the snake behavior, threads and semaphores are used. The program uses maximum N (1≤k≤N) number of threads. The wave movement of the snake is realized by understanding the relationship between two adjacent sections, k and k+1 Threads and semaphores were used to synchronize this relationship between two adjacent sections. In the present approach, N numbers of threads are required in a robot with N sections
Wave-like Movement Initial Position Initial Calibration Thread Section End Calibration Sequence of robot unit movements in different modules of the program.
Program Modules (Motori, ASensori,Speedj, SIGN*Anglek, Dir) Basic Model (Motori, ASensori,Speedj, SIGN*Anglek, Dir) Initial Calibration Motor1, ASensor1,Speed1, -Angle1, Right Motor2, ASensor2,Speed2, +Angle2, Left Motor3, ASensor3,Speed3, -Angle3, Right Motor4, ASensor4,Speed4, +Angle4, Left Thread Execution Phase Motor1, ASensor1,Speed1, +2*Angle11, Left Motor2, ASensor2,Speed2, -2*Angle21, Right Motor3, ASensor3,Speed3, +2*Angle31, Left Motor4, ASensor4,Speed4, -2*Angle41, Right Motor1, ASensor1,Speed1, -2*Angle12, Right Motor2, ASensor2,Speed2, +2*Angle22, Left Motor3, ASensor3,Speed3, -2*Angle32, Right Motor4, ASensor4,Speed4, +2*Angle42, Left End Calibration phase Motor1, ASensor1,Speed1, +Angle1, Left Motor2, ASensor2,Speed2, -Angle2, Right Motor3, ASensor3,Speed3, +Angle3, Left Motor4, ASensor4,Speed4, -Angle4, Right
Implementation: LEGO Snake Robot Sensors: 4-Angle sensors Actuators: 4 motors, connected to each snake unit. There are total 4 units with motors Robot Direction: (Head)4-3-2-1(Tail)
Pseudo-Code Main Program Thread(k) Thread(k+1) main ( ){ initialize_motors_sensors (); initial__calibration (); initialize_semaphores (); thread_section_1 (); …. thread_section_N(); semaphore_destroy (); end_ calibration(); } //Thread for Section_k start_section_k () { while (1) { sem_wait(&sem_k+1); set_rotation_handler (angle_sensor(S (k, p)), 2*ASValue) run_motor(S (k, p), R, SPEED); set_rotation_handler(angle_sensor(S (k, p+1)), 2*ASValue) run_motor(S (k, p+1), L, SPEED); sem_post(&semk); } thread_exit(NULL); Main Program //Thread for Section k+1 start_section_k+1() { while (1){ sem_wait(&sem_k); set_rotation_handler (angle_sensor(S (k+1, p)), 2*ASValue) run_motor(S (k+1, p), R, SPEED); set_rotation_handler (angle_sensor(S (k+1, p+1)), 2*ASvalue) run_motor(S (k+1, p+1), L, SPEED); sem_post(&sem_k+1); } thread_exit(NULL); Thread(k) Thread(k+1)
Verification: Different Robot Movements AS Value(7.a) 3 AS Value(7.b) 9 AS Value(7.c) 12 6 AS Value(7.d) Table: Angle sensor values for different robot movements. Figure: Different types of snake locomotion generated with different angle sensor values (a) Rectilinear (b) Serpentine (c) and (d) Concertina Angle rotation sensor. 20 count =90 Degrees 5 count = 22.5 degree
Advantages of the Proposed Architecture Controllability The ‘S’, ‘O’ (Circular), rectilinear, serpentine and concertina shaped movements can be easily generated using the angle sensor. The angle sensor connected to the each robot unit enhanced the total controllability of the snake robot. The speed of the robot can be changed dynamically. Also, different sections can be operated with different speeds. Reusability The present model can be easily extended to N number of sections. Each section module act as a reusable component. Performance In case of physical damage/failure of any section, the robot continues to work without effecting the robot behavior or total robot failure. Flexibility Compared to mechanical or microprocessor based robots, the programming modeled robots are more flexible in terms of control, user understandability and real-time implementation. Also the necessary intelligence can be provided easily with program support. Cost The robot’s behavior can be easily modified using the present programming model without adding any additional physical components.
Conclusion Each unit or sections of robot operates independently. Our purpose is to create a model which can be used in many real-life applications and to realize multithreaded concurrent programming. The wave-like movement of snake is effectively generated by using programming constructs like semaphores and threads with effective use of angle sensors. Present programming model can be applied to robots where complex concurrent locomotion is an absolute requirement.
Q & A
Thank You