This project simulate the human arm movement from the shoulder to wrist that was 3D visualized by RVIZ in ROS2.
- User installation guide
- Methodology
- System architecture
- User guide
- Demos and Result
- Conclusion
- Future plan
- Developer Member
Ensure you have the following dependencies installed
Middle ware
ROS2 Humble
Python Library
roboticstoolboxspatialmathnumpyscipypygame
Clone this workspace
git clone https://github.com/PoFamily/human_arm_ws.gitIt was a paratemter the describe positioning of Joint and the table below is our MDH-Parameter of the human arm model.
| Joint | ||||
|---|---|---|---|---|
| 1 | 0.0 | 0.0 | ||
| 2 | 0.0 | 0.0 | ||
| 3 | 0.0 | 0.0 | ||
| 4 | 0.4 | 0.0 | ||
| 5 | 0.0 | 0.4 | ||
| 6 | 0.0 | 0.0 | ||
| 7 | 0.0 | 0.0 |
Use to find movement velocity of each joint by using Pseudoinverse method of Jacobian matrix by this equation
Define
-
$\dot{q}$ represent velocity in each joint -
$\dot{x}$ represent velocity of end-effector -
$J^{\dagger}(q)$ represent Pseudoinverse method of Jacobian matrix of each joint that was at angle q
And
By
Define
-
$J$ represent Jacobian matrix at each joint at any angle of q
Find Joint Effort from equation of Static Force by this equation
Define
-
$\tau$ represent Joint Efort Value -
$w$ represent Wrench value that effect to the end-effector
System seperate the work into sub-node that work differently 4 node considt of
-
Input_node is a node that display UI for input value to control movement of the model and display joint effort value from the calculation
-
Controller_node is a node that command the control to working in various by recieve input from Input_node and then send the command to Jointstate_node
-
Jointstate_node is a node that command movement of each joint from the Controller_node
-
Joint_state_publisher is a node for control movement of the model that display on the RVIZ
After Clone workspace then Build and source
cd human_arm_ws/
colcon build
source install/setup.bash
Run the simulation in ROS2
Run controller system
ros2 launch human_arm_simulation human_arm_controller.launch.py
Run Input UI
ros2 run human_arm_simulation input_node.py
Able to input data 2 ways
- Input configulation space of each joint by using slide bar or Input the value int the box (As shown in the picture 1)
- Input task space value of the target by input the value in the box (As shown in the picture 2)
Able to input data 2 ways
- Input task space value of the target by input the value in the box (As shown in the picture 3)
- Input wrench value that effect to end-effector in each axis by input value in each box and the result of the joint effort calculation will be on the side (As shown in the picture 4)
Usage Step
- Select Move Mode on the top which Mode you want to use MoveJ or MoveL
- Specify the value to move
- Click Move or Calculate
Able to use call service in various format of ROS2 to call by the structure of each service as follows

DemoVDO.mp4
Simulation the movement of the human arm using ROS2 Humble and use various python libraries for instance roboticstoolbox, spatialmath, numpy, scipy and pygame for the user interface. This simulation simulate the human arm from the shoulder to the wrist. And 3D visualized by RVIZ in ROS2 that can control manually by input or using the user interface for the easier use.
But the thing that we have not been done is Test and Validate compare to the real human arm so it will be in our future plans.
- Test the movement of the simulation system against a real human arm to find the limitations to make the simulation system move as realistically as possible.
- Add more precise limitations of the Joint limit in all movement modes.
- Add control in the form of Trajectory to make the simulation system move to the target position more smoothly.
- Add a simulation system in the hand part to get a more complete simulation of the human arm movement.
- Waritthon Kongnoo
- Chayanat Lertwittayanuruk
- Chawaphon Wachiraniramit
- Kraiwich Vichakhot


