This is the official repository of MARA modular robot, world's first modular cobot. MARA is the first robot which runs ROS 2.0 on each joint empowering new possibilities and applications in the professional and industrial landscapes of robotics. Built out of individual modules that natively run ROS 2.0, the modular robot arm can be physically extended in a seamless manner. MARA delivers industrial-grade features such as time synchronization or deterministic communication latencies.
Among other things, you will find in this repository instructions on how to simulate and control MARA in Gazebo Simulator or on the real robot.
-
Powered by ROS 2.0: a fully distributed software and hardware robotic architecture.
-
Highly customizable: with daisy chaining, power and communication are exposed at the module level allowing for simplified extensions.
-
Real time data monitoring: every H-ROS module is able to monitorize a variety of intrinsic aspects in real-time.
-
Power readings: instantaneous voltage, current and power readings from each module, individually.
-
Automatic re-configuration: embedded accelerometers, magnetometers and gyroscopes empower each module with inertial data.
-
HW and SW life cycle: life cycle for each module allows greater control over the state of the ROS 2.0 system and the underlying components.
-
Controllable from any ROS 2.0 enabled computer: ORC is the ideal complement for MARA, but not mandatory. Choose yourself how you steer MARA.
Spec | Value |
---|---|
Degrees of freedom | 6 DoF, extensible |
Maximum speed | 90º/s |
Repeatability | ±0.1 mm |
Rated torque | 9.4/30/49 Nm |
Payload | 3 Kg |
Weight | 21 Kg |
Height | 871 mm |
Reach | 656 mm |
Footprint | 204 mm |
Robotics framework | ROS 2.0 Dashing Diademata |
Communication interfaces | 1 Gbps Ethernet, Compliant with TSN standards |
Information model | Hardware Robot Information Model (HRIM®), version Coliza |
Security | Encrypted and secure computing environment, Secure data exchange capabilities |
Automatic updates | Over-the-Air (OTA) |
Datasheet | Download datasheet |
In this section we will install all the necessary dependencies in order to be able to launch MARA.
hros_cognition_mara_components
: Transformations between JointTrajectory messages and module specific HRIM messages.individual_trajectories_bridge
: Bridge to connect ROS and ROS 2.0.mara_bringup
: roslaunch scripts for starting the MARA.mara_contact_publisher
: ROS 2.0 publisher to know if a collision takes place.mara_description
: 3D models of the MARA for simulation and visualization.mara_gazebo
: Gazebo simulation package for the MARA.mara_gazebo_plugins
: MARA Gazebo plugins for sensors and motors.mara_utils_scripts
: Some scripts to move the MARA or spawn the model.
- ROS 2.0 Dashing: following the official instructions, source or debian packages. Make sure that you have colcon in your machine if you are installing from Debian packages.
sudo apt install python3-colcon-common-extensions
- Gazebo 9.9.0.
- Install the latest available version of Gazebo via one-liner instructions. Lower versions like 9.0.0 will not work. Additional information is available here.
curl -sSL http://get.gazebosim.org | sh
- Install the latest available version of Gazebo via one-liner instructions. Lower versions like 9.0.0 will not work. Additional information is available here.
- ROS 2 extra packages
sudo apt update && sudo apt install -y \
ros-dashing-rttest \
ros-dashing-rclcpp-action \
ros-dashing-gazebo-dev \
ros-dashing-gazebo-msgs \
ros-dashing-gazebo-plugins \
ros-dashing-gazebo-ros \
ros-dashing-gazebo-ros-pkgs
sudo apt install -y \
python3-pip python3-vcstool python3-numpy wget python3-pyqt5 python3-colcon-common-extensions git
Create the workspace and download source files:
mkdir -p ~/ros2_mara_ws/src
cd ~/ros2_mara_ws
wget https://raw.githubusercontent.com/acutronicrobotics/MARA/dashing/mara-ros2.repos
vcs import src < mara-ros2.repos
Install and generate HRIM dependencies:
cd ~/ros2_mara_ws/src/HRIM
sudo pip3 install hrim
hrim generate models/actuator/servo/servo.xml
hrim generate models/actuator/gripper/gripper.xml
Please make sure you are not sourcing ROS workspaces via .bashrc
or any other way.
source /opt/ros/dashing/setup.bash
cd ~/ros2_mara_ws && colcon build --merge-install --packages-skip individual_trajectories_bridge
Installation completed! Now make sure you check the Examples section! Or follow the MoveIt! installation.
MoveIt! is well known motion planning framework in the robotics community. MoveIt! allows to leverage different motion planners as well evaluate concepts such as manipulation, 3D perceptions, kinematics control and navigation in easy, user friendly way. While MoveIt2! is not released (we are actively developing and contributing towards that effort), we provide the option to use ROS MoveIt! through bridges.
Continue the following steps to complete the MoveIt! installation.
ROS and MoveIt! are required if you want to use ìndividual_trajectories_bridge
to control the MARA, which means using ROS Melodic with MoveIt through bridges.
-
ROS melodic: following the official instructions, source or debian_packages.
Dependent tools:
# ROS extra packages sudo apt update && sudo apt install -y \ ros-melodic-xacro \ ros-melodic-rviz \ ros-melodic-control-msgs \ ros-melodic-robot-state-publisher
-
MoveIt!: Install the following ROS debian packages.
sudo apt install -y \ ros-melodic-moveit \ ros-melodic-moveit-ros-move-group \ ros-melodic-moveit-visual-tools ros-melodic-moveit-simple-controller-manager
Compile the trajectory bridge located in the workspace using ROS as source.
source /opt/ros/melodic/setup.bash
cd ~/ros2_mara_ws && colcon build --merge-install --packages-select individual_trajectories_bridge
# Building ROS 1 creates conflicts with this ROS 2.0 workspace. Next line ensures the workspace is completely ROS 2.0.
sed -i 's#/opt/ros/melodic#/opt/ros/dashing#g' ~/ros2_mara_ws/install/setup.bash
Compile the MARA_ROS1 packages.
mkdir -p ~/catkin_mara_ws/src
cd ~/catkin_mara_ws/src
git clone -b dashing https://github.com/AcutronicRobotics/MARA_ROS1
cd ~/catkin_mara_ws/
catkin_make_isolated --install
Complementary information is available in our documentation's simulation section.
source ~/ros2_mara_ws/install/setup.bash
ros2 launch mara_gazebo mara.launch.py
Optionally, you can launch a different versions of MARA robot using the --urdf
flag to indicate the desired urdf to be spawned:
ros2 launch mara_gazebo mara.launch.py --urdf mara_robot_gripper_140
Available urdfs: mara_robot_gripper_140
, mara_robot_gripper_140_no_table
, mara_robot_gripper_85
, mara_robot_gripper_hande
, two_mara_robots
and two_mara_robots_gripper_140_no_table
First, you will need to launch MARA in Gazebo in another terminal.
3D model visualization via robot_description topic will be supported in the upcoming ROS2 Dashing debian packages (Rviz2 Issue). We recommend to compile RViz from sources in the meantime.
source ~/rviz2_ws/install/setup.bash
source ~/ros2_mara_ws/install/setup.bash
rviz2 -d `ros2 pkg prefix mara_description`/share/mara_description/rviz/visualization.rviz
Alternatively, instead of using the robot_description
topic, you can load the 3D model manually selecting the URDF file in the RobotModel section of RViz.
Motion planning, manipulation, 3D perception, kinematics, control and navigation through brigdes.
Plan trajectories in a virtual environment with Gazebo and MoveIt!.
source ~/catkin_mara_ws/devel_isolated/setup.bash
roslaunch mara_bringup mara_bringup_moveit_actions.launch
If you have used a different urdf in the Terminal 1, you will need to use urdf:=
to launch the same one:
roslaunch mara_bringup mara_bringup_moveit_actions.launch urdf:=mara_robot_gripper_140
In case you have launched two robots, you will need to add multiple_robots:=true
Source catkin_mara_ws and ros2_mara_ws:
source ~/catkin_mara_ws/devel_isolated/setup.bash
source ~/ros2_mara_ws/install/setup.bash
Run the bridge:
ros2 run individual_trajectories_bridge individual_trajectories_bridge_actions -motors ~/ros2_mara_ws/src/mara/hros_cognition_mara_components/config/motors.yaml sim
If you have launched two mara robots, you will have to run the bridge in the following way:
ros2 run individual_trajectories_bridge individual_trajectories_bridge_actions -motors ~/ros2_mara_ws/src/mara/hros_cognition_mara_components/config/two_motors.yaml sim
Plan trajectories in a real environment with MoveIt!.
source /opt/ros/dashing/setup.bash
cd ~/ros2_mara_ws && colcon build --merge-install --packages-select hros_cognition_mara_components
source /opt/ros/melodic/setup.bash
cd ~/catkin_mara_ws && catkin_make_isolated --install --pkg mara_bringup
source ~/ros2_mara_ws/install/setup.bash
# you will need to change the export values according to the SoMs configuration when running on the real robot.
export RMW_IMPLEMENTATION=rmw_opensplice_cpp
export ROS_DOMAIN_ID=22
ros2 launch mara_bringup mara.launch.py
If your real robot has any extra component or you want to control more than one robot, you will need to set the --urdf
flag to indicate the urdf that corresponds to your real robot (environment):
ros2 launch mara_bringup mara.launch.py --urdf mara_robot_gripper_140
Available urdfs: mara_robot_gripper_140
, mara_robot_gripper_140_no_table
, mara_robot_gripper_85
, mara_robot_gripper_hande
, two_mara_robots
and two_mara_robots_gripper_140_no_table
source ~/catkin_mara_ws/devel_isolated/setup.bash
roslaunch mara_bringup mara_bringup_moveit_actions.launch env:=real
If you have used a different urdf in the Terminal 1, you will need to use urdf:=
to launch the same one:
roslaunch mara_bringup mara_bringup_moveit_actions.launch env:=real urdf:=mara_robot_gripper_140
If case you want to control two robots you will need to add multiple_robots:=true
Source catkin_mara_ws and ros2_mara_ws, and export RMW_IMPLEMENTATION
and ROS_DOMAIN_ID
:
source ~/catkin_mara_ws/devel_isolated/setup.bash
source ~/ros2_mara_ws/install/setup.bash
# you will need to change the export values according to the SoMs configuration, same as in Terminal 1
export RMW_IMPLEMENTATION=rmw_opensplice_cpp
export ROS_DOMAIN_ID=22
Run the bridge:
ros2 run individual_trajectories_bridge individual_trajectories_bridge_actions -motors ~/ros2_mara_ws/src/mara/hros_cognition_mara_components/config/motors.yaml real
If you have two mara robots, you will have to run the bridge in the following way:
ros2 run individual_trajectories_bridge individual_trajectories_bridge_actions -motors ~/ros2_mara_ws/src/mara/hros_cognition_mara_components/config/two_motors.yaml real
If you need help with MARA's real robot or its simulation, feel free to raise an issue here.