Пакеты для запуска на роботе UR5
Используется для проекта UR5_TrajOpt
Структура проекта:
├── scripts
└── src
├── camera_pub
├── gripper_move
├── pkgs_for_datasets
└── ur5_info
Пояснения:
- scripts - пользовательские bash-скрипты для запуска определенных сценариев на роботе.
- src/camera_pub - пакет для трансляции изображений с камер робота.
- src/gripper_move - пакет для управления гриппером.
- src/pkgs_for_datasets - пакеты для сбора датасета с робота.
- src/ur5_info - пакет для управления роботом (позволяет управлять роботом без запуска основного проекта UR5_TrajOpt).
Важная информация по роботу
На роботе установлен ROS Melodic.
Путь до проекта на роботе: /home/administrator/rubleva/ur5_husky_api
. Все пакеты из этой папки необходимо загрузить на робота и запустить их.
Пакеты для сбора датасета лежат здесь: pkgs_for_datasets
Перед запуском ur5_info.launch
нужно поменять ip робота в файле или передавать ip аргументом robot_ip:="127.0.0.1"
.
Проект ur5_husky_api
можно использовать для:
- запуска необхолдимых функций на роботе (трансляция изображений с камеры, управление гриппером);
- автономного управления манипулятором без подключения основного проекта UR5_TrajOpt.
1. Запуск необходимых пакетов на роботе
1.0. Запустить все одним файлом
cd /home/administrator/rubleva/ur5_husky_api
catkin build
source devel/setup.bash
roslaunch ur5_run ur5_run.launch
1.1. Отдельное подключение камеры
Чтобы работал просмотр с камер, необходимо:
- На роботе запустить publisher:
cd /home/administrator/rubleva/ur5_husky_api
catkin build
source devel/setup.bash
roslaunch camera_pub camera.launch
- Запустить на отдельном компьютере ноду для просмотра изображений с камер.
1.2. Отдельное подключение гриппера
- На роботе запустить publisher:
cd /home/administrator/rubleva/ur5_husky_api
catkin build
source devel/setup.bash
roslaunch gripper_move gripper.launch
- С другого компьютера отправлять данные для управления гриппером.
1.3. Отдельное подключение камеры глубины для детектирования объектов
- На роботе запустить publisher:
cd /home/administrator/rubleva/ur5_husky_api
catkin_make --cmake-args \
-DCMAKE_BUILD_TYPE=Release \
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so
source devel/setup.bash
roslaunch camera_pub detect_obj_in_gripper.launch
2. Автономное управление роботом UR5
1 терминал
cd /home/administrator/rubleva/ur5_husky_api
catkin_make
source devel/setup.bash
roslaunch ur5_info ur5_info.launch
или roslaunch ur5_info ur5_info.launch robot_ip:="127.0.0.1"
2 терминал
Вызвать сервисы для управления гриппером или для управления манипулятором
а) Управление гриппером
cd ~/rubleva/ur5_husky_api
source devel/setup.bash
rostopic pub /gripper_angle gripper_move/GripperAngle "angle: 0.0" --once
Минимальное положение гриппера - 0, максимальное - 0.085
б) Управление манипулятором
cd ~/rubleva/ur5_husky_api
source devel/setup.bash
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[]], delay: [], gripperAngle: 0.0}" --once
ВАЖНО!!! position и delay - передавать массивы одинаковой длины
Примеры команд
// схватить куб:
rostopic pub /gripper_angle gripper_move/GripperAngle "angle: 0.04" --once
// отпустить куб:
rostopic pub /gripper_angle gripper_move/GripperAngle "angle: 0.085" --once
// робот берет куб слева с пола:
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[2.326473,-0.553581,1.686786,-2.687753,-1.561592,-0.000419]], delay: [0], gripperAngle: 0.0}" --once
// робот в максимально сложенном положении (смотрит вниз):
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.606798,-3.091649,2.827192,-1.962667,-1.436540,-0.000551]], delay: [0], gripperAngle: 0.0}" --once
// робот в сложенном состоянии смотрит вперед:
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.595672, -2.871760, 2.799204, -3.072348,-1.581982, 0.000120]], delay: [0], gripperAngle: 0.0}" --once
// робот смотрит на куб:
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.4775620698928833, -1.6089142004596155, 1.1463332176208496, -1.400895897542135, -1.5800517241107386, 0.00013182648399379104]], delay: [0], gripperAngle: 0.0}" --once
// робот у пола хвватает куб:
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.0789810419082642, -0.5552123228656214, 1.9236936569213867, -3.0894487539874476, -1.5335939566241663, 0.0014620755100622773]], delay: [0], gripperAngle: 0.0}" --once
// робот в положении, из которого скидывает куб:
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.4775620698928833, -1.3088954130755823, 1.4463391304016113, -2.300877873097555, -1.5800159613238733, 0.00014381069922819734]], delay: [0], gripperAngle: 0.0}" --once
// передать 2 положения:
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.4775620698928833, -1.3088954130755823, 1.4463391304016113, -2.300877873097555, -1.5800159613238733, 0.00014381069922819734], position:[1.0789810419082642, -0.5552123228656214, 1.9236936569213867, -3.0894487539874476, -1.5335939566241663, 0.0014620755100622773]], delay: [0,0], gripperAngle: 0.0}" --once
Положение Даниила
1.59592, -2.8721300000000003, 2.67727, -2.96106, -1.4762199999999996, 0.00031159000000000004
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.59592, -2.8721300000000003, 2.67727, -2.96106, -1.4762199999999996, 0.00031159000000000004]], delay: [0], gripperAngle: 0.085}" --once
================= 24 rosbag record /tf /tf_static /realsense_gripper/color/camera_info /realsense_gripper/color/image_raw/compressed /realsense_gripper/aligned_depth_to_color/camera_info /realsense_gripper/aligned_depth_to_color/image_raw /zed_node/left/camera_info /zed_node/left/image_rect_color/compressed /zed_node/depth/camera_info /zed_node/depth/depth_registered /velodyne_points /occupancy_grid_map/grid_map /arm/1/joint_states /gripper_angle /gripper/1/joint_states /zed_node/right_raw/image_raw_color/compressed /zed_node/left_raw/image_raw_color/compressed /zed_node/right_raw/camera_info /zed_node/left_raw/camera_info
================= 24 rosbag record /tf /tf_static /realsense_gripper/color/camera_info /realsense_gripper/color/image_raw/compressed /realsense_gripper/aligned_depth_to_color/camera_info /realsense_gripper/aligned_depth_to_color/image_raw /zed_node/left/camera_info /zed_node/left/image_rect_color/compressed /zed_node/depth/camera_info /zed_node/depth/depth_registered /arm/1/joint_states /gripper_angle /gripper/1/joint_states /zed_node/right_raw/image_raw_color/compressed /zed_node/left_raw/image_raw_color/compressed /zed_node/right_raw/camera_info /zed_node/left_raw/camera_info
rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[]], delay: [0], gripperAngle: 0.085}" --once rostopic pub move_robot_delay_gripper ur5_info/MoveUR5WithGripper "{positions: [position:[1.5958999395370483, -2.8721306959735315, 2.677290439605713, -2.9610708395587366, -1.4761622587787073, 0.00028762139845639467]], delay: [0], gripperAngle: 0.085}" --once
////////////////// 11.10
rosbag record /aruco_localizator_v2/objects
/command_robotiq_action/feedback
/command_robotiq_action/result
/command_robotiq_action/status
/current_pose
/husky_velocity_controller/odom
/object_pose
/pick_up_object/cancel
/pick_up_object/goal
/put_object/cancel
/put_object/goal
/segmentation_labels
/tf
/tf_static
/state/arm/0/arm_state
/joint_states
/tracked_objects_3d
Subscriptions:
- /aruco_localizator_v2/objects [unknown type]
- /command_robotiq_action/feedback [robotiq_2f_gripper_msgs/CommandRobotiqGripperActionFeedback]
- /command_robotiq_action/result [robotiq_2f_gripper_msgs/CommandRobotiqGripperActionResult]
- /command_robotiq_action/status [actionlib_msgs/GoalStatusArray]
- /current_pose [unknown type]
- /husky_velocity_controller/odom [nav_msgs/Odometry]
- /object_pose [husky_tidy_bot_cv/ObjectPose]
- /pick_up_object/cancel [actionlib_msgs/GoalID]
- /pick_up_object/goal [communication_msgs/PickupObjectActionGoal]
- /put_object/cancel [actionlib_msgs/GoalID]
- /put_object/goal [communication_msgs/PutObjectActionGoal]
- /segmentation_labels [husky_tidy_bot_cv/Categories]
- /tf [tf2_msgs/TFMessage]
- /tf_static [tf2_msgs/TFMessage]
- /tracked_objects_3d [husky_tidy_bot_cv/Objects3d]