cmu-rss-lab / rosdiscover-evaluation

Image Creation and Evaluation Infrastructure for ROS Discover
MIT License
2 stars 0 forks source link

[Husky-01] Reproduce on working system #89

Open schmerl opened 3 years ago

schmerl commented 3 years ago

The misconfiguration is in spawn_husky.launch. In the working system, it turns to be in realsense.launch.

Looking at the node model for pointcloud_to_laserscan_node, we do not capture the topic for this during static analysis. See: ros_ws/src/pointcloud_to_laserscan/src/pointcloud_to_laserscan_node.cpp:

  private_nh.param<int>("concurrency_level", concurrency_level, 0);

  nodelet::Loader nodelet;
  nodelet::M_string remap(ros::names::getRemappings());
  nodelet::V_string nargv;
  std::string nodelet_name = ros::this_node::getName();
  nodelet.load(nodelet_name, "pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet", remap, nargv);

Probably we don't handle nodelet.load.

schmerl commented 3 years ago

Note that I am trying to reproduce this on the husky:0.4.10 image.

ChrisTimperley commented 3 years ago

This is a tricky one to solve. It's not really a case of missing publisher/subscriber calls. nodelet::Loader::load is loading the plugin for a given node at runtime. To deal with this case, we would want to capture and symbolically represent calls to that API method (e.g., LoadNodelet(:[name], :[type])). On the C++ side, I don't think that should be too much trouble. On the ROSDiscover side, we would need to add an ability to load nodelets (and ensure the right semantics) as part of the interpreter.

This is definitely solvable by the paper deadline, but is more of a "medium" difficulty.