ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
2015-01-27 23:24:23 -0500 | received badge | ● Great Answer (source) |
2015-01-27 23:24:23 -0500 | received badge | ● Guru (source) |
2012-12-17 07:35:39 -0500 | received badge | ● Guru (source) |
2012-12-17 07:35:39 -0500 | received badge | ● Great Answer (source) |
2012-09-12 02:22:53 -0500 | received badge | ● Good Answer (source) |
2012-08-30 08:31:50 -0500 | received badge | ● Good Answer (source) |
2012-04-26 05:47:01 -0500 | received badge | ● Nice Answer (source) |
2012-03-06 09:12:56 -0500 | commented question | Gazebo pose controller for teleoperation Hi Robert. None of these controllers will work with floating joints. I'm not sure how to do what you'd like to do, but hopefully someone else will. |
2012-02-28 11:28:09 -0500 | received badge | ● Civic Duty (source) |
2012-02-15 09:38:13 -0500 | commented answer | Gazebo and transmissions: mechanicalReduction and motorTorqueConstant The controller commands effort on the the joint, and the transmission translates them into effort on the actuator. |
2012-02-14 13:24:55 -0500 | commented question | problems with a simple realtime joint controller in Gazebo Is this joint connected to any actuators? |
2012-02-14 13:18:27 -0500 | answered a question | Continuous Joints Rotation Problem (PR2, JointTrajectoryAction) Given two consecutive joint angles a and b, if b > a, the controller will move in the positive direction, and if b < a it will move in the negative direction. It does not normalize the angles, nor does it choose the shorter angular distance to travel. This interpretation allows you to command trajectories that move joints through more than 180 degrees, which would be impossible if the controller normalized angles or picked the direction implicitly. To get the behavior you want, you should "denormalize" the joint angles of your trajectory before sending it to the controller. |
2012-02-14 13:07:11 -0500 | commented answer | Gazebo and transmissions: mechanicalReduction and motorTorqueConstant The controllers apply effort to the joints. |
2012-02-13 20:55:51 -0500 | received badge | ● Good Answer (source) |
2012-02-13 20:33:50 -0500 | received badge | ● Nice Answer (source) |
2012-02-13 09:10:42 -0500 | answered a question | Gazebo and transmissions: mechanicalReduction and motorTorqueConstant The transmissions transform state from actuator space to joint space (and efforts from joint space to actuator space). The robot is simulated in joint space, so in simulation, the efforts are immediately transformed back into joint space (and the state is first transformed from joint space), as shown in this diagram. In simulation, the |
2012-02-13 09:04:52 -0500 | received badge | ● Commentator |
2012-02-13 09:04:52 -0500 | commented question | Continuous Joints Rotation Problem (PR2, JointTrajectoryAction) For #1, does this happen for the first point in your trajectory, or only for intermediate points? |
2012-01-19 04:20:29 -0500 | commented question | Any experience about difference between controller design in ROS and Matlab Without seeing your code, it's hard to say what's wrong. |
2012-01-03 05:01:02 -0500 | answered a question | where is mm_teleop package? Hi sam, The mm_teleop package does not already exist--it is the package that you create and place the Python scripts into. (Of course, you can call it anything you want). |
2011-09-01 04:10:33 -0500 | received badge | ● Nice Answer (source) |
2011-07-21 07:56:02 -0500 | commented question | ROS real time rosrt troubleshooting? Could you post some code that reproduces the problem? That would be helpful. |
2011-07-21 07:49:46 -0500 | answered a question | How to rearrange rxgraph's position of node? I don't think rxgraph allows you to move nodes around (though that would be a welcome contribution). If you can't see all the nodes, you can left-click and drag the window around to pan and use the mouse scroll wheel to zoom. |
2011-07-14 13:02:32 -0500 | commented answer | interactive launch Note: I just fixed anonymous checkouts. Just run `hg clone https://kforge.ros.org/rxlaunch/hg rxlaunch` to get the code |
2011-07-14 12:47:21 -0500 | commented answer | interactive launch Thanks for the feature request--I'll put it on my list |
2011-07-14 12:32:57 -0500 | received badge | ● Good Answer (source) |
2011-07-14 10:32:56 -0500 | answered a question | bag a kinect for more than 30 seconds Recording the point cloud from the Kinect requires more bandwidth than your average hard drive provides. The Kinect produces an XYZRGB point cloud with around 300k points, where each point takes 32 bytes. At 30Hz, that produces about 281 Mb / second. Your average hard disk only supports 100-200 Mb/sec, so the Kinect point cloud just cannot be written quickly enough. Ivan's solution is correct: You should write the raw disparity and rgb images to disk and only expand them to point clouds during playback. |
2011-07-14 09:24:11 -0500 | received badge | ● Nice Answer (source) |
2011-07-14 08:37:04 -0500 | answered a question | interactive launch Hi Dimitar, I just started on something called rxlaunch, which does exactly that. It's still in active development, but may already be useful to you. You can get rxlaunch from its kforge page. Just checkout the mercurial repository and run Some things that don't work yet (2011-07-14):
When things go wrong, just file a ticket. |
2011-06-17 12:09:52 -0500 | received badge | ● Good Answer (source) |
2011-06-13 07:57:35 -0500 | commented question | How to send actuators commands to hardware controller? Could you clarify what robot you're running on? Is it a PR2, a PR2 in simulation, or a different robot? |
2011-06-13 07:54:31 -0500 | commented answer | Build a controller for an arm (no PR2) Hi Klaus. The hardware drivers transmit the ActuatorCommand to the hardware. For the PR2, check out the ethercat_hardware and pr2_etherCAT packages. |
2011-06-07 00:07:54 -0500 | received badge | ● Good Answer (source) |
2011-06-02 19:49:36 -0500 | received badge | ● Nice Answer (source) |
2011-06-02 13:31:19 -0500 | received badge | ● Nice Answer (source) |
2011-06-02 13:17:57 -0500 | received badge | ● Critic (source) |
2011-06-02 13:06:57 -0500 | answered a question | design question related to timing issues and number of nodes Hi Brice, You've described two extremes of designing ROS systems: break it into tiny pieces with many communication channels, or pack everything into one monolithic process. I can't give you the right answer; it depends on your specific needs and without experimenting there are too many unanswered questions. However, I will try to give some suggestions for designing the system you've described. You asked how quickly ROS can run. I have seen ROS pass messages reliably at 1kHz, however, as the system load increases and the connection quality drops, ROS will start to drop messages. I would suggest combining the PID controller, the encoder reader, and the voltage writer into a single process. A PID controller can be sensitive to running at an inconsistent frequency, and there isn't a straightforward solution to dealing with dropped messages. The design does get trickier when you are controlling a full arm. If you are writing an aggressive controller that is very sensitive to perturbations in timing, then you should keep it in a single process. Dropped messages will cause intermittent problems with your controller, and it will be difficult to determine if the issue is dropped messages or a bug in your controller. If your full arm controller is "simpler", then you can put it in a separate node. Communicating over ROS will give you a few benefits. The commands from the controller are easier to view or plot in realtime. It's easier to change to a different full arm controller without taking down the PID controllers running the motors. If your controller crashes, then it will only take down its own process. By communicating over ROS you gain introspection, flexibility, and better error diagnostics. For your full arm control and inverse kinematics, I would suggest first separating the components into separate nodes, and then combining them into a single process if there are any issues. Best of luck with your system |
2011-06-02 12:36:21 -0500 | answered a question | why pr2-controllers use a shared pointer + realtimebox ? Hi Guido, Some uses of The documentation for shared pointers describes which operations are thread safe:
These are the two things you can do with a shared pointer: access it without changing it and modify separate shared pointer instances simultaneously. The realtime box solves a third use case: passing an instance of a shared pointer from one thread to another. Consider the following scenario. Two threads share a global shared pointer named === Thread A ptr.reset(new Object); === Thread B my_ptr = ptr; This is not guaranteed to be thread safe because shared pointer assignment is not atomic. The assignment to If you're still doubtful, here is a stackoverflow question with a similar example. |
2011-05-03 20:15:34 -0500 | received badge | ● Nice Answer (source) |
2011-05-02 05:53:59 -0500 | received badge | ● Guru (source) |
2011-05-02 05:53:59 -0500 | received badge | ● Great Answer (source) |
2011-04-28 07:15:00 -0500 | answered a question | Why realtime loop could die ? Hi Guido, If your controller crashes, the entire realtime loop will die. In the PR2 controller manager, all controllers are run in the same process, so if one crashes, the entire process crashes. Try attaching gdb before loading your controller (you will probably need to run it as root). |
2011-04-04 16:19:44 -0500 | commented answer | reload recompiled controller src with kill and spawn command The current system cannot reload only a single controller. It must reload all of them. |
2011-03-28 14:38:32 -0500 | commented answer | reload recompiled controller src with kill and spawn command reload-libraries reloads ALL controllers. |