This repository contains the configuration and setup for Kassow Kord control, which demonstrates the use of a b»controlled box for robotic tasks.
Warning
This repository is under heavy development. If some links break or if some instruction do not lead to a smooth experience, please contact the developers.
This package provides a software solution for controlling Kassow Kord Robot (KR810) using KORD interface. It integrates with ros2_control and provides motion planning capabilities.
Primary Capabilities:
- Control of Kassow KR810 collaborative robots through a custom hardware interface and Joint Trajectory Controller
- Multi-robot setup to control both real and simulated robot simultaneously or independently on b»controlled box.
- Integration with MoveIt 2 for motion planning and trajectory execution
Developer Notes
- This workspace is setup for single or double arm control. We use prefix to specify all joints, joint limits, srdf, controller names and so on. Better not touch the prefixes, but if you do prepare to update moveit configs and controllers.yaml
- single arm:
kassowprefix is used. - dual arm:
kassow_leftfor sim andkassow_rightfor robot prefixes are used.
- single arm:
Package Structure
├── kassow_kord_bringup — # Bringup package containing launch files and configs for running all package capabilities
│ ├── config # YAML configuration files for control
│ ├── launch # Launch files to start drivers, controllers, MoveIt and RViz
│ │ ├── kassow_kord_bringup_mock.launch.xml # Launch the single-arm stack with mock hardware for development and testing
│ │ ├── kassow_kord_cm.launch.xml # Running Controller Manager locally in case of not using CtrlX for single-arm mode
│ │ ├── kassow_kord_description.launch.xml # Load URDF and RSP nodes for single-arm
│ │ ├── kassow_kord_dual_arm_bringup_mock.launch.xml # Launch the dual-arm setup using mock hardware for simulation/testing
│ │ ├── kassow_kord_dual_arm_cm.launch.xml # Running Controller Manager locally in case of not using CtrlX for dual-arm mode
│ │ ├── kassow_kord_dual_arm_description.launch.xml # Load URDF and RSP nodes for dual-arm setups
│ │ ├── kassow_kord_dual_arm_moveit.launch.xml # Start MoveIt2 for the dual-arm configuration
│ │ ├── kassow_kord_moveit.launch.xml # Start MoveIt2 for single-arm configuration
│ │ ├── test_joint_trajectory_controller.launch.xml # Launch a test setup for the Joint Trajectory Controller (useful for CI/local testing)
│ │ ├── view_kr810_dual_arm.launch.xml # RViz visualization launch file configured for dual-arm robot viewing
│ │ └── view_kr810.launch.xml # RViz visualization launch file configured for single-arm robot viewing
│ ├── moveit_config # MoveIt2 configuration packages
│ ├── scripts # Utility scripts to activate/deactivate hardware and load controllers
│ ├── srdf # SRDF files that define motion parameters for MoveIt
│ └── urdf # URDF and ros2 control /XACRO robot descriptions
├── kassow_kord_hardware_interface # Custom ros2_control hardware interface implementation for Kassow Kord robots
├── kassow_kord_description # Standalone package containing URDF/xacro description
├── kassow_kord_driver.jazzy.repos # vcs/repos file listing related repositories to clone into the workspace (used with vcs import)
└── README.mdPlease first refer to kassow manual for installation steps. This guide covers the port setup for Kassow robots. This configuration is essential for enabling real-time communication between the robot controller and the b»Controlled Box
-
Install ros_team_workspace: https://rtw.b-robotized.com/master/tutorials/setting_up_rtw.html
-
Create a workspace (e.g.
kassow_kord_ws): https://rtw.b-robotized.com/master/use-cases/operating_system/create_setup_workspace.html#uc-setup-workspace
-
Make sure you have
python3-vcstoolinstalled:sudo apt update
-
From the root of your workspace (e.g.,
/kassow_kord_ws-> easily direct to ws folder with the commandrosd), run:vcs import src < kassow_kord_driver.jazzy.reposThis will clone all repositories listed in the
kassow_kord_driver.jazzy.reposfile into thesrcdirectory.
-
Update rosdep
rosdep update
-
Install dependencies
rosdepi
-
Use
rtwto build the workspace:cb
-
After building, source the workspace:
source install/setup.bash
-
Recoommended IP addresses and ports:
- Robot: 10.23.23.204:28283
- Sim: 10.23.23.205:28284
-
Configure ports (instruction at robot setup) - two robots cannot have the same ports.
-
Edit ip addresses and ports to your setup: in the following files:
kassow_kord_driver/kassow_kord_bringup/launch/kassow_kord_dual_arm_description.launch.xmlkassow_kord_driver/kassow_kord_bringup/launch/kassow_kord_description.launch.xml
Now your development container should be ready for use.
-
First terminal:
ros2 launch kassow_kord_bringup kassow_kord_bringup_mock.launch.xml start_rviz:=false
-
Second terminal:
ros2 launch kassow_kord_bringup kassow_kord_moveit.launch.xml
-
Echo in a terminal the output of the
activitytopic from b»controlled box to observe its internal state.ros2 topic echo /b_controlled_box_cm/activity -
To start the robot driver on the b»controlled box, choose one of the following:
a. Run on kassow simulation
ros2 launch kassow_kord_bringup kassow_kord_description.launch.xml use_mock_hardware:=false ip_address:=10.23.23.205 port:=28284
b. Run on kassow robot
ros2 launch kassow_kord_bringup kassow_kord_description.launch.xml use_mock_hardware:=false ip_address:=10.23.23.204 port:=28283
Note: ensure MotionApp is in state
RUNNINGbefore activating hardware.Now you should see output on the
activitywithunconfiguredhardware interfaces. -
In a new terminal, load the controllers, activate the hardware and enable control. Execute the commands form the
scriptsfolder.rosd kassow_kord_bringup && cd scripts # enter the correct folder ./activate_kassow_robot.bash # follow the output on the activity topic
Now you should see output on the
activitywithactivehardware interfaces and controllers. -
Start path planner (MoveIt2) and visualization (RViz 2):
ros2 launch kassow_kord_bringup kassow_kord_moveit.launch.xml
MoveIt and visualisation can be started as soon as the hardware is active and Joint State Broadcaster is activeated.
-
Now you can move the robot around either with moveit rviz plugin with motion planning, or you can directly use JTC CLI or rqt:
ros2 run rqt_joint_trajectory_controller rqt_joint_trajectory_controller- To stop the drivers of the robot that are running on b»controlled box use the following command:
./deactivate_kassow_robot.bash # follow the output on the activity topic
-
First terminal:
ros2 launch kassow_kord_bringup kassow_kord_dual_arm_bringup_mock.launch.xml start_rviz:=false
-
Second terminal:
ros2 launch kassow_kord_bringup kassow_kord_dual_arm_moveit.launch.xml
-
Echo in a terminal the output of the
activitytopic from b»controlled box to observe its internal state.ros2 topic echo /b_controlled_box_cm/activity -
To start the robot driver on the b»controlled box, choose one of the following:
ros2 launch kassow_kord_bringup kassow_kord_dual_arm_description.launch.xmlNote: ensure MotionApp is in state RUNNING before activating hardware.
Now you should see output on the activity with unconfigured hardware interfaces.
-
In a new terminal, load the controllers, activate the hardware and enable control. Execute the commands form the
scriptsfolder.rosd kassow_kord_bringup && cd scripts # enter the correct folder ./activate_hardware.sh # follow the output on the activity topic ./activate_controllers.sh # follow the output on the activity topic
Now you should see output on the
activitywithactivehardware interfaces and controllers. -
Start path planner (MoveIt2) and visualization (RViz 2):
ros2 launch kassow_kord_bringup kassow_kord_dual_arm_moveit.launch.xml
MoveIt and visualisation can be started as soon as the hardware is active and Joint State Broadcaster is activeated.
-
Now you can move the robot around either with moveit rviz plugin with motion planning, or you can directly use JTC CLI or rqt:
ros2 run rqt_joint_trajectory_controller rqt_joint_trajectory_controller- To stop the drivers of the robot that are running on b»controlled box use the following command:
./deactivate_dual_arm.bash # follow the output on the activity topic
- https://www.kassowrobots.com/downloads/product-manuals
- https://kassowrobots.gitlab.io/kord-api-doc/index.html
- https://gitlab.com/kassowrobots/kord-api
- No effort states when connecting to the simulated Kassow Controller.
Make sure that the IP addresses are set correctly and you can ping the robot.
Stop, remove, re-add, and activate the CBun by making sure the parameters are correct. We have observed that after CBun was already activated and port is changed, the new port was not applied even after re-activation.
Make sure that only one KORD interface is loaded and active.


