ArmUs is a 5 axis robot made to reproduce movement and goemetry of a real human arm. It's made by a team of 6 sherbrooke university undergraduates. The goal is to eventually add a robotic hand at the end and be able to control the whole arm-hand assembly by moving your arm.
At this stage, the arm can be controled either in joint or in cartisian mode and can be visualized and calibrated in real time, it also supports software protection, torque limiters to reduce risks and a simulation mode for test purposes.
Control interface (HMI)
To open a package's documentation, open the index.html file found in it's "/doc" folder in your browser. Ex:
firefox ~/catkin_ws/src/arm_us/arm_us/doc/html/index.html
Start by installing ubuntu 20.04 desktop Focal Fossa on your machine (VM or dualboot), dualboot is highly recommended.
Install ROS-Noetic by following this tutorial
Edit your bashrc
sudo nano ~/.bashrc
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash
ctrl+s
ctrl+x
Setup your catkin_ws by following this tutorial
Clone all the arm_us packages from this git repo to your catkin_ws/src folder
Install all the dependencies:
Dependencies
Run these commands to install packages available in rosdep:
sudo apt install ros-noetic-joy
Some packages need to be cloned directly from GitHub as they aren't maintained in rosdep, to clone them,
cd ~/catkin_ws/src
git clone https://github.com/csiro-robotics/dynamixel_interface.git
git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
Once all dependencies are installed, don't forget to compile your workspace
cd ~/catkin_ws/
catkin_make
Setup your OpenCR in bridge mode
sudo chmod a+rw /dev/ttyACM0
The OpenCR board is now in bridge mode. We will be able to control it directly from the Serial Port
For the robot's assembly, follow the README.md in /Mechanics.
Open a terminal and launch the first launchfile:
roslaunch arm_us 1_interface.launch
This will start the HMI and the communication with the motors. Calibrate the robot by following this guide.
Once ArmUs is calibrated, launch the 2nd launchfile
roslaunch arm_us 2_control.launch
This will enable the torque on the motors and enable the control with the controller, you should now be able to control the motors with your controller in joint or cartesian as you wish (see [keybinding]https://github.com/CharloLeRigolo/arm_us/blob/main/Photos/Keybindings%20Cartesian%20(En).PNG)
Before killing your node, if you want to keep your calibration values, run this command
rosparam dump **yourpath**/calib.yaml
and copy the lines under "motor_translator:" in the config file arm_us/config/joint_limit.yaml.
There are 4 packages in ArmUs:
1_interface.launch
2_control.launch
Param:
Nodes:
Service:
Information for msg, srv and action files can be found directly in the arm_us_msg package
Messages
Consists of an array of float64s of length 5 named angle that represents the angles of the joints in degrees
It is used to send the joint angles in degrees from the motor translator to the master node, where it is then sent back to the inverse kinematic service node to control the arm in cartesian mode, and to the graph node to visualize the position of the arm in real time in Rviz.
Consists of an int8 named current_joint that represents the current joint controlled, and another int8 named current_mode, which represents the current movement mode.
It is used to send the current joint controlled and the current movement mode to the Gui node so that the user can see in real time the information.
Consists of an array of booleans of length 5 named joint_limits that indicates if any of the joints reached their limits.
It is used by the motor translator to send information to the Gui to indicate if any joint limits are reached.
Services
MIT Licence