10#include <viam/sdk/common/grpc_fwd.hpp>
11#include <viam/sdk/common/pose.hpp>
12#include <viam/sdk/common/proto_convert.hpp>
13#include <viam/sdk/common/utils.hpp>
14#include <viam/sdk/common/world_state.hpp>
15#include <viam/sdk/components/component.hpp>
17#include <viam/sdk/resource/resource.hpp>
18#include <viam/sdk/rpc/dial.hpp>
19#include <viam/sdk/services/service.hpp>
26class FrameSystemConfig;
57 friend std::ostream& operator<<(std::ostream& os,
const status& v);
61 ProtoStruct kinematics;
68 boost::optional<std::string> session_id;
69 ProtoStruct arguments;
70 boost::optional<time_pt> started;
94 static std::shared_ptr<RobotClient>
at_address(
const std::string& address,
110 std::vector<Name> resource_names()
const;
125 template <
typename T>
131 return std::dynamic_pointer_cast<T>(
resource_by_name({API::get<T>(),
"", std::move(name)}));
137 const std::vector<WorldState::transform>& additional_transforms = {});
149 std::string destination,
150 const std::vector<WorldState::transform>& additional_transforms = {});
161 void stop_all(
const std::unordered_map<Name, ProtoStruct>& extra);
174 void log(
const std::string& name,
175 const std::string& level,
176 const std::string& message,
184 void connect_logging();
186 void refresh_every();
188 std::thread refresh_thread_;
189 std::atomic<bool> should_refresh_;
190 std::chrono::seconds refresh_interval_;
195 std::unique_ptr<impl> impl_;
197 mutable std::mutex lock_;
199 std::vector<Name> resource_names_;
203namespace proto_convert_details {
Defines the gRPC receiving logic for a module. C++ module authors can construct a ModuleService and u...
Definition service.hpp:30
A name for specific instances of resources.
Definition resource_api.hpp:61
Defines a resource manager for use by anything that tracks resources.
Definition resource_manager.hpp:22
gRPC client for a robot, to be used for all interactions with a robot. There are two ways to instanti...
Definition client.hpp:46
static std::shared_ptr< RobotClient > at_local_socket(const std::string &address, const Options &options)
Creates a robot client connected to the robot at the provided local socket.
std::shared_ptr< Resource > resource_by_name(const Name &name)
Lookup and return a shared_ptr to a resource.
pose_in_frame transform_pose(const pose_in_frame &query, std::string destination, const std::vector< WorldState::transform > &additional_transforms={})
Transform a given Pose to a new specified destination which is a reference frame.
std::vector< frame_system_config > get_frame_system_config(const std::vector< WorldState::transform > &additional_transforms={})
Get the configuration of the frame system of the given robot.
void close()
Disconnect this robot client from any robot to which it is connected. After calling this method it is...
void stop_all()
Cancel all operations for the robot and stop all actuators and movement.
static std::shared_ptr< RobotClient > at_address(const std::string &address, const Options &options)
Create a robot client connected to the robot at the provided address.
void block_for_operation(std::string id)
Blocks on the specified operation of the robot, returning when it is complete.
void cancel_operation(std::string id)
Cancel a specified operation on the robot.
std::vector< operation > get_operations()
Get the list of operations currently running on a robot.
std::shared_ptr< T > resource_by_name(std::string name)
Lookup and return a shared_ptr to a resource of the requested type.
Definition client.hpp:130
void stop_all(const std::unordered_map< Name, ProtoStruct > &extra)
Cancel all operations for the robot and stop all actuators and movement.
static std::shared_ptr< RobotClient > with_channel(ViamChannel channel, const Options &options)
Creates a robot client connected to the provided channel.
void refresh()
Call out to the robot to see if there are any new resources that need to be registered....
status get_machine_status() const
gets the current status of the machine
status
the current status of the robot
Definition client.hpp:51
Defines the resource registry and associated types.
Definition log_backend.hpp:18
Definition proto_convert.hpp:24