- shebangin' on that python3 the way the ubuntu gods intended
- fake roscontrol interface in radians
- deleted a wayward cmakelists in the root that called the roskinetic catkin cmake...? colcon wouldnt build it so I got rid of it.
- fixed a missing return in drflex.h
- reduced publisher and subscriber buffering to 1 message in /command topics.
- installed python library DSR_ROBOT so there no more relative import horrors
- added a realtime example (untested!)
-
Watch out for the emulator not coming up fast enough for the driver to connect to it, get around that by running it a priori:
rosrun common run_dcrf_noetic.sh
-
I didnt really read too hard when I converted the command to radians, so it could break other services.That's a future bryan problem.
-
Ros control interface is faked for commands:
dsr_hw_interface.cpp does this on line 732:
m_sub_joint_position = private_nh_.subscribe("dsr_joint_position_controller/command", 10, &DRHWInterface::positionCallback, this);
and of course DRHWInterface::positionCallback just calls amovej() on line 1067:
Drfl.amovej(target_pos.data(), 50, 50);
- write a velocity interface using RT components.
- tweak the RT services so that they can time out, seeing as how UDP is stateless and those commands can simply disappear into the void.
Doosan ROS Video
Doosan ROS Online Lecture(Kor)
Doosan ROS Online Lecture(Eng)
### We recoomand 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 kinetic -r -y
cd ~/catkin_ws
catkin_make
source ./devel/setup.bash
sudo apt-get install ros-kinetic-rqt* ros-kinetic-moveit* ros-kinetic-industrial-core ros-kinetic-gazebo-ros-control ros-kinetic-joint-state-controller ros-kinetic-effort-controllers ros-kinetic-position-controllers ros-kinetic-ros-controllers ros-kinetic-ros-control ros-kinetic-serial
packages for mobile robot
sudo apt-get install ros-kinetic-lms1xx ros-kinetic-interactive-marker-twist-server ros-kinetic-twist-mux ros-kinetic-imu-tools ros-kinetic-controller-manager ros-kinetic-robot-localization
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
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
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
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
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
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
roslaunch dsr_launcher dsr_moveit_gazebo.launch
sudo apt-get install ros-kinetic-moveit-commander
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
> 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)
If you don`t have real doosan controller, you must execute emulator before run dsr_launcer.
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
roslaunch dsr_launcher multi_robot_rviz.launch
roslaunch dsr_launcher multi_robot_gazebo.launch model:=m0609
roslaunch dsr_launcher multi_robot_rviz_gazebo.launch
<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
<launch>
- multi robot in rviz :
roslaunch dsr_launcher multi_robot_rviz.launch
- multi robot in gazebo :
roslaunch dsr_launcher multi_robot_gazebo.launch
- multi robot in rviz + gazebo :
roslaunch dsr_launcher multi_robot_rviz_gazebo.launch
<run application node>
rosrun dsr_example_py multi_robot_simple.py
<ex>
roslaunch dsr_launcher multi_robot_rviz_gazebo.launch
rosrun dsr_example_py multi_robot_simple.py
$ roslaunch dsr_launcher multi_robot_rviz_gazebo.launch
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'
insert argument mobile:=husky
- single robot on mobile
roslaunch dsr_launcher single_robot_rviz.launch mobile:=husky
<run application node>
rosrun dsr_example_py single_robot_mobile.py
$ roslaunch dsr_launcher single_robot_rviz mobile:=husky color:=blue
- multi robot on mobile
roslaunch dsr_launcher multi_robot_rviz.launch mobile:=husky
<run application node>
rosrun dsr_example_py multi_robot_mobile.py
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>
roslaunch dsr_launcher multi_robot_rviz.launch
rostopic pub /dsr01m1013/joint_position_controller/command std_msgs/Float64MultiArray "layout:
dim:
- label: ''
size: 0
stride: 0
data_offset: 0
data: [10, 10, 40, 10, 60, 10]"
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"