This package provides the function to control all models of Doosan robots in the ROS2(Foxy) environment.
※ Currently, ROS2 related packages are being updated rapidly to Humble.
Doosan packages will also be updated from time to time and features will be upgraded.
Doosan Robotics Unveils Industry's First ROS Package that Supports ROS 2 Foxy Fitzroy
### Prerequisite installation elements before package installation
$ sudo apt-get install libpoco-dev
### We assume that you have installed the ros-foxy-desktop package using the apt-get command.
### We recommand the /home/<user_home>/ros2_ws/src
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/src
$ git clone https://github.com/doosan-robotics/doosan-robot2.git
$ git clone https://github.com/ros-controls/ros2_control.git
$ git clone https://github.com/ros-controls/ros2_controllers.git
$ git clone https://github.com/ros-simulation/gazebo_ros2_control.git
$ cd ros2_control && git reset --hard 3dc62e28e3bc8cf636275825526c11d13b554bb6 && cd ..
$ cd ros2_controllers && git reset --hard 83c494f460f1c8675f4fdd6fb8707b87e81cb197 && cd ..
$ cd gazebo_ros2_control && git reset --hard 3dfe04d412d5be4540752e9c1165ccf25d7c51fb && cd ..
$ git clone -b ros2 --single-branch https://github.com/ros-planning/moveit_msgs
$ cd ~/ros2_ws
$ colcon build
$ . install/setup.bash
$ sudo apt-get install ros-foxy-control-msgs ros-foxy-realtime-tools ros-foxy-xacro ros-foxy-joint-state-publisher-gui ros-foxy-object-recognition-msgs ros-foxy-octomap-msgs ros-foxy-gazebo-ros ros-foxy-gazebo-ros-pkgs ros-foxy-control-toolbox
It can be run independently without a controller.
Using the robot model and the joint_state_publisher_gui
package, you can see the robot moving on Rviz.
$ ros2 launch dsr_launcher2 dsr_joint_state_pub.launch.py model:=a0912 color:=blue
If the "mode" argument is set to virtual, the DRCF emulator is automatically executed when launch.py is executed.
You can execute the Control Node by using the command below.
$ ros2 launch dsr_launcher2 single_robot_rviz.launch.py model:=a0912 color:=blue
The robot can be driven by using the example scripts included in the dsr_example2 package. Check that the controller and robot are connected normally, and enter the command below.
$ ros2 run dsr_example2_py dsr_service_motion_simple
Use real mode to drive a real robot
The default IP of the robot controller is 192.168.127.100 and the port is 12345.
$ ros2 launch dsr_launcher2 single_robot_rviz.launch.py mode:=real host:=192.168.127.100 port:=12345
The robot can be driven by using the example scripts included in the dsr_example2 package. Check that the controller and robot are connected normally, and enter the command below.
$ ros2 run dsr_example2_py dsr_service_motion_simple
The dsr_launcher2 package contains the launch.py file that can link control node, rviz, and gazebo. Therefore, it is necessary to connect with a real robot controller or emulator before executing the launch file. Simulation can be performed with the command below.
$ ros2 launch dsr_launcher2 single_robot_rviz.launch.py
$ ros2 launch dsr_launcher2 single_robot_gazebo.launch.py
To use the moveit2 package, you need to install the following packages.
$ cd ~/ros2_ws/src
$ git clone https://github.com/ros-planning/moveit2
$ git clone -b ros2 --single-branch https://github.com/ros-planning/warehouse_ros
$ git clone -b ros2 --single-branch https://github.com/ros-planning/warehouse_ros_mongo
$ git clone -b ros2 --single-branch https://github.com/ros-planning/srdfdom
$ git clone -b ros2 --single-branch https://github.com/ros-planning/geometric_shapes
$ git clone -b use_new_joint_handle https://github.com/ShotaAk/fake_joint
Please do the additional work below to build a fake_joint package that is compatible with our ROS2 package.
$ cd ~/ros2_ws/src
$ cp doosan-robot2/common2/resource/fake_joint_driver_node.cpp fake_joint/fake_joint_driver/src/fake_joint_driver_node.cpp
You can install the dependency package through the command below.
$ cd ~/ros2_ws
$ rosdep install -r --from-paths src --ignore-src --rosdistro foxy -y
$ rm -rf src/doosan-robot2/moveit_config_*/COLCON_IGNORE # Command to activate the moveit package before colcon build
$ colcon build
$ . install/setup.bash
You can run moveit2 with fake_controller from the moveit_config package. Please refer to the command format below.
ros2 launch moveit_config_<robot_model> <robot_model>.launch.py
$ ros2 launch moveit_config_m1013 m1013.launch.py
Moveit2 can be executed in conjunction with the control node. Enter the following command to use moveit2's planning function in conjunction with the actual robot. Refer to the arguments of the Run dsr_control2 node item mentioned above.
$ ros2 launch dsr_control2 dsr_moveit2.launch.py