Doosan Robotics
Precautions
Features not currently supported
Robotiq description cannot be called on gazebo simulation.
Mobile (Husky) simulation not available
Does not support the use of multi robots (only supports single robots)
overview
Doosan ROS Video
Doosan ROS Online Lecture(Kor)
Doosan ROS Online Lecture(Eng)
build
Doosan Robot ROS Package is implemented at ROS-Noetic.
### We recommand the /home/<user_home>/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/doosan-robotics/doosan-robot
rosdep install --from-paths doosan-robot --ignore-src --rosdistro noetic -r -y
##### Serial Package source build
### Noetic distro does not support serial package, so you have to install it manually.
cd ~/catkin_ws/src
git clone https://github.com/wjwwood/serial.git
cd ~/catkin_ws
catkin_make
source ./devel/setup.bash
package list
sudo apt-get install ros-noetic-rqt* ros-noetic-moveit* ros-noetic-gazebo-ros-control ros-noetic-joint-state-controller ros-noetic-effort-controllers ros-noetic-position-controllers ros-noetic-ros-controllers ros-noetic-ros-control ros-noetic-joint-state-publisher-gui ros-noetic-joint-state-publisher
usage
Operation Mode
Virtual Mode
If you are driveing without a real robot, use virtual mode
When ROS launches in virtual mode, the emulator(DRCF) runs automatically.
(DRCF) location: doosan-robot/common/bin/ DRCF
roslaunch dsr_launcher single_robot_gazebo.launch mode:=virtual
One emulator is required for each robot
Real Mode
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.
roslaunch dsr_launcher single_robot_gazebo.launch mode:=real host:=192.168.127.100 port:=12345
dsr_description
roslaunch dsr_description m0609.launch
roslaunch dsr_description m1013.launch color:=blue # Change Color
roslaunch dsr_description m1509.launch gripper:=robotiq_2f # insert robotiq gripper
roslaunch dsr_description m0617.launch color:=blue gripper:=robotiq_2f # change color & insert robotiq gripper
roslaunch dsr_description a0509.launch
$ roslaunch dsr_description m1013.launch
- In dsr_description, the user can use joint_state_publisher to move the robot.
- Joint_state_publisher
$ roslaunch dsr_description m0617.launch color:=blue gripper:=robotiq_2f
dsr_moveit_config
arguments
color:= ROBOT_COLOR <white / blue> defalut = white
roslaunch moveit_config_m0609 m0609.launch
roslaunch moveit_config_m0617 m0617.launch
roslaunch moveit_config_m1013 m1013.launch color:=blue
roslaunch moveit_config_m1509 m1509.launch
roslaunch moveit_config_a0509 a0509.launch
dsr_control (default model:= m1013, default mode:= virtual)
arguments
host := ROBOT_IP defalut = 127.0.0.1 port := ROBOT_PORT default = 12345
mode := OPERATION MODE <virtual / real> defalut = virtual
model := ROBOT_MODEL <m0609 / 0617 / m1013 / m1509 / a0509 / a0912 / h2017 / h2515> defalut = m1013
color := ROBOT_COLOR <white / blue> defalut = white
gripper := USE_GRIPPER <none / robotiq_2f> defalut = none
mobile := USE_MOBILE <none / husky> defalut = none
dsr_moveit
roslaunch dsr_launcher dsr_moveit.launch
roslaunch dsr_launcher dsr_moveit.launch model:=m0609 mode:=virtual
roslaunch dsr_launcher dsr_moveit.launch model:=m0617 mode:=virtual
roslaunch dsr_launcher dsr_moveit.launch model:=m1013 mode:=virtual
roslaunch dsr_launcher dsr_moveit.launch model:=m1509 mode:=virtual
roslaunch dsr_launcher dsr_moveit.launch model:=a0509 mode:=virtual
dsr_moveit + gazebo
roslaunch dsr_launcher dsr_moveit_gazebo.launch
How to use MoveIt Commander
You can run Moveit with CLI commands through the moveit commander package.
You can install the "moveit_commander" package using below command.
sudo apt-get install ros-noetic-moveit-commander
MoveitCommander usage example
roslaunch dsr_launcher dsr_moveit.launch model:=m1013
In another terminal
ROS_NAMESPACE=/dsr01m1013 rosrun moveit_commander moveit_commander_cmdline.py robot_description:=/dsr01m1013/robot_description
moveit commander CLI is executed.
> use arm
> goal0 = [0 0 0 0 0 0] # save the home position to variable "goal0"
> goal1 = [0 0 1.57 0 1.57 0] # save the target position to varialbe "goal1" / radian
> go goal1 # plan & excute (the robot is going to move target position)
> go goal0 # paln & excute (the robot is going to move home position)
dsr_launcher
If you don`t have real doosan controller, you must execute emulator before run dsr_launcer.
arguments
host:= ROBOT_IP defalut = 127.0.0.1 ##controller IP = 192.168.127.100 port:= ROBOT_PORT default = 12345
mode:= OPERATION MODE <virtual / real> defalut = virtual
model:= ROBOT_MODEL <m0609 / m0617 / m1013 / m1509 / a0509> defalut = m1013
color:= ROBOT_COLOR <white / blue> defalut = white
gripper:= USE_GRIPPER <none / robotiq_2f> defalut = none
mobile:= USE_MOBILE <none / husky> defalut = none
roslaunch dsr_launcher single_robot_rviz.launch host:=127.0.0.1 port:=12345 mode:=virtual model:=m1013 color:=blue gripper:=none mobile:=none
roslaunch dsr_launcher single_robot_gazebo.launch host:=192.168.127.100
roslaunch dsr_launcher single_robot_rviz_gazebo.launch gripper:=robotiq_2f mobile:=husky
dsr_example
single robot
<launch>
- single robot in rviz :
roslaunch dsr_launcher single_robot_rviz.launch model:=m1013 color:=white
- single robot in gazebo :
roslaunch dsr_launcher single_robot_gazebo.launch model:=m1013 color:=blue
- single robot in rviz + gazebo :
roslaunch dsr_launcher single_robot_rviz_gazebo.launch model:=m1013 color:=white
<run application node>
rosrun dsr_example_py single_robot_simple.py dsr01 m1013
<ex>
roslaunch dsr_launcher single_robot_rviz_gazebo.launch model:=m1013 color:=white
rosrun dsr_example_py single_robot_simple.py
$ roslaunch dsr_launcher single_robot_rviz_gazebo.launch
robot + gripper
insert argument gripper:=robotiq_2f
- single robot + gripper
roslaunch dsr_launcher single_robot_rviz.launch gripper:=robotiq_2f
<run application node>
rosrun dsr_example_py pick_and_place_simple.py
- Serial Test(Loopback)
rosrun serial_example_node serial_example_node ttyUSB0 115200
rostopic echo /serial_read
rostopic pub /serial_write std_msgs/String 'data: 100'
gazebo+rviz+virtual
roslaunch dsr_launcher single_robot_rviz_gazebo.launch
rosrun dsr_example_py single_robot_simple.py
<include file="$(find dsr_gazebo)/launch/dsr_base.launch">
<arg name="ns" value="dsr01"/> # Robot ID
<arg name="model" value="m1013"/> # Robot Model
<arg name="host" value="192.168.127.100"/> # Robot IP
<arg name="port" value="12345"/> # Robot Port
<arg name="mode" value="virtual"/> # Robot Controller Mode
# Position & Posture in Gazebo
<arg name="x" value="2"/>
<arg name="y" value="-4"/>
<arg name="yaw" value="0.7"/>
</include>
<include file="$(find dsr_gazebo)/launch/dsr_base.launch">
<arg name="ns" value="dsr02"/> # Secondary Robot ID
<arg name="model" value="m1013"/> # Secondary Robot Model
<arg name="host" value="192.168.127.102"/> # Secondary Robot IP
<arg name="port" value="12346"/> # Robot Port
<arg name="mode" value="virtual"/> # Secondary Robot Controller Mode
# Secondary Position & Posture in Gazebo
<arg name="x" value="2"/>
<arg name="y" value="-4"/>
<arg name="yaw" value="0.7"/>
</include>
Service Call
rosservice call /dsr01m1013/motion/move_joint "pos: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
vel: 0.0
acc: 0.0
time: 0.0
radius: 0.0
mode: 0
blendType: 0
syncType: 0"