Page 1 of 10 12345 ... LastLast
Results 1 to 10 of 93

Thread: ArbotiX ROS Stack 0.4.0

  1. #1
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    125

    ArbotiX ROS Stack 0.4.0

    0.4.0 is out! This is a major update as we refine the API, looking towards an 1.0 release. There are some major changes, outlined below:

    • The "arbotix" package is now a stack -- the package with the python drivers is "arbotix_python".
    • The driver does sync_write -- this really speeds things up. A number of internal changes also speed things up -- you must update your firmware.
    • The joint_state publication now includes a computed velocity
    • Each servo now has a <servo>/command topic, of type Float64, which specifies the position to move the servo to.
    • The arbotix_controllers package includes joint_controller.py and traj_controller.py which take JointState messages, and JointTrajectory messages, and turn them into individual command topics. See http://ros.org/wiki/arbotix_controllers for parameters and details. Please note, there is not yet speed interpolation in either of these controllers -- I recommend setting a low max_speed for each servo in your YAML, which will interpolate and limit speed at the driver level. A release will fix this shortly. IF USING CTURTLE, YOU NEED TO INSTALL TRAJECTORY_MSG -- IN DIAMONDBACK/UNSTABLE, IT IS COMMON_MSGS.
    • We have a whole new analog/digital subsystem, based on setting up individual streams. The old service-oriented architecture is gone. Streams can be started either in the YAML, or via a service call. See http://ros.org/wiki/arbotix_python/io
    • The arbotix_sensors package includes an ir_ranger.py program which will start an analog stream and then subscribe and republish range messages. THIS REQUIRES THE DIAMONDBACK/UNSTABLE VERSION OF SENSOR_MSGS PACAKGE.

    How to update your Launch/YAMLs from 0.3.x:

    • Replace all pkg="arbotix" with pkg="arbotix_python"
    • Replace all type="arbotix-node.py" with type="driver.py"
    • If you previously set a rate parameter, rename this read_rate
    • The default baud is now 115200, if you want to still use 38400 (recommended for wireless connections), be sure to add a baud parameter to your yaml or launch file.
    • If you still want to use "cmdJoints" topic with joint_states, you'll need to spin up a joint_controller.py in your launch file (there is no longer a joint_controller in the arbotix driver):
      <node name="head_joint_controller" pkg="arbotix_controllers" type="joint_controller.py">
      <rosparam param="joints">[head_pan_joint, head_tilt_joint]</rosparam>
      </node>
    • If using a base controller, you have to modify your parameters as there is no longer a controllers collection. This:
      controllers: {
      bc: {type: base_controller, base_width: 0.2, ticks_meter: 500}
      }

      would be come this:
      base: {base_width: 0.2, ticks_meter: 500}
    • Same for PML, this:
      sensors: {
      pml: {type: pml, servo_id: 1}
      }

      becomes this:
      pml: {servo_id: 1}
    • Analog/Digital has completely changed -- see the wiki page (which I'm still updating): http://ros.org/wiki/arbotix_python/io

    This is still an 0.4.0 release, so there may be bugs -- please report any issues. I'm expecting to be rapidly cranking out releases over the next week or two. I've been using this pretty extensively on Maxwell, and also on a test robot on my desktop -- so the base_controller is well tested. Analog/Digital have been pretty well tested. I briefly tested PML, and still need to do further testing on the hobby servo control.

    You can checkout the code using:
    svn co http://vanadium-ros-pkg.googlecode.c.../arbotix/0.4.0 arbotix

    -Fergs
    Last edited by lnxfergy; 02-15-2011 at 08:46 PM.

  2. #2
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    48

    Re: ArbotiX ROS Stack 0.4.0

    Congrats Fergs! And here I am stuck at work without an ArbotiX to try it out on. Can't wait to fire it up this weekend. Will report back how it goes.

    BTW, you no doubt already know about this, but the UA stack has sample action controllers written in Python at:

    http://ua-ros-pkg.googlecode.com/svn...actions/nodes/

    Thought it might be a good place to start unless you are already cooking up your own.

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  3. #3

    Re: ArbotiX ROS Stack 0.4.0

    Hi Fergs
    The "arbotix" package is now a stack -- the package with the python drivers is "arbotix_python".
    What is the difference between stack and package? and dose this change the way its installed?


    peter

  4. #4
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    125

    Re: ArbotiX ROS Stack 0.4.0

    Quote Originally Posted by Peter_heim View Post
    Hi Fergs

    What is the difference between stack and package? and dose this change the way its installed?

    peter
    The main consideration here is that stacks are versioned, and are the standard unit of release. By doing this, the arbotix stack is now standalone and able to be versioned independently of any of our other drivers.

    The second reasoning behind the name changes is to delineate "arbotix_python" as the python version of the arbotix drivers. There may in the future be an arbotix_cpp alternative....

    Installation-wise, it mainly means that we install from tags/arbotix instead of tags/vanadium_drivers. For the most part, the changes are in how your launch files are setup as I've majorly cleaned up a number of the interfaces -- and also reduced the number of threads in the program (which really improves reliability).

    -Fergs

  5. #5
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    125

    Re: ArbotiX ROS Stack 0.4.1

    And, we've already got an 0.4.1 release. I found a very serious bug in the interpolation code that broke "inverted" outputs. Updates for this release include:

    • [arbotix_controllers] add interpolation to trajectory and joint controllers.
    • [arbotix_python] add support for diagnostic_msgs output.
    • [arbotix_python] fix grave bug in interpolation.

    I'll be documenting the preliminary support for diagnostics in a day or so. Basically, this allows you to use the robot_monitor GUI to see temperatures/voltages of each servo, and also see the encoder values. I'll be adding more debugging/logging info to this over time.

    -Fergs
    Last edited by lnxfergy; 02-13-2011 at 11:33 PM.

  6. #6
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    48

    Re: ArbotiX ROS Stack 0.4.0

    Hey Fergs,

    I finally have a few moments to dive into 0.4.1. One small thing I ran into is I think the code:

    Quote Originally Posted by lnxfergy View Post

    • <node name="head_joint_controller" pkg="arbotix_controllers" type="joint_controller.py">
      <rosparam name="joints">[head_pan_joint, head_tilt_joint]</rosparam>
      </node>
    Needs to be:
    Code:
    <node name="head_joint_controller" pkg="arbotix_controllers" type="joint_controller.py">
        <rosparam param="joints">[head_pan_joint, head_tilt_joint]</rosparam>
    </node>
    the only change being the use of the "param" keyword instead of "name" in the <rosparam...> line.

    With this in place, I can bring up driver.py and joint_controller.py without error. Next, I thought I would be able to move the head pan servo with a command like:

    Code:
    rostopic pub /head_pan_joint/command std_msgs/Float64 1.0
    but the servo does not move. Should it? I am assuming the argument is in radians but I tried it with higher values in case it is degrees or servo ticks.

    Thanks!
    patrick
    The Pi Robot Project
    http://www.pirobot.org

  7. #7
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    125

    Re: ArbotiX ROS Stack 0.4.0

    Quote Originally Posted by Pi Robot View Post
    Hey Fergs,

    With this in place, I can bring up driver.py and joint_controller.py without error. Next, I thought I would be able to move the head pan servo with a command like:

    Code:
    rostopic pub /head_pan_joint/command std_msgs/Float64 1.0
    but the servo does not move. Should it? I am assuming the argument is in radians but I tried it with higher values in case it is degrees or servo ticks.

    Thanks!
    patrick
    Ok, I updated my first post, thanks for catching that.

    The command is indeed in radians -- and publishing to that should move it. The controllerGUI has been updated to control directly on the command topics, could you try if that works?

    -Fergs

  8. #8
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    48

    Re: ArbotiX ROS Stack 0.4.0

    OK, controllerGUI.py is definitely publishing to the command topics as I can verify using "rostopic echo" but the servos don't move and there are no errors in rxconsole. Perhaps there is something wrong with my YAML file which is:

    Code:
    port: /dev/ttyUSB0
    baud: 57600
    read_rate: 5
    use_sync: True
    
    dynamixels: {
        head_pan_joint: {id: 1, max_speed: 360, min_angle: -145, max_angle: 145, invert: True},
        head_tilt_joint: {id: 2, max_speed: 360, min_angle: -60, max_angle: 90, invert: False},
        right_shoulder_pan_joint: {id: 3, max_speed: 360, min_angle: -90, max_angle: 90, invert: False},
        right_shoulder_lift_joint: {id: 4, max_speed: 360, min_angle: -90, max_angle: 90, invert: False, neutral: 512},
        right_arm_roll_joint: {id: 5, max_speed: 360, min_angle: -90, max_angle: 90, invert: False},
        right_elbow_joint: {id: 13, max_speed: 360, min_angle: -90, max_angle: 90, invert: True},
        right_wrist_joint: {id: 6, max_speed: 360, min_angle: -90, max_angle: 90, invert: True},
        left_shoulder_pan_joint: {id: 7, max_speed: 360, min_angle: -90, max_angle: 90, invert: False},
        left_shoulder_lift_joint: {id: 8, max_speed: 360, min_angle: -90, max_angle: 90, invert: False, neutral: 512},
        left_arm_roll_joint: {id: 9, max_speed: 360, min_angle: -90, max_angle: 90, invert: False},
        left_elbow_joint: {id: 12, max_speed: 360, min_angle: -90, max_angle: 90, invert: True},
        left_wrist_joint: {id: 10, max_speed: 360, min_angle: -90, max_angle: 90, invert: True},
        torso_joint: {id: 11, max_speed: 360, min_angle: -120, max_angle: 120, invert: False}
    }
    (I have my ArbotiX set to 57600 baud.) And my launch file is:

    Code:
    <launch>
        <node name="arbotix" pkg="arbotix_python" type="driver.py" output="screen">
            <rosparam file="$(find pi_robot)/params/arbotix_params.yaml" command="load" />
        </node>
        <node name="arbotix_joint_controller" pkg="arbotix_controllers" type="joint_controller.py" output="screen">
            <rosparam param="joints">[head_pan_joint, head_tilt_joint, right_shoulder_pan_joint, right_shoulder_lift_joint, right_arm_roll_joint, right_wrist_joint, left_shoulder_pan_joint, left_shoulder_lift_joint, left_arm_roll_joint, left_wrist_joint, torso_joint, left_elbow_joint, right_elbow_joint]</rosparam>
        </node>
    </launch>
    Note that doing a "rostopic echo /joint_states" *does* show the servo positions updating when I move them by hand. So the reading part seems to be OK.

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  9. #9
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    125

    Re: ArbotiX ROS Stack 0.4.0

    Did you update your firmware? You'll need updated firmware for sync_write support (i'm going to add that to my first post.... total oversight to point out the need for firmware update).

    -Fergs

  10. #10
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    48

    Re: ArbotiX ROS Stack 0.4.0

    Ha! I was just about to ask that. (Great minds forget alike. ) I tried it with use_sync: False but that didn't do it so I'm guessing sync write is now the only option? (Not that that isn't a good thing.)

    I have go off to a $&#@# meeting but I'll do the firmware update tomorrow morning and report back.

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. ArbotiX-ROS Roadmap
    By lnxfergy in forum ROS - Robot Operating System
    Replies: 10
    Last Post: 02-10-2011, 10:50 AM
  2. ArbotiX ROS Package 0.3.0
    By lnxfergy in forum ROS - Robot Operating System
    Replies: 233
    Last Post: 02-06-2011, 11:36 AM
  3. Status of ArbotiX ROS Package 0.5.0?
    By Pi Robot in forum ROS - Robot Operating System
    Replies: 4
    Last Post: 12-14-2010, 12:29 PM
  4. ArbotiX ROS Package 0.2.0
    By lnxfergy in forum ROS - Robot Operating System
    Replies: 104
    Last Post: 10-14-2010, 09:47 AM
  5. Issy3 (Powered by ROS)
    By lnxfergy in forum ROS - Robot Operating System
    Replies: 30
    Last Post: 07-16-2010, 08:49 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •