https://github.com/advrhumanoids/rtt_coman
This package implements an orocos component for communicating with the COMAN through the Robolli library. The component is used to serve status/command data. You can compile it for linux or xenomai targets if you want 1Khz hard-realtime ccontrol. – README.md
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.5%) to scientific vocabulary
Repository
This package implements an orocos component for communicating with the COMAN through the Robolli library. The component is used to serve status/command data. You can compile it for linux or xenomai targets if you want 1Khz hard-realtime ccontrol. – README.md
Basic Info
Statistics
- Stars: 2
- Watchers: 21
- Forks: 1
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
rtt_coman
This package implements an OROCOS component for communicating with the COMAN Robot through the Robolli library (IMPORTANT: libyaml 0.5.1-1 compatible ONLY!).
How it works:
The rtt_coman permits to read/write data to the DSPs boards from the OROCOS framework. Robolli is the intermediary between
OROCOS and the DSPs: it basically open a thread that buffers DSPs written/read data.
How to use it:
Firs of all turn on COMAN and connect through the ethernet paying attention that the eth_iface in config/config.yaml
corresponds to the interface that you are using to connect to COMAN. If not change the config.yaml file (you can
check the interface typing ifconfig in your terminal and looking at the ethernet card name).
Now you can run one of the OROCOS script, inside the orocos_script folder to start the rtt_coman component.
The script is very simple:
- In the first part we import OROCOS components and libraries:
import("eigen_typekit")
import("kdl_typekit")
import("rst-rt_typekit")
import("rtt_rsbcomm")
import("rtt_coman")
require("os")
- Then we load the rtt_component and we set its activity:
``` loadComponent("coman","cogimon::rtt_coman")
setActivity("coman",0.001,10,OROSCHEDOTHER)
for example to 1kHz at the priority of 10.
- We need to load the config YAML file and the model files (URDF and SRDF), then we call theconfigure()```. Note that these functions have to be called
in this order, if not the component will not start.
``` var string YAMLpath = os.getenv("ROBOTOLOGYROOT") + "/robots/rttcoman/config/config.yaml" coman.loadYAML(YAMLpath)
var string urdfpath = os.getenv("ROBOTOLOGYROOT") + "/robots/cogimon-gazebo-models/iit-coman/model.urdf" var string srdfpath = os.getenv("ROBOTOLOGYROOT") + "/robots/cogimon-gazebo-models/iit-coman/coman.srdf" coman.loadURDFAndSRDF(urdfpath, srdfpath)
coman.configure()
- If needed is possible to set joint offsets and force/torque sensors measurement direction for the model, these operations has to be done before calling thestart()```:
``` var double MPI = 3.14159265359; coman.setOffSet("LShLat", 90.0*MPI/180.0) coman.setOffSet("RShLat", -90.0*M_PI/180.0)
var ints direction = ints(-1, -1, 1, -1, 1 ,1) coman.setForceTorqueMeasurementDirection("rarmft", direction) ``` - Finally we start the component:
coman.start()
To stop the component just call the operation .stop(), this will stop the motor control in the control boards.
Available Operations:
- getAvailableControlMode("chain_name") return a vector of strings with the available control modes for that kinematic chain
- getControlMode("chain_name") return a string with the actual running control mode for that kinematic chain
- getKinematicChains() return a vector of strings with the name of the kinematic chain for the robot
- getKinematicChainsAndJoints() return a map between kinematic chain names and joint names (oredered)
- loadYAML("yaml_path") load a
config.yamlfile - loadURDFAndSRDF("urdfpath, srdfpath") load
robot.urdfandrobot.srdffiles - printKinematicChainInformation("kinematic_chains") prints to terminal some information related to kinematic chain
- setPID("kinematic_chains", P, I, D) set PID values for position Ctrl for a particular kinematic chain
- setOffSet("joint_name", rad) set position offset to a certain joint
- getForceTorqueSensorsFrames() get force/torque sensors frames
- setForceTorqueMeasurementDirection("forcetorquesensor", vectorofsigns) set force/torque sensors measurements signs
Input Ports:
The following set of ports is generated for each kinematic chain of the robot - kinematicchainJointImpedanceCtrl set joints stiffness and damping for the impedance control - kinematicchainJointPositionCtrl set joints position for position control and impedance control - kinematicchainJointPositionCtrl_VoltageOffset set joints voltage offset for position control - kinematicchainJointTorqueCtrl set joints torque for torque control
Output Ports:
The following port is generated for each kinematic chain of the robot - kinematicchainJointFeedback joints position, velocity and torque feedback - nameftSensorFeedback force/torque sensor feedback
NOTE:
Available controllers are (for now):
- Position Ctrl
- Voltage Ctrl obtained setting the Position Ctrol mode, setting to 0 all the PIDs and sending values in the kinematic_chain_JointPositionCtrl_VoltageOffset port
- Impedance Ctrl implemented at the DSPs level as:
- Torque Ctrl
It is important to notice that the component allows to switch between controllers in the following way - from Position Ctrl to Impedance Ctrl and Torque Ctrl but NOT vice versa - from Voltage Ctrl to Impedance Ctrl and Torque Ctrl but NOT vice versa - from Position Ctrl to Voltage Ctrl and vice versa - from Impedance Ctrl to Torque Ctrl and vice versa
Owner
- Name: ADVR Humanoids
- Login: ADVRHumanoids
- Kind: organization
- Email: luca.muratore@iit.it
- Location: Istituto Italiano di Tecnologia
- Website: https://www.iit.it/lines/humanoids-human-centered-mechatronics
- Repositories: 206
- Profile: https://github.com/ADVRHumanoids
Humanoids & Human Centered Mechatronics, HHCM, IIT
GitHub Events
Total
Last Year
Issues and Pull Requests
Last synced: about 1 year ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0