sas
Modularised monitoring, logging, and control of robots.
Toggle main menu visibility
Loading...
Searching...
No Matches
sas_robot_driver_coppeliasim.hpp
Go to the documentation of this file.
1
#pragma once
2
/*
3
# Copyright (c) 2016-2025 Murilo Marques Marinho
4
#
5
# This file is part of sas_robot_driver_coppeliasim.
6
#
7
# sas_robot_driver_coppeliasim is free software: you can redistribute it and/or modify
8
# it under the terms of the GNU Lesser General Public License as published by
9
# the Free Software Foundation, either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# sas_robot_driver_coppeliasim is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU Lesser General Public License for more details.
16
#
17
# You should have received a copy of the GNU Lesser General Public License
18
# along with sas_robot_driver_coppeliasim. If not, see <https://www.gnu.org/licenses/>.
19
#
20
# ################################################################
21
#
22
# Author: Murilo M. Marinho, email: murilomarinho@ieee.org
23
# Based on `sas` ros composer.
24
#
25
# ################################################################*/
26
31
32
#include <atomic>
33
#include <memory>
34
35
#include <
sas_core/sas_robot_driver.hpp
>
36
37
#include <dqrobotics/interfaces/coppeliasim/DQ_CoppeliaSimInterfaceZMQ.h>
38
39
using namespace
Eigen;
40
41
namespace
sas
42
{
43
47
struct
RobotDriverCoppeliaSimConfiguration
48
{
49
int
port
;
50
std::string
ip
;
51
int
timeout
= 1000;
52
std::vector<std::string>
robot_joint_names
;
53
};
54
58
class
RobotDriverCoppeliaSim:
public
RobotDriver
59
{
60
private
:
61
RobotDriverCoppeliaSimConfiguration
configuration_;
62
VectorXd joint_positions_;
63
std::shared_ptr<DQ_CoppeliaSimInterfaceZMQ> csi_;
64
65
public
:
66
67
// Prevent copies as usually drivers have threads
68
RobotDriverCoppeliaSim(
const
RobotDriverCoppeliaSim&)=
delete
;
69
RobotDriverCoppeliaSim()=
delete
;
70
~RobotDriverCoppeliaSim();
71
77
RobotDriverCoppeliaSim(
const
RobotDriverCoppeliaSimConfiguration
&configuration, std::atomic_bool* break_loops);
78
83
VectorXd
get_joint_positions
()
override
;
84
89
void
set_target_joint_positions
(
const
VectorXd& desired_joint_positions_rad)
override
;
90
95
std::tuple<VectorXd, VectorXd>
get_joint_limits
()
override
;
96
100
void
connect
()
override
;
101
105
void
disconnect
()
override
;
106
110
void
initialize
()
override
;
111
115
void
deinitialize
()
override
;
116
117
};
118
}
sas::RobotDriverCoppeliaSim::get_joint_positions
VectorXd get_joint_positions() override
Returns current joint positions in radians.
Definition
sas_robot_driver_coppeliasim.cpp:59
sas::RobotDriverCoppeliaSim::deinitialize
void deinitialize() override
Deinitializes the driver state.
Definition
sas_robot_driver_coppeliasim.cpp:103
sas::RobotDriverCoppeliaSim::set_target_joint_positions
void set_target_joint_positions(const VectorXd &desired_joint_positions_rad) override
Sets joint positions and target joint positions.
Definition
sas_robot_driver_coppeliasim.cpp:68
sas::RobotDriverCoppeliaSim::connect
void connect() override
Connects to the CoppeliaSim instance.
Definition
sas_robot_driver_coppeliasim.cpp:79
sas::RobotDriverCoppeliaSim::disconnect
void disconnect() override
Disconnects from the CoppeliaSim instance.
Definition
sas_robot_driver_coppeliasim.cpp:111
sas::RobotDriverCoppeliaSim::initialize
void initialize() override
Initializes the driver state.
Definition
sas_robot_driver_coppeliasim.cpp:95
sas::RobotDriverCoppeliaSim::get_joint_limits
std::tuple< VectorXd, VectorXd > get_joint_limits() override
Returns joint position limits.
Definition
sas_robot_driver_coppeliasim.cpp:124
sas_robot_driver.hpp
Abstract RobotDriver interface and watchdog support.
sas::RobotDriverCoppeliaSimConfiguration
Configuration for RobotDriverCoppeliaSim.
Definition
sas_robot_driver_coppeliasim.hpp:48
sas::RobotDriverCoppeliaSimConfiguration::port
int port
ZMQ port number.
Definition
sas_robot_driver_coppeliasim.hpp:49
sas::RobotDriverCoppeliaSimConfiguration::ip
std::string ip
CoppeliaSim IP address.
Definition
sas_robot_driver_coppeliasim.hpp:50
sas::RobotDriverCoppeliaSimConfiguration::robot_joint_names
std::vector< std::string > robot_joint_names
Names of the joints to control.
Definition
sas_robot_driver_coppeliasim.hpp:52
sas::RobotDriverCoppeliaSimConfiguration::timeout
int timeout
Connection timeout in milliseconds.
Definition
sas_robot_driver_coppeliasim.hpp:51
src
sas_robot_driver_coppeliasim
include
sas_robot_driver_coppeliasim
sas_robot_driver_coppeliasim.hpp
Generated by
1.17.0