17 #ifndef MUJIN_CONTROLLERCLIENT_BINPICKINGTASK_H
18 #define MUJIN_CONTROLLERCLIENT_BINPICKINGTASK_H
21 #include <boost/property_tree/ptree.hpp>
22 #include <boost/thread.hpp>
27 namespace mujinclient {
36 boost::property_tree::ptree GetResultPtree()
const;
72 boost::property_tree::ptree
_pt;
74 virtual void Parse(
const boost::property_tree::ptree& pt) = 0;
81 void Parse(
const boost::property_tree::ptree& pt);
85 std::map<std::string, Transform>
tools;
91 void Parse(
const boost::property_tree::ptree& pt);
101 void Parse(
const boost::property_tree::ptree& pt);
108 virtual ~ResultGetBinpickingState();
109 void Parse(
const boost::property_tree::ptree& pt);
136 void Parse(
const boost::property_tree::ptree& pt);
142 void Parse(
const boost::property_tree::ptree& pt);
149 void Parse(
const boost::property_tree::ptree& pt);
156 void Parse(
const boost::property_tree::ptree& pt);
165 void Parse(
const boost::property_tree::ptree& pt);
170 std::map<std::string, RobotResource::AttachedSensorResource::SensorData>
msensordata;
176 void Parse(
const boost::property_tree::ptree& pt);
189 virtual void Initialize(
const std::string& defaultTaskParameters,
const double commandtimeout=0,
const std::string& userinfo=
"{}",
const std::string& slaverequestid=
"");
202 virtual void Initialize(
const std::string& defaultTaskParameters,
const int zmqPort,
const int heartbeatPort, boost::shared_ptr<zmq::context_t> zmqcontext,
const bool initializezmq=
false,
const double reinitializetimeout=10,
const double commandtimeout=0,
const std::string& userinfo=
"{}",
const std::string& slaverequestid=
"");
205 virtual boost::property_tree::ptree ExecuteCommand(
const std::string& command,
const double timeout =0.0,
const bool getresult=
true);
208 virtual void MoveJoints(
const std::vector<Real>& jointvalues,
const std::vector<int>& jointindices,
const Real envclearance,
const Real speed ,
ResultMoveJoints& result,
const double timeout =0);
209 virtual void GetTransform(
const std::string& targetname,
Transform& result,
const std::string& unit=
"mm",
const double timeout =0);
210 virtual void SetTransform(
const std::string& targetname,
const Transform& transform,
const std::string& unit=
"mm",
const double timeout =0);
211 virtual void GetManipTransformToRobot(
Transform& result,
const std::string& unit=
"mm",
const double timeout =0);
212 virtual void GetManipTransform(
Transform& result,
const std::string& unit=
"mm",
const double timeout =0);
214 virtual void GetAABB(
const std::string& targetname,
ResultAABB& result,
const std::string& unit=
"mm",
const double timeout=0);
215 virtual void GetOBB(
ResultOBB& result,
const std::string& targetname,
const std::string& linkname=
"",
const std::string& unit=
"mm",
const double timeout=0);
216 virtual void GetInnerEmptyRegionOBB(
ResultOBB& result,
const std::string& targetname,
const std::string& linkname=
"",
const std::string& unit=
"mm",
const double timeout=0);
226 virtual void UpdateObjects(
const std::string& basename,
const std::vector<Transform>& transformsworld,
const std::vector<std::string>& confidence,
const std::string& state,
const std::string& unit=
"mm",
const double timeout =0);
233 virtual void InitializeZMQ(
const double reinitializetimeout = 0,
const double timeout =0);
243 virtual void AddPointCloudObstacle(
const std::vector<Real>& vpoints,
const Real pointsize,
const std::string& name,
const unsigned long long starttimestamp=0,
const unsigned long long endtimestamp=0,
const bool executionverification=
false,
const std::string& unit=
"mm",
int isoccluded=-1,
const double timeout =0);
245 virtual void UpdateEnvironmentState(
const std::string& objectname,
const std::vector<DetectedObject>& detectedobjects,
const std::vector<Real>& vpoints,
const std::string& resultstate,
const Real pointsize,
const std::string& pointcloudobstaclename,
const std::string& unit=
"mm",
const double timeout=0);
254 virtual void VisualizePointCloud(
const std::vector<std::vector<Real> >& pointslist,
const Real pointsize,
const std::vector<std::string>& names,
const std::string& unit=
"m",
const double timeout =0);
258 virtual void ClearVisualization(
const double timeout =0);
264 virtual void IsRobotOccludingBody(
const std::string& bodyname,
const std::string& sensorname,
const unsigned long long starttime,
const unsigned long long endtime,
bool& result,
const double timeout =0);
269 virtual void GetPickedPositions(
ResultGetPickedPositions& result,
const std::string& unit=
"m",
const double timeout =0);
277 virtual void GetInstObjectAndSensorInfo(
const std::vector<std::string>& instobjectnames,
const std::vector<std::string>& sensornames,
ResultGetInstObjectAndSensorInfo& result,
const std::string& unit=
"m",
const double timeout =0);
284 virtual void GetBinpickingState(
ResultGetBinpickingState& result,
const std::string& robotname,
const std::string& unit=
"m",
const double timeout =0);
292 virtual void GetPublishedTaskState(
ResultGetBinpickingState& result,
const std::string& robotname,
const std::string& unit=
"m",
const double timeout =0);
302 virtual void SetJogModeVelocities(
const std::string& jogtype,
const std::vector<int>& movejointsigns,
const std::string& robotname =
"",
const std::string& toolname =
"",
const double robotspeed = -1,
const double robotaccelmult = -1.0,
const double timeout=1);
311 virtual void MoveToolLinear(
const std::string& goaltype,
const std::vector<double>& goals,
const std::string& robotname =
"",
const std::string& toolname =
"",
const double robotspeed = -1,
const double timeout = 10);
320 virtual void MoveToHandPosition(
const std::string& goaltype,
const std::vector<double>& goals,
const std::string& robotname =
"",
const std::string& toolname =
"",
const double robotspeed = -1,
const double timeout = 10);
326 virtual void _HeartbeatMonitorThread(
const double reinitializetimeout,
const double commandtimeout);
329 virtual const std::string& GetSlaveRequestId()
const;
339 boost::shared_ptr<zmq::context_t> _zmqcontext;
359 std::string
GetJsonString(
const std::vector<std::string>& vec);
365 std::string
GetJsonString(
const std::string& key,
const std::string& value);
366 std::string
GetJsonString(
const std::string& key,
const int value);
367 std::string
GetJsonString(
const std::string& key,
const unsigned long long value);
376 void UpdateObjects(
SceneResourcePtr scene,
const std::string& basename,
const std::vector<BinPickingTaskResource::DetectedObject>& detectedobjects,
const std::string& unit=
"m");
383 std::string GetHeartbeat(
const std::string& endpoint);
385 std::string GetScenePkFromHeatbeat(
const std::string& heartbeat);
386 std::string GetSlaveRequestIdFromHeatbeat(
const std::string& heartbeat);