libkindrv 0.1
Loading...
Searching...
No Matches
kindrv.h
1
2/***************************************************************************
3 * kindrv.h - KinDrv main header file for arm control
4 *
5 * Created: Fri Oct 11 00:31:00 2013
6 * Copyright 2013 Bahram Maleki-Fard
7 * Copyright 2014 Tekin Mericli
8 ****************************************************************************/
9
10/* This file is part of libkindrv.
11 *
12 * libkindrv is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser Public License as published by
14 * the Free Software Foundation, either version 3 of the License, or
15 * (at your option) any later version.
16 *
17 * Foobar is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU Lesser Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser Public License
23 * along with libkindrv. If not, see <http://www.gnu.org/licenses/>.
24 */
25
26#ifndef _KINDRV_H
27#define _KINDRV_H
28
29#include "types.h"
30#include "exception.h"
31
32#include <boost/thread/mutex.hpp>
33
34struct libusb_device;
35struct libusb_device_handle;
36
37namespace KinDrv {
38
39// internally used struct (see kindrv.cpp for details)
40typedef struct usb_device_struct usb_device_t;
41
42// just to allow using them explicitly. The API will use them implicitly if necessary
43error_t init_usb();
44void close_usb();
45
46void list_devices();
47
50{
51 public:
52 JacoArm();
53 virtual ~JacoArm();
54
55 // controlling the arm via API (instead of connected joystick)
56 void start_api_ctrl();
57 void stop_api_ctrl();
58
59 // start/stop force control / compliance mode
60 void start_force_ctrl();
61 void stop_force_ctrl();
62
63 // getter; receiving commands
66
75
76 jaco_client_config_t get_client_config(bool refresh=true);
77 jaco_retract_mode_t get_status();
78
79 // setter; sending basic commands
80 void set_control_ang();
81 void set_control_cart();
82 void erase_trajectories();
83
84 // joystick functionaliy
85 void push_joystick_button(unsigned short id);
86 void push_joystick_button(jaco_joystick_button_t &buttons);
88 void move_joystick(jaco_joystick_t &state);
89 void release_joystick();
90
91 // arm movement
93 void set_target_cart(float x, float y, float z, float euler_1, float euler_2, float euler_3, float finger_1, float finger_2, float finger_3);
94 void set_target_cart(float coord[], float fingers[]);
95 void set_target_ang(float j1, float j2, float j3, float j4, float j5, float j6, float finger_1, float finger_2, float finger_3);
96 void set_target_ang(float joints[], float fingers[]);
97
98 private:
99 void Create(usb_device_t &dev);
100 void _flush();
101
102 libusb_device_handle *__devh;
103 boost::mutex __lock;
104
105 jaco_client_config_t __client_config;
106
107 inline void _usb_header(usb_packet_t &p, unsigned short pid, unsigned short pquant, unsigned short cmdid, unsigned short cmdsize);
108 inline int _usb_in(usb_packet_t &p, int &transferred);
109 inline int _usb_out(usb_packet_t &p, int &transferred);
110
111 // generic USB data transfer methods
112 error_t _cmd_out_in(usb_packet_t &p);
113 error_t _cmd_out(short cmdid);
114
115 // Jaco specific commands
116 error_t _get_cart_pos(jaco_position_t &pos);
117 error_t _get_ang_pos(jaco_position_t &pos);
118
119 error_t _get_ang_command(jaco_position_t &pos);
120 error_t _get_cart_command(jaco_position_t &pos);
121 error_t _get_ang_vel(jaco_position_t &pos);
122 error_t _get_cart_force(jaco_position_t &pos);
123 error_t _get_ang_force(jaco_position_t &pos);
124 error_t _get_ang_current(jaco_position_t &pos);
125 error_t _get_ang_current_motor(jaco_position_t &pos);
126 error_t _get_sensor_info(jaco_sensor_info_t &info);
127
128 error_t _update_client_config();
129
130 error_t _send_basic_traj(jaco_basic_traj_point_t &traj);
131
132
133};
134
135} // end namespace KinDrv
136#endif
Main JacoArm class. All communication is done via an instance of this.
Definition: kindrv.h:50
void push_joystick_button(unsigned short id)
Definition: kindrv.cpp:1048
jaco_position_t get_ang_command()
Definition: kindrv.cpp:893
void start_api_ctrl()
Definition: kindrv.cpp:756
void set_target_cart(float x, float y, float z, float euler_1, float euler_2, float euler_3, float finger_1, float finger_2, float finger_3)
Definition: kindrv.cpp:1176
void erase_trajectories()
Definition: kindrv.cpp:829
jaco_position_t get_cart_command()
Definition: kindrv.cpp:909
jaco_position_t get_ang_current()
Definition: kindrv.cpp:957
jaco_sensor_info_t get_sensor_info()
Definition: kindrv.cpp:989
jaco_position_t get_ang_current_motor()
Definition: kindrv.cpp:973
void set_target(jaco_basic_traj_point_t &traj)
Definition: kindrv.cpp:1123
jaco_client_config_t get_client_config(bool refresh=true)
Definition: kindrv.cpp:1008
void set_target_ang(float j1, float j2, float j3, float j4, float j5, float j6, float finger_1, float finger_2, float finger_3)
Definition: kindrv.cpp:1207
JacoArm()
Definition: kindrv.cpp:392
void start_force_ctrl()
Definition: kindrv.cpp:784
jaco_position_t get_cart_pos()
Definition: kindrv.cpp:845
jaco_position_t get_ang_pos()
Definition: kindrv.cpp:861
virtual ~JacoArm()
Definition: kindrv.cpp:448
void stop_force_ctrl()
Definition: kindrv.cpp:796
jaco_position_t get_ang_force()
Definition: kindrv.cpp:941
void move_joystick(jaco_joystick_t &state)
Definition: kindrv.cpp:1093
void set_control_ang()
Definition: kindrv.cpp:807
void stop_api_ctrl()
Definition: kindrv.cpp:772
void set_control_cart()
Definition: kindrv.cpp:818
jaco_retract_mode_t get_status()
Definition: kindrv.cpp:1024
jaco_position_t get_ang_vel()
Definition: kindrv.cpp:877
void release_joystick()
Definition: kindrv.cpp:1109
void move_joystick_axis(jaco_joystick_axis_t &axes)
Definition: kindrv.cpp:1080
jaco_position_t get_cart_force()
Definition: kindrv.cpp:925
Basic trajectory struct.
Definition: types.h:93
Struct containing the client information and configuration.
Definition: types.h:145
Struct for joystick axis movement. Make sure to initialze with 0s!
Definition: types.h:104
Each joystick action (button,axis) as a whole is represented by one of this struct....
Definition: types.h:119
Jaco universal position struct.
Definition: types.h:81
Struct that holds values of various sensors of the robot.
Definition: types.h:125
Definition: kindrv.cpp:74
USB packet struct. All USB I/O is one of this.
Definition: types.h:200