Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Other issue]: full control error when we send another level task point to the robot #379

Open
1 task done
Sizen007 opened this issue Jul 27, 2023 · 5 comments
Open
1 task done

Comments

@Sizen007
Copy link

Before proceeding, is there an existing issue or discussion for this?

Description

Bug log is below

[rmf_task_dispatcher-1] [INFO] [1690445748.475783084] [rmf_dispatcher_node]: Received Task Submission [Photo2] [rmf_task_dispatcher-1] [INFO] [1690445748.475885316] [rmf_dispatcher_node]: Add Task [Photo2] to a bidding queue [full_control-9] [from FleetUpdateHandle ] generate photo requests [full_control-9] [INFO] [1690445748.579082801] [DaystarRobots_fleet_adapter]: Generated Photo request for task_id:[Photo2] [full_control-9] [INFO] [1690445748.579324042] [DaystarRobots_fleet_adapter]: Planning for [1] robot(s) and [1] request(s) [ERROR] [full_control-9]: process has died [pid 185, exit code -11, cmd '/root/server_ws/install/rmf_fleet_adapter/lib/rmf_fleet_adapter/full_control --ros-args -r __node:=DaystarRobots_fleet_adapter --params-file /tmp/launch_params_tso8329k --params-file /tmp/launch_params_fnpq0vj1 --params-file /tmp/launch_params_pp_7ga18 --params-file /tmp/launch_params_m6p4lbye --params-file /tmp/launch_params_fa_70jv4 --params-file /tmp/launch_params_rk6mfklc --params-file /tmp/launch_params_zdxavi0t --params-file /tmp/launch_params_ortiy6u4 --params-file /tmp/launch_params_6mgp6r2s --params-file /tmp/launch_params_56b1n6qf --params-file /tmp/launch_params_m02i7uai --params-file /tmp/launch_params_hwcdrce0 --params-file /tmp/launch_params_shi5xasd --params-file /tmp/launch_params_m7ad6rma --params-file /tmp/launch_params_9bwkrf2z --params-file /tmp/launch_params_o4bayi33 --params-file /tmp/launch_params_r7n2xq9h --params-file /tmp/launch_params__bgtu4k3 --params-file /tmp/launch_params_wfizfn2r --params-file /tmp/launch_params_5xooj1j9 --params-file /tmp/launch_params_j7gxn4ju --params-file /tmp/launch_params_cykwi1bj --params-file /tmp/launch_params_nwmuf_un --params-file /tmp/launch_params_1zbqlion --params-file /tmp/launch_params_stbluyft --params-file /tmp/launch_params_n8708z14 --params-file /tmp/launch_params_8b4cyuwb --params-file /tmp/launch_params_c_36267j --params-file /tmp/launch_params_5qiaprpb --params-file /tmp/launch_params_rjzb9iow']. [rmf_task_dispatcher-1] [INFO] [1690445748.778220007] [rmf_dispatcher_node]: Test 333 [rmf_task_dispatcher-1] [WARN] [1690445748.778303822] [rmf_dispatcher_node]: Dispatcher Bidding Result: task [Photo2] has no submissions during bidding, Task Failed

Below is my project.building.yaml

crowd_sim:
agent_groups:
- {agents_name: [], agents_number: 0, group_id: 0, profile_selector: external_agent, state_selector: external_static, x: 0, y: 0}
agent_profiles:
- {ORCA_tau: 1, ORCA_tauObst: 0.4, class: 1, max_accel: 0, max_angle_vel: 0, max_neighbors: 10, max_speed: 0, name: external_agent, neighbor_dist: 5, obstacle_set: 1, pref_speed: 0, r: 0.25}
enable: 0
goal_sets: []
model_types: []
obstacle_set: {class: 1, file_name: L1_navmesh.nav, type: nav_mesh}
states:
- {final: 1, goal_set: -1, name: external_static, navmesh_file_name: ""}
transitions: []
update_time_step: 0.1
graphs:
{}
levels:
L1:
drawing:
filename: /root/maps/map-Jul20/L1.png
elevation: 0
fiducials:
- [168.112, 176.195, F1]
- [182.539, 154.75, F2]
- [209.443, 160.599, F3]
flattened_x_offset: 0
flattened_y_offset: 0
lanes:
- [5, 6, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], orientation: [1, ""]}]
- [4, 6, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], orientation: [1, ""]}]
- [3, 4, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], orientation: [1, ""]}]
- [4, 7, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], orientation: [1, ""]}]
layers:
{}
measurements:
- [0, 1, {distance: [3, 1]}]
vertices:
- [0, 0, 0, m1]
- [0, 10, 0, m2]
- [-18.9, 18.9, 0, origin]
- [168.166, 196.236, 0, map-Jul20_L1_p5]
- [182.974, 178.553, 0, map-Jul20_L1_p2]
- [199.605, 190.019, 0, charge, {is_charger: [4, true]}]
- [193.651, 186.026, 0, home]
- [200, 157.4, 0, map-Jul20_L1_p3, {lift_cabin: [1, LF001]}]
L2:
drawing:
filename: /root/maps/lenovoF8/L1.png
elevation: 0
fiducials:
- [256.243, 588.8390000000001, F1]
- [259.255, 539.895, F2]
- [305.941, 515.799, F3]
flattened_x_offset: 0
flattened_y_offset: 0
lanes:
- [3, 4, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], orientation: [1, ""]}]
layers:
{}
measurements:
- [0, 1, {distance: [3, 1]}]
vertices:
- [0, 0, 0, m1]
- [0, 20, 0, m2]
- [-13.3, 56.3, 0, origin]
- [276.273, 498.022, 0, lenovoF8_L1_charge, {is_charger: [4, true]}]
- [299.554, 535.7, 0, "", {lift_cabin: [1, LF001]}]
lifts:
LF001:
depth: 1
doors:
door1:
door_type: 2
motion_axis_orientation: 0
width: 1
x: 0
y: 0.5
door2:
door_type: 2
motion_axis_orientation: 0
width: 1
x: 0
y: 0.5
highest_floor: L2
initial_floor_name: L1
level_doors:
L1: [door1]
L2: [door1]
lowest_floor: L1
plugins: true
reference_floor_name: L1
width: 1
x: 200
y: 157.4
yaw: 0
name: project

below is the nav graph generate by this project.building.yaml

building_name: project
levels:
L1:
lanes:
- - 0
- 1
- {}
- - 1
- 0
- {}
- - 2
- 1
- {}
- - 1
- 2
- {}
- - 3
- 2
- {}
- - 2
- 3
- {}
- - 2
- 4
- {}
- - 4
- 2
- {}
vertices:
- - 1.060500000000001
- -0.1019000000000041
- {is_charger: true, name: charge}
- - 0.4651000000000032
- 0.2973999999999961
- {name: home}
- - -0.6025999999999989
- 1.0446999999999989
- {name: map-Jul20_L1_p2}
- - -2.0833999999999975
- -0.7236000000000011
- {name: map-Jul20_L1_p5}
- - 1.1000000000000014
- 3.1599999999999966
- {lift: LF001, lift_cabin: LF001, name: map-Jul20_L1_p3}
L2:
lanes:
- - 0
- 1
- {}
- - 1
- 0
- {}
vertices:
- - -16.278444896757062
- 27.98020880144979
- {is_charger: true, name: lenovoF8_L1_charge}
- - -16.40634909121198
- 25.76938720540436
- {lift_cabin: LF001, name: ''}

I am not sure whether my project.building.yaml is right. For the tasks across floors, I have never succeed. However, for the tasks on the same floor, it works well.

@Sizen007 Sizen007 reopened this Jul 27, 2023
@Sizen007
Copy link
Author

not solved

@Yadunund
Copy link
Member

Could you share the task request that your submitted?

@Sizen007
Copy link
Author

Could you share the task request that your submitted?

I modified a task type named Photo.

below is the msg type in rmf_task_msg
`string task_id

rmf_dispenser_msgs/DispenserRequestItem[] items

string camera_type
string photo_type
string photo_place_name
string photo_upload_dir
float64[] photo_poses
float64 desired_yaw
float64[] position
float64[] orientation
`
It has three phases. The first one is "GotoPlace" the original type in RMF. The second one is "PhotoPhase" which plays photo actions.

By the way, could you please tell me if my "project.building.yaml" is right for across floor tasks?

@Sizen007
Copy link
Author

Sizen007 commented Jul 27, 2023

Could you share the task request that your submitted?

Below is my code part. Thanks for your replay.

`auto photo = std::make_shared();
photo->photo_place_name = task._rqt_point_info.point_name;

  for(const auto &pose : task._rqt_point_info.ptz){
    photo->photo_poses.push_back(pose);
    std::cout<<"ptz pose: "<<pose<<std::endl;
  }

  std::string pic_file_path;
  pic_file_path = generate_pic_name(_plan_start_time, task._rqt_point_info.device_id, "CCD",_task_patrolled_id);
  // update photo dir
  task._rqt_point_info.upload_photo_dir = pic_file_path;

  photo->photo_upload_dir = pic_file_path;
  photo->camera_type = task._rqt_point_info.camera_type;
  photo->photo_type = task._rqt_point_info.photo_type;

  // position
  for(const auto &pos : task._rqt_point_info.nav_position){
    std::cout<<"pos: "<<pos<<std::endl;
    photo->position.push_back(pos);
  }
  
  // orientation
  for(const auto &ori :  task._rqt_point_info.nav_orientation){
    std::cout<<"ori: "<<ori<<std::endl;
    photo->orientation.push_back(ori);
  }

  task_description->priority.value = 0;
  task_description->task_type.type = TaskType::TYPE_PHOTO;
  task_description->start_time.sec = rclcpp::Time().seconds();
  task_description->photo = *photo;

  request->description = *task_description;
  request->requester = "TaskSubmitClientId";

  // call server
  try {
    auto result = _submit_task_client->async_send_request(request);
    auto response = result.get();
    if(response->success){
        RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "New Dispatch task_id: %s",
            response->task_id.c_str());
            _rms_task_id_map.insert(std::pair<std::string, RMSTask>(response->task_id.c_str(), task));
            _current_task_id_map.push_back(response->task_id.c_str());
            _task_goal_map.insert(std::pair<std::string, std::string>(response->task_id.c_str(), task._rqt_point_info.point_name));
    }else{
        RCLCPP_INFO(this->get_logger(), "Failed to call service %s",
          response->task_id.c_str());
    }

  } catch (const std::exception &e) {
    std::cerr << e.what() << '\n';
  }`

@Sizen007
Copy link
Author

Could you share the task request that your submitted?

Actually, this task type can work well when the task point is on the same floor as the robot. However, when I ask the robot to go to another floor to do the photo task , the full control node died. So I guess maybe the different floors donot have the connection relationship. As a result, I added lift between these two floors which you can find in my "project.building.yaml", but i am not sure whehter I added correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants